1 /* Generated by CIL v. 1.3.6 */
   2 /* print_CIL_Input is true */
   3 
   4 typedef unsigned int size_t;
   5 typedef unsigned long pthread_t;
   6 struct _check {
   7    unsigned char failed ;
   8    unsigned char passed ;
   9    unsigned char error_code ;
  10    char *helo ;
  11    char *mail_from ;
  12    char *rcpt_to ;
  13    char *r_banner ;
  14    char *r_helo ;
  15    char *r_mail_from ;
  16    char *r_rcpt_to ;
  17    char *r_data_start ;
  18    char *r_data_end ;
  19    char *r_reset ;
  20 };
  21 typedef struct _check check;
  22 struct _host {
  23    unsigned char smtp_open ;
  24    unsigned char resolved ;
  25    unsigned char fatal_error ;
  26    unsigned char fatal ;
  27    char *ip_address ;
  28    char *hostname ;
  29    char *r_quit ;
  30    check **smtp_check ;
  31 };
  32 typedef struct _host host;
  33 struct _rule {
  34    char *helo ;
  35    char *mail_from ;
  36    char *rcpt_to ;
  37 };
  38 typedef struct _rule rule;
  39 struct options {
  40    unsigned int time ;
  41    unsigned short number_of_threads ;
  42    unsigned short c_timeout ;
  43    unsigned short r_timeout ;
  44    unsigned short m_timeout ;
  45    unsigned short cur_threads ;
  46    unsigned short no_rules ;
  47    unsigned long no_hostnames ;
  48    unsigned long cur_host ;
  49    pthread_t *tid ;
  50    char *email_address ;
  51    char *ip_range ;
  52    char *ip_list ;
  53    char *mailbox ;
  54    char *auto_config_file ;
  55    char *generate_file ;
  56    char *config_file ;
  57    char *email_template ;
  58    char *name ;
  59    char *domain ;
  60    char *html_file ;
  61    char *html_path ;
  62    char *xml_file ;
  63    char *xml_path ;
  64    char *machine_file ;
  65    char *machine_path ;
  66    char *text_file ;
  67    char *text_path ;
  68    char *email ;
  69    char *email_subject ;
  70    unsigned char hours ;
  71    unsigned char mins ;
  72    unsigned char seconds ;
  73 };
  74 typedef long long __quad_t;
  75 typedef long __off_t;
  76 typedef __quad_t __off64_t;
  77 typedef long __time_t;
  78 typedef long __suseconds_t;
  79 typedef int __ssize_t;
  80 typedef unsigned int __socklen_t;
  81 struct _IO_FILE;
  82 typedef struct _IO_FILE FILE;
  83 typedef void _IO_lock_t;
  84 struct _IO_marker {
  85    struct _IO_marker *_next ;
  86    struct _IO_FILE *_sbuf ;
  87    int _pos ;
  88 };
  89 struct _IO_FILE {
  90    int _flags ;
  91    char *_IO_read_ptr ;
  92    char *_IO_read_end ;
  93    char *_IO_read_base ;
  94    char *_IO_write_base ;
  95    char *_IO_write_ptr ;
  96    char *_IO_write_end ;
  97    char *_IO_buf_base ;
  98    char *_IO_buf_end ;
  99    char *_IO_save_base ;
 100    char *_IO_backup_base ;
 101    char *_IO_save_end ;
 102    struct _IO_marker *_markers ;
 103    struct _IO_FILE *_chain ;
 104    int _fileno ;
 105    int _flags2 ;
 106    __off_t _old_offset ;
 107    unsigned short _cur_column ;
 108    signed char _vtable_offset ;
 109    char _shortbuf[1] ;
 110    _IO_lock_t *_lock ;
 111    __off64_t _offset ;
 112    void *__pad1 ;
 113    void *__pad2 ;
 114    void *__pad3 ;
 115    void *__pad4 ;
 116    size_t __pad5 ;
 117    int _mode ;
 118    char _unused2[(15U * sizeof(int ) - 4U * sizeof(void *)) - sizeof(size_t )] ;
 119 };
 120 typedef __ssize_t ssize_t;
 121 struct timeval {
 122    __time_t tv_sec ;
 123    __suseconds_t tv_usec ;
 124 };
 125 typedef long __fd_mask;
 126 struct __anonstruct_fd_set_13 {
 127    __fd_mask __fds_bits[1024U / (8U * sizeof(__fd_mask ))] ;
 128 };
 129 typedef struct __anonstruct_fd_set_13 fd_set;
 130 typedef unsigned short uint16_t;
 131 typedef unsigned int uint32_t;
 132 typedef __socklen_t socklen_t;
 133 typedef unsigned short sa_family_t;
 134 struct sockaddr {
 135    sa_family_t sa_family ;
 136    char sa_data[14] ;
 137 };
 138 typedef uint16_t in_port_t;
 139 typedef uint32_t in_addr_t;
 140 struct in_addr {
 141    in_addr_t s_addr ;
 142 };
 143 struct sockaddr_in {
 144    sa_family_t sin_family ;
 145    in_port_t sin_port ;
 146    struct in_addr sin_addr ;
 147    unsigned char sin_zero[((sizeof(struct sockaddr ) - sizeof(unsigned short )) - sizeof(in_port_t )) - sizeof(struct in_addr )] ;
 148 };
 149 struct hostent {
 150    char *h_name ;
 151    char **h_aliases ;
 152    int h_addrtype ;
 153    int h_length ;
 154    char **h_addr_list ;
 155 };
 156 struct flags {
 157    unsigned char debug ;
 158    unsigned char verbose ;
 159    unsigned char check_mailbox ;
 160    unsigned char maildir ;
 161    unsigned char mbox ;
 162    unsigned char pop ;
 163    unsigned char auto_config ;
 164    unsigned char generate_config ;
 165    unsigned char output_html ;
 166    unsigned char output_text ;
 167    unsigned char output_machine ;
 168    unsigned char output_xml ;
 169    unsigned char resolve_hostnames ;
 170    unsigned char display_only_ips ;
 171    unsigned char ip_range ;
 172    unsigned char ip_list ;
 173    unsigned char send_email ;
 174    unsigned char config_file ;
 175    unsigned char email_template ;
 176    unsigned char got_name_macro ;
 177    unsigned char got_email ;
 178    unsigned char threads ;
 179    unsigned char display_all ;
 180 };
 181 typedef __time_t time_t;
 182 typedef unsigned long __ino_t;
 183 struct dirent {
 184    __ino_t d_ino ;
 185    __off_t d_off ;
 186    unsigned short d_reclen ;
 187    unsigned char d_type ;
 188    char d_name[256] ;
 189 };
 190 struct __dirstream;
 191 typedef struct __dirstream DIR;
 192 typedef unsigned int __useconds_t;
 193 struct timespec {
 194    __time_t tv_sec ;
 195    long tv_nsec ;
 196 };
 197 union __anonunion_pthread_attr_t_14 {
 198    char __size[36] ;
 199    long __align ;
 200 };
 201 typedef union __anonunion_pthread_attr_t_14 pthread_attr_t;
 202 struct __pthread_internal_slist {
 203    struct __pthread_internal_slist *__next ;
 204 };
 205 typedef struct __pthread_internal_slist __pthread_slist_t;
 206 union __anonunion____missing_field_name_16 {
 207    int __spins ;
 208    __pthread_slist_t __list ;
 209 };
 210 struct __pthread_mutex_s {
 211    int __lock ;
 212    unsigned int __count ;
 213    int __owner ;
 214    int __kind ;
 215    unsigned int __nusers ;
 216    union __anonunion____missing_field_name_16 __annonCompField1 ;
 217 };
 218 union __anonunion_pthread_mutex_t_15 {
 219    struct __pthread_mutex_s __data ;
 220    char __size[24] ;
 221    long __align ;
 222 };
 223 typedef union __anonunion_pthread_mutex_t_15 pthread_mutex_t;
 224 union __anonunion_pthread_mutexattr_t_17 {
 225    char __size[4] ;
 226    long __align ;
 227 };
 228 typedef union __anonunion_pthread_mutexattr_t_17 pthread_mutexattr_t;
 229 typedef __builtin_va_list __gnuc_va_list;
 230 typedef __gnuc_va_list va_list;
 231 #pragma merger(0,"/tmp/cil-igB1lIFD.i","-Wall,-g,-pthread")
 232 extern  __attribute__((__nothrow__)) int atoi(char const   *__nptr )  __attribute__((__pure__,
 233 __nonnull__(1))) ;
 234 int check_mail_file(char *email_address , char *key ) ;
 235 extern  __attribute__((__nothrow__)) char *strncpy(char * __restrict  __dest , char const   * __restrict  __src ,
 236                                                    size_t __n )  __attribute__((__nonnull__(1,2))) ;
 237 extern  __attribute__((__nothrow__)) int strncmp(char const   *__s1 , char const   *__s2 ,
 238                                                  size_t __n )  __attribute__((__pure__,
 239 __nonnull__(1,2))) ;
 240 extern  __attribute__((__nothrow__)) char *strtok(char * __restrict  __s , char const   * __restrict  __delim )  __attribute__((__nonnull__(2))) ;
 241 extern  __attribute__((__nothrow__)) size_t strlen(char const   *__s )  __attribute__((__pure__,
 242 __nonnull__(1))) ;
 243 void swap_rule(char *dest , char const   *rule___0 , int hostn ) ;
 244 struct options o ;
 245 host **hosts ;
 246 rule **rules ;
 247 int check_mail_file(char *email_address , char *key ) 
 248 { char mac_buf[8193] ;
 249   char tmp[9][8193] ;
 250   char *word ;
 251   int count ;
 252   int emailc ;
 253   int x ;
 254   int y ;
 255   int flag ;
 256   size_t tmp___0 ;
 257   int tmp___1 ;
 258   size_t tmp___2 ;
 259   size_t tmp___3 ;
 260   int tmp___4 ;
 261   int tmp___5 ;
 262 
 263   {
 264   count = 0;
 265   emailc = 0;
 266   x = 0;
 267   y = 0;
 268   flag = 0;
 269   if ((unsigned int )email_address == (unsigned int )((void *)0)) {
 270     return (0);
 271   }
 272   x = 0;
 273   while ((unsigned long )x < o.no_hostnames) {
 274     if (! (*(hosts + x))->smtp_open) {
 275       goto __Cont;
 276     }
 277     y = 0;
 278     while (y < (int )o.no_rules) {
 279       swap_rule(mac_buf, (char const   *)(*(rules + y))->mail_from, x);
 280       tmp___0 = strlen((char const   *)(mac_buf));
 281       tmp___1 = strncmp((char const   *)email_address, (char const   *)(mac_buf),
 282                         tmp___0);
 283       if (! tmp___1) {
 284         emailc ++;
 285       }
 286       y ++;
 287     }
 288     __Cont: /* CIL Label */ 
 289     x ++;
 290   }
 291   if (! emailc) {
 292     return (0);
 293   } else {
 294     word = strtok((char * __restrict  )key, (char const   * __restrict  )":");
 295     while (word) {
 296       count ++;
 297       if (count < 6) {
 298         strncpy((char * __restrict  )(tmp[count]), (char const   * __restrict  )word,
 299                 8192U);
 300         tmp[count][8192] = (char )'\000';
 301       }
 302       word = strtok((char * __restrict  )((void *)0), (char const   * __restrict  )":");
 303     }
 304     tmp___5 = atoi((char const   *)(tmp[2]));
 305     if ((unsigned int )tmp___5 == o.time) {
 306       x = 0;
 307       while ((unsigned long )x < o.no_hostnames) {
 308         y = 0;
 309         tmp___2 = strlen((char const   *)(tmp[3]));
 310         tmp___3 = strlen((char const   *)(*(hosts + x))->ip_address);
 311         if (tmp___2 != tmp___3) {
 312           goto __Cont___0;
 313         }
 314         while (tmp[3][y]) {
 315           if ((int )tmp[3][y] != (int )*((*(hosts + x))->ip_address + y)) {
 316             flag ++;
 317           }
 318           y ++;
 319         }
 320         if (! flag) {
 321           tmp___4 = atoi((char const   *)(tmp[4]));
 322           (*((*(hosts + x))->smtp_check + tmp___4))->failed = (unsigned char)2;
 323         }
 324         flag = 0;
 325         y = 0;
 326         __Cont___0: /* CIL Label */ 
 327         x ++;
 328       }
 329     }
 330   }
 331   return (0);
 332 }
 333 }
 334 #pragma merger(0,"/tmp/cil-ZtejrG4Q.i","-Wall,-g,-pthread")
 335 extern struct _IO_FILE *stderr ;
 336 extern int fprintf(FILE * __restrict  __stream , char const   * __restrict  __format 
 337                    , ...) ;
 338 extern int printf(char const   * __restrict  __format  , ...) ;
 339 extern void perror(char const   *__s ) ;
 340 extern int select(int __nfds , fd_set * __restrict  __readfds , fd_set * __restrict  __writefds ,
 341                   fd_set * __restrict  __exceptfds , struct timeval * __restrict  __timeout ) ;
 342 extern  __attribute__((__nothrow__)) void free(void *__ptr ) ;
 343 extern  __attribute__((__nothrow__, __noreturn__)) void exit(int __status ) ;
 344 extern  __attribute__((__nothrow__)) int *__errno_location(void)  __attribute__((__const__)) ;
 345 extern  __attribute__((__nothrow__)) void *memcpy(void * __restrict  __dest , void const   * __restrict  __src ,
 346                                                   size_t __n )  __attribute__((__nonnull__(1,2))) ;
 347 extern  __attribute__((__nothrow__)) void bzero(void *__s , size_t __n )  __attribute__((__nonnull__(1))) ;
 348 extern  __attribute__((__nothrow__)) int socket(int __domain , int __type , int __protocol ) ;
 349 extern int connect(int __fd , struct sockaddr  const  *__addr , socklen_t __len ) ;
 350 extern  __attribute__((__nothrow__)) int getsockopt(int __fd , int __level , int __optname ,
 351                                                     void * __restrict  __optval ,
 352                                                     socklen_t * __restrict  __optlen ) ;
 353 extern  __attribute__((__nothrow__)) uint16_t htons(uint16_t __hostshort )  __attribute__((__const__)) ;
 354 extern struct hostent *gethostbyaddr(void const   *__addr , __socklen_t __len , int __type ) ;
 355 extern struct hostent *gethostbyname(char const   *__name ) ;
 356 extern int close(int __fd ) ;
 357 extern ssize_t read(int __fd , void *__buf , size_t __nbytes ) ;
 358 extern unsigned int sleep(unsigned int __seconds ) ;
 359 extern int fcntl(int __fd , int __cmd  , ...) ;
 360 extern  __attribute__((__nothrow__)) in_addr_t inet_addr(char const   *__cp ) ;
 361 void fatal(char *fmt  , ...) ;
 362 void error(char *fmt  , ...) ;
 363 long get_ip(char *host___0 ) ;
 364 int tcp_connect(long ipa ) ;
 365 int connect_non_blocking(int sockfd , struct sockaddr  const  *thaddr , socklen_t salen ,
 366                          int nsec ) ;
 367 int read_timeo(int sockfd , char *string , int max , int timeo ) ;
 368 char *get_hostname(char const   *addr ) ;
 369 void *s_malloc(unsigned long size ) ;
 370 struct flags f ;
 371 long get_ip(char *host___0 ) 
 372 { long ia ;
 373   struct hostent *h ;
 374   in_addr_t tmp ;
 375 
 376   {
 377   if (f.debug) {
 378     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Getting IP\n");
 379   }
 380   tmp = inet_addr((char const   *)host___0);
 381   ia = (long )tmp;
 382   if (ia == -1L) {
 383     h = gethostbyname((char const   *)host___0);
 384     if ((unsigned int )h == (unsigned int )((void *)0)) {
 385       if (f.debug) {
 386         fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Couldn\'t resolv ip\n");
 387       }
 388       return (-1L);
 389     }
 390     memcpy((void * __restrict  )(& ia), (void const   * __restrict  )*(h->h_addr_list + 0),
 391            4U);
 392   }
 393   if (f.debug) {
 394     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Got ip ok\n");
 395   }
 396   return (ia);
 397 }
 398 }
 399 int tcp_connect(long ipa ) 
 400 { struct sockaddr_in their_addr ;
 401   int sockfd ;
 402   int socket_f ;
 403 
 404   {
 405   socket_f = 0;
 406   START1: 
 407   while (1) {
 408     sockfd = socket(2, 1, 0);
 409     if (! (sockfd == -1)) {
 410       break;
 411     }
 412     perror("socket: ");
 413     exit(1);
 414     if (socket_f > 12) {
 415       fatal((char *)"Still unable to create socket after 60 secs.... Try reducing the number of threads.....");
 416     }
 417     socket_f ++;
 418     if (f.verbose) {
 419       error((char *)"Unable to create socket.... sleeping for 5 seconds");
 420     } else {
 421       error((char *)"Unable to create socket.... sleeping for 5 seconds");
 422     }
 423     sleep(5U);
 424   }
 425   if (sockfd > 2000) {
 426     close(sockfd);
 427     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Socket count exceding 2000; sleeping 5!\n");
 428     sleep(5U);
 429     goto START1;
 430   }
 431   their_addr.sin_family = (unsigned short)2;
 432   their_addr.sin_port = htons((unsigned short)25);
 433   their_addr.sin_addr.s_addr = (unsigned int )ipa;
 434   bzero((void *)(& their_addr.sin_zero), 8U);
 435   sockfd = connect_non_blocking(sockfd, (struct sockaddr  const  *)((struct sockaddr *)(& their_addr)),
 436                                 sizeof(struct sockaddr ), (int )o.c_timeout);
 437   if (sockfd == -1) {
 438     if ((int )f.verbose > 1) {
 439       error((char *)"! Unable to connect to host");
 440     }
 441     return (-1);
 442   }
 443   if (sockfd > 2000) {
 444     printf((char const   * __restrict  )"\n\n\n\n\n\n\n\n******** in tcp_connect\n");
 445     sleep(10U);
 446   }
 447   return (sockfd);
 448 }
 449 }
 450 int connect_non_blocking(int sockfd , struct sockaddr  const  *thaddr , socklen_t salen ,
 451                          int nsec ) 
 452 { int n ;
 453   int flags ;
 454   int serror ;
 455   socklen_t len ;
 456   fd_set rset ;
 457   fd_set wset ;
 458   struct timeval tval ;
 459   int tmp ;
 460   int *tmp___0 ;
 461   int __d0 ;
 462   int __d1 ;
 463   int *tmp___1 ;
 464   struct timeval *tmp___2 ;
 465   int tmp___3 ;
 466   register char __result ;
 467   register char __result___0 ;
 468   int tmp___4 ;
 469   int *tmp___5 ;
 470 
 471   {
 472   flags = fcntl(sockfd, 3, 0);
 473   if (flags == -1) {
 474     perror("Cant set flags");
 475     close(sockfd);
 476     return (-1);
 477   }
 478   tmp = fcntl(sockfd, 4, flags | 2048);
 479   if (tmp == -1) {
 480     perror("Cant set socket options");
 481     close(sockfd);
 482     return (-1);
 483   }
 484   serror = 0;
 485   n = connect(sockfd, thaddr, salen);
 486   if (n == -1) {
 487     tmp___0 = __errno_location();
 488     if (*tmp___0 != 115) {
 489       close(sockfd);
 490       return (-1);
 491     }
 492   }
 493   if (sockfd > 2000) {
 494     printf((char const   * __restrict  )"\n\n\n\n\n\n******** in connect non blocking\n");
 495     sleep(10U);
 496   }
 497   if (n == 0) {
 498     goto done;
 499   }
 500   while (1) {
 501     __asm__  volatile   ("cld; rep; stosl": "=c" (__d0), "=D" (__d1): "a" (0), "0" (sizeof(fd_set ) / sizeof(__fd_mask )),
 502                          "1" (& rset.__fds_bits[0]): "memory");
 503     break;
 504   }
 505   __asm__  volatile   ("btsl %1,%0": "=m" (rset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))): "cc",
 506                        "memory");
 507   wset = rset;
 508   tval.tv_sec = (long )nsec;
 509   tval.tv_usec = 500000L;
 510   if (nsec) {
 511     tmp___2 = & tval;
 512   } else {
 513     tmp___2 = (struct timeval *)((void *)0);
 514   }
 515   n = select(sockfd + 1, (fd_set * __restrict  )(& rset), (fd_set * __restrict  )(& wset),
 516              (fd_set * __restrict  )((void *)0), (struct timeval * __restrict  )tmp___2);
 517   if (n == 0) {
 518     close(sockfd);
 519     tmp___1 = __errno_location();
 520     *tmp___1 = 110;
 521     return (-1);
 522   } else {
 523     if (n == -1) {
 524       perror("Select failed\n");
 525       close(sockfd);
 526       return (-1);
 527     }
 528   }
 529   __asm__  volatile   ("btl %1,%2 ; setcb %b0": "=q" (__result): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
 530                        "m" (rset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
 531   if (__result) {
 532     goto _L;
 533   } else {
 534     __asm__  volatile   ("btl %1,%2 ; setcb %b0": "=q" (__result___0): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
 535                          "m" (wset.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
 536     if (__result___0) {
 537       _L: /* CIL Label */ 
 538       len = sizeof(serror);
 539       tmp___3 = getsockopt(sockfd, 1, 4, (void * __restrict  )(& serror), (socklen_t * __restrict  )(& len));
 540       if (tmp___3 < 0) {
 541         close(sockfd);
 542         return (-1);
 543       }
 544     } else {
 545       error((char *)"**** Socket not set..... ");
 546       perror("FD_SET: ");
 547       close(sockfd);
 548       exit(-1);
 549     }
 550   }
 551   done: 
 552   tmp___4 = fcntl(sockfd, 4, flags);
 553   if (tmp___4 == -1) {
 554     perror("Can\'t restore the socket opts\n");
 555     close(sockfd);
 556     return (-1);
 557   }
 558   if (serror) {
 559     tmp___5 = __errno_location();
 560     *tmp___5 = serror;
 561     close(sockfd);
 562     return (-1);
 563   }
 564   return (sockfd);
 565 }
 566 }
 567 int read_timeo(int sockfd , char *string , int max , int timeo ) 
 568 { struct timeval tv ;
 569   int numbytes ;
 570   fd_set readfds ;
 571   int __d0 ;
 572   int __d1 ;
 573   register char __result ;
 574 
 575   {
 576   numbytes = 0;
 577   tv.tv_sec = (long )timeo;
 578   tv.tv_usec = 500000L;
 579   while (1) {
 580     __asm__  volatile   ("cld; rep; stosl": "=c" (__d0), "=D" (__d1): "a" (0), "0" (sizeof(fd_set ) / sizeof(__fd_mask )),
 581                          "1" (& readfds.__fds_bits[0]): "memory");
 582     break;
 583   }
 584   __asm__  volatile   ("btsl %1,%0": "=m" (readfds.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))): "cc",
 585                        "memory");
 586   select(sockfd + 1, (fd_set * __restrict  )(& readfds), (fd_set * __restrict  )((void *)0),
 587          (fd_set * __restrict  )((void *)0), (struct timeval * __restrict  )(& tv));
 588   __asm__  volatile   ("btl %1,%2 ; setcb %b0": "=q" (__result): "r" ((unsigned int )sockfd % (8U * sizeof(__fd_mask ))),
 589                        "m" (readfds.__fds_bits[(unsigned int )sockfd / (8U * sizeof(__fd_mask ))]): "cc");
 590   if (__result) {
 591     numbytes = read(sockfd, (void *)string, (unsigned int )max);
 592     if (numbytes < 1) {
 593       return (0);
 594     } else {
 595       *(string + numbytes) = (char )'\000';
 596     }
 597   } else {
 598     return (-1);
 599   }
 600   return (1);
 601 }
 602 }
 603 char *get_hostname(char const   *addr ) 
 604 { struct hostent *hn ;
 605   struct in_addr *myaddr ;
 606   void *tmp ;
 607 
 608   {
 609   tmp = s_malloc((unsigned long )sizeof(struct in_addr ));
 610   myaddr = (struct in_addr *)tmp;
 611   myaddr->s_addr = inet_addr(addr);
 612   hn = gethostbyaddr((void const   *)((char *)myaddr), 4U, 2);
 613   if ((unsigned int )hn == (unsigned int )((void *)0)) {
 614     free((void *)myaddr);
 615     return ((char *)addr);
 616   }
 617   free((void *)myaddr);
 618   return (hn->h_name);
 619 }
 620 }
 621 #pragma merger(0,"/tmp/cil-Pwl1SXo2.i","-Wall,-g,-pthread")
 622 void display_screen(void) ;
 623 void display_screen(void) 
 624 { int x ;
 625   int y ;
 626 
 627   {
 628   x = 0;
 629   y = 0;
 630   x = 0;
 631   while ((unsigned long )x < o.no_hostnames) {
 632     if ((*(hosts + x))->smtp_open) {
 633       printf((char const   * __restrict  )"Results for host: %s\n\n", (*(hosts + x))->ip_address);
 634       if ((*(hosts + x))->fatal_error) {
 635         printf((char const   * __restrict  )"There was a fatal error (%d) scanning this host\n",
 636                (*(hosts + x))->fatal_error);
 637         if ((int )(*(hosts + x))->fatal_error == 6) {
 638           goto _L;
 639         } else {
 640           if ((int )(*(hosts + x))->fatal_error == 7) {
 641             goto _L;
 642           } else {
 643             if ((int )(*(hosts + x))->fatal_error == 8) {
 644               _L: /* CIL Label */ 
 645               y = 0;
 646               while (y <= (int )o.no_rules) {
 647                 printf((char const   * __restrict  )"\tResults for check: %d\n", y);
 648                 printf((char const   * __restrict  )"\t\tError code: %d\n", (*((*(hosts + x))->smtp_check + y))->error_code);
 649                 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 3) {
 650                   printf((char const   * __restrict  )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_mail_from);
 651                 }
 652                 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 4) {
 653                   printf((char const   * __restrict  )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_rcpt_to);
 654                 }
 655                 if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 7) {
 656                   printf((char const   * __restrict  )"\t\t*%s*\n", (*((*(hosts + x))->smtp_check + y))->r_reset);
 657                 }
 658                 y ++;
 659               }
 660             }
 661           }
 662         }
 663       } else {
 664         y = 0;
 665         while (y <= (int )o.no_rules) {
 666           printf((char const   * __restrict  )"\tResults for check: %d\n", y);
 667           if ((*((*(hosts + x))->smtp_check + y))->error_code) {
 668             printf((char const   * __restrict  )"This checkl failed with error code (%d)\n",
 669                    (*((*(hosts + x))->smtp_check + y))->error_code);
 670           } else {
 671             if ((*((*(hosts + x))->smtp_check + y))->passed) {
 672               printf((char const   * __restrict  )"\t\t*Passed this check\n");
 673             } else {
 674               printf((char const   * __restrict  )"\t\t!Failed this check\n");
 675             }
 676           }
 677           y ++;
 678         }
 679       }
 680     }
 681     x ++;
 682   }
 683   return;
 684 }
 685 }
 686 #pragma merger(0,"/tmp/cil-keSUczDt.i","-Wall,-g,-pthread")
 687 extern  __attribute__((__nothrow__)) time_t time(time_t *__timer ) ;
 688 void set_defaults(void) ;
 689 void banner(void) ;
 690 void validate_options(void) ;
 691 void parse_args(int argc , char * const  *argv ) ;
 692 int get_domain(void) ;
 693 int get_ip_range(char *iprange ) ;
 694 int parse_config(char *configfile ) ;
 695 int get_email_file(char *email_file ) ;
 696 int parse_aconfig(void) ;
 697 void start_scan(void) ;
 698 void display_html(void) ;
 699 void display_machine(void) ;
 700 void display_text(void) ;
 701 void display_xml(void) ;
 702 int parse_mbox(void) ;
 703 int parse_maildir(void) ;
 704 int parse_popbox(void) ;
 705 int main(int argc , char **argv ) 
 706 { time_t b_seconds ;
 707   time_t a_seconds ;
 708   int t_diff ;
 709 
 710   {
 711   b_seconds = (time_t )0;
 712   a_seconds = (time_t )0;
 713   banner();
 714   set_defaults();
 715   parse_args(argc, (char * const  *)argv);
 716   if (f.auto_config) {
 717     parse_aconfig();
 718   }
 719   validate_options();
 720   get_ip_range(o.ip_range);
 721   parse_config(o.config_file);
 722   get_domain();
 723   get_email_file(o.email_template);
 724   printf((char const   * __restrict  )"Starting the scan....... Please wait!\n\n\n");
 725   b_seconds = time((time_t *)((void *)0));
 726   start_scan();
 727   a_seconds = time((time_t *)((void *)0));
 728   if (b_seconds == -1L) {
 729     a_seconds = 20L;
 730     b_seconds = 0L;
 731   } else {
 732     if (a_seconds == -1L) {
 733       a_seconds = 20L;
 734       b_seconds = 0L;
 735     } else {
 736       if (a_seconds == b_seconds) {
 737         a_seconds = 20L;
 738         b_seconds = 0L;
 739       }
 740     }
 741   }
 742   t_diff = (int )(a_seconds - b_seconds);
 743   o.hours = (unsigned char )(t_diff / 3600);
 744   t_diff -= (int )o.hours * 3600;
 745   o.mins = (unsigned char )(t_diff / 60);
 746   t_diff -= (int )o.mins * 60;
 747   o.seconds = (unsigned char )t_diff;
 748   if (f.check_mailbox) {
 749     printf((char const   * __restrict  )"\n\n\nFinished Scanning, Waiting %d seconds for mails to arrive......\n\n",
 750            o.m_timeout);
 751     sleep((unsigned int )o.m_timeout);
 752     printf((char const   * __restrict  )"Checking mail....... Please Wait!\n");
 753     if (f.maildir) {
 754       parse_maildir();
 755     } else {
 756       if (f.mbox) {
 757         parse_mbox();
 758       } else {
 759         if (f.pop) {
 760           parse_popbox();
 761         }
 762       }
 763     }
 764   }
 765   if (f.output_html) {
 766     printf((char const   * __restrict  )"\n\nGenerating HTML results...... Please wait.\n\n");
 767     display_html();
 768   }
 769   if (f.output_text) {
 770     printf((char const   * __restrict  )"\n\nGenerating TEXT results...... Please wait.\n\n");
 771     display_text();
 772   }
 773   if (f.output_machine) {
 774     printf((char const   * __restrict  )"\n\nGenerating Machine Readable results...... Please wait.\n\n");
 775     display_machine();
 776   }
 777   if (f.output_xml) {
 778     printf((char const   * __restrict  )"\n\nGenerating XML results...... Please wait.\n\n");
 779     display_xml();
 780   }
 781   banner();
 782   return (0);
 783 }
 784 }
 785 #pragma merger(0,"/tmp/cil-1UcA1mvr.i","-Wall,-g,-pthread")
 786 extern  __attribute__((__nothrow__)) void *realloc(void *__ptr , size_t __size )  __attribute__((__warn_unused_result__,
 787 __malloc__)) ;
 788 extern struct _IO_FILE *stdin ;
 789 extern int fclose(FILE *__stream ) ;
 790 extern FILE *fopen(char const   * __restrict  __filename , char const   * __restrict  __modes ) ;
 791 extern  __attribute__((__nothrow__)) int ( /* format attribute */  snprintf)(char * __restrict  __s ,
 792                                                                              size_t __maxlen ,
 793                                                                              char const   * __restrict  __format 
 794                                                                              , ...) ;
 795 extern  __attribute__((__nothrow__)) int sscanf(char const   * __restrict  __s , char const   * __restrict  __format 
 796                                                 , ...) ;
 797 extern int fgetc(FILE *__stream ) ;
 798 extern char *fgets(char * __restrict  __s , int __n , FILE * __restrict  __stream ) ;
 799 extern void rewind(FILE *__stream ) ;
 800 extern  __attribute__((__nothrow__)) void *memset(void *__s , int __c , size_t __n )  __attribute__((__nonnull__(1))) ;
 801 extern  __attribute__((__nothrow__)) char *strcat(char * __restrict  __dest , char const   * __restrict  __src )  __attribute__((__nonnull__(1,2))) ;
 802 extern  __attribute__((__nothrow__)) char *strncat(char * __restrict  __dest , char const   * __restrict  __src ,
 803                                                    size_t __n )  __attribute__((__nonnull__(1,2))) ;
 804 extern  __attribute__((__nothrow__)) char *strstr(char const   *__haystack , char const   *__needle )  __attribute__((__pure__,
 805 __nonnull__(1,2))) ;
 806 extern unsigned short const   **__ctype_b_loc(void)  __attribute__((__const__)) ;
 807 char *chomp(char *string ) ;
 808 void debug(char *fmt  , ...) ;
 809 host **hosts  ;
 810 rule **rules  ;
 811 int get_ip_range(char *iprange ) 
 812 { int start[4] ;
 813   int startc[4] ;
 814   int tstart[4] ;
 815   int tstartc[4] ;
 816   int end[4] ;
 817   int endc[4] ;
 818   int tend[4] ;
 819   int tendc[4] ;
 820   int i ;
 821   int last ;
 822   int hostnames ;
 823   char *r ;
 824   char *t ;
 825   char *p ;
 826   char buf[8193] ;
 827   char *addy[5] ;
 828   char *temp[2] ;
 829   char *iprange2 ;
 830   char hostnamet[8193] ;
 831   char *tmp ;
 832   size_t tmp___0 ;
 833   size_t tmp___1 ;
 834   void *tmp___2 ;
 835   size_t tmp___3 ;
 836   size_t tmp___4 ;
 837   unsigned short const   **tmp___5 ;
 838   unsigned short const   **tmp___6 ;
 839   char *tmp___7 ;
 840   char *tmp___8 ;
 841   void *tmp___9 ;
 842   void *tmp___10 ;
 843   void *tmp___11 ;
 844   size_t tmp___12 ;
 845   void *tmp___13 ;
 846   size_t tmp___14 ;
 847   size_t tmp___15 ;
 848   char *tmp___16 ;
 849   char *tmp___17 ;
 850 
 851   {
 852   i = 0;
 853   last = 0;
 854   hostnames = 0;
 855   tmp = strstr((char const   *)iprange, "/");
 856   if (tmp) {
 857     fatal((char *)"Netmask notation is not supported yet...... please use the format 192.168.*.1-255\n");
 858   }
 859   printf((char const   * __restrict  )"\nCreating a list of IP\'s to scan....... Please wait!\n\n");
 860   tmp___17 = strstr((char const   *)iprange, ",");
 861   if ((unsigned int )tmp___17 == (unsigned int )((void *)0)) {
 862     strncpy((char * __restrict  )(buf), (char const   * __restrict  )iprange, 8192U);
 863     tmp___0 = strlen((char const   *)iprange);
 864     buf[tmp___0] = (char )'\000';
 865     last = 1;
 866     goto GETIP;
 867   } else {
 868     p = iprange;
 869     t = p;
 870     while (1) {
 871       tmp___16 = p;
 872       p ++;
 873       if (! *tmp___16) {
 874         break;
 875       }
 876       if ((int )*p == 44) {
 877         *p = (char )'\000';
 878         p ++;
 879         strncpy((char * __restrict  )(buf), (char const   * __restrict  )t, 8192U);
 880         GETIP: 
 881         tmp___1 = strlen((char const   *)(buf));
 882         tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
 883         iprange2 = (char *)tmp___2;
 884         tmp___3 = strlen((char const   *)(buf));
 885         strncpy((char * __restrict  )iprange2, (char const   * __restrict  )(buf),
 886                 tmp___3);
 887         tmp___4 = strlen((char const   *)(buf));
 888         *(iprange2 + tmp___4) = (char )'\000';
 889         addy[4] = (char *)((void *)0);
 890         addy[3] = addy[4];
 891         addy[2] = addy[3];
 892         addy[1] = addy[2];
 893         addy[0] = addy[1];
 894         r = buf;
 895         addy[0] = r;
 896         debug((char *)"R == %s\n", r);
 897         while (1) {
 898           r ++;
 899           if (! *r) {
 900             break;
 901           }
 902           if ((int )*r == 46) {
 903             i ++;
 904             if (i < 4) {
 905               *r = (char )'\000';
 906               addy[i] = r + 1;
 907             } else {
 908               goto _L;
 909             }
 910           } else {
 911             _L: /* CIL Label */ 
 912             if ((int )*r != 46) {
 913               if ((int )*r != 42) {
 914                 if ((int )*r != 45) {
 915                   tmp___5 = __ctype_b_loc();
 916                   if (! ((int const   )*(*tmp___5 + (int )*r) & 2048)) {
 917                     if ((int )*r != 10) {
 918                       fatal((char *)"Invalid character in IP address notation\n");
 919                     }
 920                   }
 921                 }
 922               }
 923             }
 924           }
 925         }
 926         if (i != 3) {
 927           fatal((char *)"IP address format is illegal\n");
 928         }
 929         i = 0;
 930         i = 0;
 931         while (i < 4) {
 932           if ((int )*(addy[i]) == 42) {
 933             if (i == 0) {
 934               fatal((char *)"For some reason I don\'t think it\'s wise scanning the whole bloody net\n\nBut if you sure then edit the source and remove this line\n");
 935             }
 936             if (i == 1) {
 937               fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Sure you wanna scan a entire class A.... \n\n..... OK!\n\n");
 938             }
 939             start[i] = 1;
 940             startc[i] = 1;
 941             end[i] = 255;
 942             endc[i] = 255;
 943           } else {
 944             tmp___8 = strstr((char const   *)addy[i], "-");
 945             if ((unsigned int )tmp___8 != (unsigned int )((void *)0)) {
 946               temp[0] = addy[i];
 947               while (1) {
 948                 if ((int )*(addy[i]) != 10) {
 949                   if ((int )*(addy[i]) != 46) {
 950                     if (! *(addy[i])) {
 951                       break;
 952                     }
 953                   } else {
 954                     break;
 955                   }
 956                 } else {
 957                   break;
 958                 }
 959                 if ((int )*(addy[i]) == 45) {
 960                   *(addy[i]) = (char )'\000';
 961                   temp[1] = addy[i] + 1;
 962                   start[i] = atoi((char const   *)temp[0]);
 963                   startc[i] = atoi((char const   *)temp[0]);
 964                   end[i] = atoi((char const   *)temp[1]);
 965                   endc[i] = atoi((char const   *)temp[1]);
 966                 } else {
 967                   tmp___6 = __ctype_b_loc();
 968                   if (! ((int const   )*(*tmp___6 + (int )*(addy[i])) & 2048)) {
 969                     fatal((char *)"Invalid host specification\n");
 970                   }
 971                 }
 972                 tmp___7 = addy[i];
 973                 (addy[i]) ++;
 974                 if (*tmp___7) {
 975 
 976                 }
 977               }
 978             } else {
 979               start[i] = atoi((char const   *)addy[i]);
 980               startc[i] = atoi((char const   *)addy[i]);
 981               end[i] = atoi((char const   *)addy[i]);
 982               endc[i] = atoi((char const   *)addy[i]);
 983             }
 984           }
 985           tstart[i] = start[i];
 986           tstartc[i] = start[i];
 987           tend[i] = end[i];
 988           tendc[i] = endc[i];
 989           if (start[i] > end[i]) {
 990             fatal((char *)"Invalid ip range\n");
 991           } else {
 992             if (start[i] < 0) {
 993               fatal((char *)"Invalid ip range\n");
 994             } else {
 995               if (end[i] > 255) {
 996                 fatal((char *)"Invalid ip range\n");
 997               }
 998             }
 999           }
1000           i ++;
1001         }
1002         i = 0;
1003         while (i < 1) {
1004           while (start[i] <= end[i]) {
1005             while (start[i + 1] <= end[i + 1]) {
1006               while (start[i + 2] <= end[i + 2]) {
1007                 while (start[i + 3] <= end[i + 3]) {
1008                   (o.no_hostnames) ++;
1009                   (start[i + 3]) ++;
1010                 }
1011                 start[i + 3] = tstart[i + 3];
1012                 end[i + 3] = tend[i + 3];
1013                 (start[i + 2]) ++;
1014               }
1015               start[i + 2] = tstart[i + 2];
1016               end[i + 2] = tend[i + 2];
1017               (start[i + 1]) ++;
1018             }
1019             start[i + 1] = tstart[i + 1];
1020             end[i + 1] = tend[i + 1];
1021             (start[i]) ++;
1022           }
1023           i ++;
1024         }
1025         if ((unsigned int )hosts == (unsigned int )((void *)0)) {
1026           tmp___9 = s_malloc((o.no_hostnames + 1UL) * (unsigned long )sizeof(host **));
1027           hosts = (host **)tmp___9;
1028         } else {
1029           tmp___10 = realloc((void *)hosts, (unsigned int )((o.no_hostnames + 1UL) * (unsigned long )sizeof(host **)));
1030           hosts = (host **)tmp___10;
1031         }
1032         i = 0;
1033         while (i < 1) {
1034           while (startc[i] <= endc[i]) {
1035             while (startc[i + 1] <= endc[i + 1]) {
1036               while (startc[i + 2] <= endc[i + 2]) {
1037                 while (startc[i + 3] <= endc[i + 3]) {
1038                   if (f.debug) {
1039                     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"list == %i.%i.%i.%i\n",
1040                             startc[i], startc[i + 1], startc[i + 2], startc[i + 3]);
1041                     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"end --> %i.%i.%i.%i\n",
1042                             endc[i], endc[i + 1], endc[i + 2], endc[i + 3]);
1043                   }
1044                   snprintf((char * __restrict  )(hostnamet), 8192U, (char const   * __restrict  )"%i.%i.%i.%i",
1045                            startc[i], startc[i + 1], startc[i + 2], startc[i + 3]);
1046                   tmp___11 = s_malloc((unsigned long )sizeof(host ));
1047                   *(hosts + hostnames) = (host *)tmp___11;
1048                   (*(hosts + hostnames))->resolved = (unsigned char)0;
1049                   (*(hosts + hostnames))->smtp_open = (unsigned char)0;
1050                   (*(hosts + hostnames))->fatal = (unsigned char)0;
1051                   (*(hosts + hostnames))->fatal_error = (unsigned char)0;
1052                   tmp___12 = strlen((char const   *)(hostnamet));
1053                   tmp___13 = s_malloc((unsigned long )((tmp___12 + 1U) * sizeof(char )));
1054                   (*(hosts + hostnames))->ip_address = (char *)tmp___13;
1055                   tmp___14 = strlen((char const   *)(hostnamet));
1056                   strncpy((char * __restrict  )(*(hosts + hostnames))->ip_address,
1057                           (char const   * __restrict  )(hostnamet), tmp___14);
1058                   tmp___15 = strlen((char const   *)(hostnamet));
1059                   *((*(hosts + hostnames))->ip_address + tmp___15) = (char )'\000';
1060                   if (f.debug) {
1061                     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Hostname == %s",
1062                             (*(hosts + hostnames))->ip_address);
1063                   }
1064                   hostnames ++;
1065                   (startc[i + 3]) ++;
1066                 }
1067                 startc[i + 3] = tstartc[i + 3];
1068                 endc[i + 3] = tendc[i + 3];
1069                 (startc[i + 2]) ++;
1070               }
1071               startc[i + 2] = tstartc[i + 2];
1072               endc[i + 2] = tendc[i + 2];
1073               (startc[i + 1]) ++;
1074             }
1075             startc[i + 1] = tstartc[i + 1];
1076             endc[i + 1] = tendc[i + 1];
1077             (startc[i]) ++;
1078           }
1079           i ++;
1080         }
1081         if (last) {
1082           goto END;
1083         }
1084         if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1085           free((void *)iprange2);
1086           iprange2 = (char *)((void *)0);
1087         }
1088         strncpy((char * __restrict  )(buf), (char const   * __restrict  )t, 8192U);
1089         t = p;
1090         i = 0;
1091       }
1092     }
1093     if (t) {
1094       if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1095         free((void *)iprange2);
1096         iprange2 = (char *)((void *)0);
1097       }
1098       strncpy((char * __restrict  )(buf), (char const   * __restrict  )t, 8192U);
1099       t = p;
1100       i = 0;
1101       last = 1;
1102       goto GETIP;
1103     }
1104   }
1105   END: 
1106   if ((unsigned int )iprange2 != (unsigned int )((void *)0)) {
1107     free((void *)iprange2);
1108     iprange2 = (char *)((void *)0);
1109   }
1110   return (0);
1111 }
1112 }
1113 int parse_config(char *configfile ) 
1114 { FILE *fd ;
1115   int i ;
1116   int nolines ;
1117   char *buf1 ;
1118   char buf2[3][250] ;
1119   char c ;
1120   int tmp ;
1121   void *tmp___0 ;
1122   void *tmp___1 ;
1123   char *tmp___2 ;
1124   char *tmp___3 ;
1125   char *tmp___4 ;
1126   void *tmp___5 ;
1127   size_t tmp___6 ;
1128   void *tmp___7 ;
1129   size_t tmp___8 ;
1130   size_t tmp___9 ;
1131   size_t tmp___10 ;
1132   void *tmp___11 ;
1133   size_t tmp___12 ;
1134   size_t tmp___13 ;
1135   size_t tmp___14 ;
1136   void *tmp___15 ;
1137   size_t tmp___16 ;
1138   size_t tmp___17 ;
1139   int tmp___18 ;
1140   char *tmp___19 ;
1141 
1142   {
1143   i = 0;
1144   nolines = 0;
1145   fd = fopen((char const   * __restrict  )configfile, (char const   * __restrict  )"r");
1146   if ((unsigned int )fd == (unsigned int )((void *)0)) {
1147     fatal((char *)"Unable to open config file \"%s\"\n", configfile);
1148   }
1149   while (1) {
1150     tmp = fgetc(fd);
1151     c = (char )tmp;
1152     if (! ((int )c != -1)) {
1153       break;
1154     }
1155     if ((int )c == 10) {
1156       nolines ++;
1157     }
1158   }
1159   nolines ++;
1160   rewind(fd);
1161   tmp___0 = s_malloc((unsigned long )((unsigned int )nolines * sizeof(rule **)));
1162   rules = (rule **)tmp___0;
1163   i = 0;
1164   tmp___1 = s_malloc((unsigned long )(352U * sizeof(char )));
1165   buf1 = (char *)tmp___1;
1166   while (1) {
1167     tmp___19 = fgets((char * __restrict  )buf1, 350, (FILE * __restrict  )fd);
1168     if (! tmp___19) {
1169       break;
1170     }
1171     if ((int )*(buf1 + 0) == 35) {
1172       continue;
1173     } else {
1174       if ((int )*(buf1 + 0) == 10) {
1175         continue;
1176       } else {
1177         if ((int )*(buf1 + 0) == 32) {
1178           continue;
1179         }
1180       }
1181     }
1182     tmp___2 = strstr((char const   *)buf1, "--NAME--");
1183     if ((unsigned int )tmp___2 != (unsigned int )((void *)0)) {
1184       goto _L;
1185     } else {
1186       tmp___3 = strstr((char const   *)buf1, "--DOMAIN--");
1187       if ((unsigned int )tmp___3 != (unsigned int )((void *)0)) {
1188         _L: /* CIL Label */ 
1189         if (! f.send_email) {
1190           fatal((char *)"You can only use the --NAME-- and --DOMAIN-- macro\'s if you supply the -b (email_address) option");
1191         }
1192         f.got_name_macro = (unsigned char)1;
1193       }
1194     }
1195     if (! f.resolve_hostnames) {
1196       tmp___4 = strstr((char const   *)buf1, "--HOSTNAME--");
1197       if ((unsigned int )tmp___4 != (unsigned int )((void *)0)) {
1198         fatal((char *)"You can only use the --HOSTNAME-- macro\'s in the configuration file\nif you specify the -n option on the command line or set RESOLVEDOMAINS:Yes in the auto config file\n");
1199       }
1200     }
1201     tmp___18 = sscanf((char const   * __restrict  )buf1, (char const   * __restrict  )"%240s%240s%240s",
1202                       buf2[0], buf2[1], buf2[2]);
1203     if (tmp___18 == 3) {
1204       tmp___5 = s_malloc((unsigned long )sizeof(rule *));
1205       *(rules + i) = (rule *)tmp___5;
1206       tmp___6 = strlen((char const   *)(buf2[0]));
1207       tmp___7 = s_malloc((unsigned long )((tmp___6 + 1U) * sizeof(char )));
1208       (*(rules + i))->helo = (char *)tmp___7;
1209       tmp___8 = strlen((char const   *)(buf2[0]));
1210       strncpy((char * __restrict  )(*(rules + i))->helo, (char const   * __restrict  )(buf2[0]),
1211               tmp___8);
1212       tmp___9 = strlen((char const   *)(buf2[0]));
1213       *((*(rules + i))->helo + tmp___9) = (char )'\000';
1214       debug((char *)"Rules->helo: %s\n", (*(rules + i))->helo);
1215       tmp___10 = strlen((char const   *)(buf2[1]));
1216       tmp___11 = s_malloc((unsigned long )((tmp___10 + 1U) * sizeof(char )));
1217       (*(rules + i))->mail_from = (char *)tmp___11;
1218       tmp___12 = strlen((char const   *)(buf2[1]));
1219       strncpy((char * __restrict  )(*(rules + i))->mail_from, (char const   * __restrict  )(buf2[1]),
1220               tmp___12);
1221       tmp___13 = strlen((char const   *)(buf2[1]));
1222       *((*(rules + i))->mail_from + tmp___13) = (char )'\000';
1223       debug((char *)"Rules->mail_from: %s\n", (*(rules + i))->mail_from);
1224       tmp___14 = strlen((char const   *)(buf2[2]));
1225       tmp___15 = s_malloc((unsigned long )((tmp___14 + 1U) * sizeof(char )));
1226       (*(rules + i))->rcpt_to = (char *)tmp___15;
1227       tmp___16 = strlen((char const   *)(buf2[2]));
1228       strncpy((char * __restrict  )(*(rules + i))->rcpt_to, (char const   * __restrict  )(buf2[2]),
1229               tmp___16);
1230       tmp___17 = strlen((char const   *)(buf2[2]));
1231       *((*(rules + i))->rcpt_to + tmp___17) = (char )'\000';
1232       debug((char *)"Rules->rcpt_to: %s\n", (*(rules + i))->rcpt_to);
1233       o.no_rules = (unsigned short )((int )o.no_rules + 1);
1234       i ++;
1235     }
1236   }
1237   o.no_rules = (unsigned short )((int )o.no_rules - 1);
1238   fclose(fd);
1239   return (0);
1240 }
1241 }
1242 int get_email_file(char *email_file ) 
1243 { FILE *fd ;
1244   char *p ;
1245   char *t ;
1246   char *s ;
1247   char buf[8193] ;
1248   char c ;
1249   char *temp ;
1250   int subject ;
1251   int body ;
1252   int rflag ;
1253   int nflag ;
1254   int size ;
1255   int count ;
1256   int tmp ;
1257   int tmp___0 ;
1258   size_t tmp___1 ;
1259   size_t tmp___2 ;
1260   void *tmp___3 ;
1261   void *tmp___4 ;
1262   char *tmp___5 ;
1263   size_t tmp___6 ;
1264   size_t tmp___7 ;
1265   void *tmp___8 ;
1266   void *tmp___9 ;
1267   char *tmp___10 ;
1268   int tmp___11 ;
1269   char *tmp___12 ;
1270   size_t tmp___13 ;
1271   size_t tmp___14 ;
1272   void *tmp___15 ;
1273   void *tmp___16 ;
1274   char *tmp___17 ;
1275   size_t tmp___18 ;
1276   size_t tmp___19 ;
1277   void *tmp___20 ;
1278   void *tmp___21 ;
1279   char *tmp___22 ;
1280   int tmp___23 ;
1281   char *tmp___24 ;
1282   int tmp___25 ;
1283   int tmp___26 ;
1284   int tmp___27 ;
1285   int tmp___28 ;
1286   int tmp___29 ;
1287   int tmp___30 ;
1288   int tmp___31 ;
1289   int tmp___32 ;
1290   size_t tmp___33 ;
1291   int tmp___34 ;
1292   int tmp___35 ;
1293   size_t tmp___36 ;
1294   char *tmp___37 ;
1295   int tmp___38 ;
1296   int tmp___39 ;
1297   char *tmp___40 ;
1298   int tmp___41 ;
1299   int tmp___42 ;
1300   size_t tmp___43 ;
1301   void *tmp___44 ;
1302   size_t tmp___45 ;
1303   char *tmp___46 ;
1304   size_t tmp___47 ;
1305   void *tmp___48 ;
1306   size_t tmp___49 ;
1307   size_t tmp___50 ;
1308 
1309   {
1310   subject = 0;
1311   body = 0;
1312   rflag = 0;
1313   nflag = 0;
1314   size = 0;
1315   count = 0;
1316   fd = fopen((char const   * __restrict  )email_file, (char const   * __restrict  )"r");
1317   if ((unsigned int )fd == (unsigned int )((void *)0)) {
1318     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nUnable to open the email file [%s] you specified\nDo you wan to continue using the default?\n\nContinue:\t[y] [n]\n:",
1319             email_file);
1320     tmp = fgetc(stdin);
1321     c = (char )tmp;
1322     if ((int )c == 121) {
1323       f.got_email = (unsigned char)0;
1324       return (1);
1325     } else {
1326       tmp___0 = fgetc(stdin);
1327       c = (char )tmp___0;
1328       if ((int )c == 89) {
1329         f.got_email = (unsigned char)0;
1330         return (1);
1331       } else {
1332         exit(1);
1333       }
1334     }
1335   }
1336   while (1) {
1337     tmp___12 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
1338     if (! tmp___12) {
1339       break;
1340     }
1341     tmp___11 = strncmp((char const   *)(buf), "SUBJECT:", 8U);
1342     if (! tmp___11) {
1343       subject = 1;
1344       p = buf + 8;
1345       if ((int )*p != 0) {
1346         if (f.debug) {
1347           fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: email subject == [%s]\n",
1348                   p);
1349         }
1350         tmp___1 = strlen((char const   *)p);
1351         size = (int )tmp___1;
1352         t = strstr((char const   *)p, "ENDSUBJECT");
1353         if ((unsigned int )t != (unsigned int )((void *)0)) {
1354           *t = (char )'\000';
1355           tmp___2 = strlen((char const   *)p);
1356           size = (int )tmp___2;
1357           tmp___3 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1358           o.email_subject = (char *)tmp___3;
1359           strncpy((char * __restrict  )o.email_subject, (char const   * __restrict  )p,
1360                   (unsigned int )size);
1361           *(o.email_subject + size) = (char )'\000';
1362           break;
1363         }
1364         tmp___4 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1365         o.email_subject = (char *)tmp___4;
1366         strncpy((char * __restrict  )o.email_subject, (char const   * __restrict  )p,
1367                 (unsigned int )size);
1368         *(o.email_subject + size) = (char )'\000';
1369       }
1370       while (1) {
1371         tmp___5 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
1372         if ((unsigned int )tmp___5 == (unsigned int )((void *)0)) {
1373           subject = 0;
1374           break;
1375         }
1376         tmp___6 = strlen((char const   *)(buf));
1377         size = (int )((size_t )size + tmp___6);
1378         if (f.debug) {
1379           fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: email subject == [%s]\r\n",
1380                   buf);
1381         }
1382         t = strstr((char const   *)(buf), "ENDSUBJECT");
1383         if ((unsigned int )t != (unsigned int )((void *)0)) {
1384           *t = (char )'\000';
1385           tmp___7 = strlen((char const   *)(buf));
1386           size = (int )((size_t )size + tmp___7);
1387           tmp___8 = realloc((void *)o.email_subject, (unsigned int )(size + 2) * sizeof(char ));
1388           o.email_subject = (char *)tmp___8;
1389           if ((unsigned int )o.email_subject == (unsigned int )((void *)0)) {
1390             fatal((char *)"Realloc Error\n");
1391           }
1392           strncat((char * __restrict  )o.email_subject, (char const   * __restrict  )(buf),
1393                   (unsigned int )size);
1394           *(o.email + size) = (char )'\000';
1395           break;
1396         }
1397         tmp___9 = realloc((void *)o.email_subject, (unsigned int )(size + 1) * sizeof(char ));
1398         o.email_subject = (char *)tmp___9;
1399         if ((unsigned int )o.email_subject == (unsigned int )((void *)0)) {
1400           fatal((char *)"Realloc Error\n");
1401         }
1402         strncat((char * __restrict  )o.email_subject, (char const   * __restrict  )(buf),
1403                 (unsigned int )size);
1404         *(o.email + size) = (char )'\000';
1405         tmp___10 = strstr((char const   *)(buf), "ENDSUBJECT");
1406         if (! ((unsigned int )tmp___10 == (unsigned int )((void *)0))) {
1407           break;
1408         }
1409       }
1410     }
1411   }
1412   rewind(fd);
1413   while (1) {
1414     tmp___24 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
1415     if (! tmp___24) {
1416       break;
1417     }
1418     tmp___23 = strncmp((char const   *)(buf), "BODY:", 5U);
1419     if (! tmp___23) {
1420       body = 1;
1421       p = buf + 5;
1422       if ((int )*p != 0) {
1423         if (f.debug) {
1424           fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: email body == [%s]\n",
1425                   p);
1426         }
1427         tmp___13 = strlen((char const   *)p);
1428         size = (int )tmp___13;
1429         t = strstr((char const   *)(buf), "ENDBODY");
1430         if ((unsigned int )t != (unsigned int )((void *)0)) {
1431           *t = (char )'\000';
1432           tmp___14 = strlen((char const   *)(buf));
1433           size = (int )tmp___14;
1434           tmp___15 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1435           o.email = (char *)tmp___15;
1436           strncpy((char * __restrict  )o.email, (char const   * __restrict  )p, (unsigned int )size);
1437           *(o.email + size) = (char )'\000';
1438           break;
1439         }
1440         tmp___16 = s_malloc((unsigned long )((unsigned int )(size + 1) * sizeof(char )));
1441         o.email = (char *)tmp___16;
1442         strncpy((char * __restrict  )o.email, (char const   * __restrict  )p, (unsigned int )size);
1443         *(o.email + size) = (char )'\000';
1444       }
1445       while (1) {
1446         tmp___17 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
1447         if ((unsigned int )tmp___17 == (unsigned int )((void *)0)) {
1448           body = 0;
1449           break;
1450         }
1451         tmp___18 = strlen((char const   *)(buf));
1452         size = (int )((size_t )size + tmp___18);
1453         if (f.debug) {
1454           fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: email body == [%s]\n",
1455                   buf);
1456         }
1457         t = strstr((char const   *)(buf), "ENDBODY");
1458         if ((unsigned int )t != (unsigned int )((void *)0)) {
1459           *t = (char )'\000';
1460           tmp___19 = strlen((char const   *)(buf));
1461           size = (int )((size_t )size + tmp___19);
1462           tmp___20 = realloc((void *)o.email, (unsigned int )(size + 1) * sizeof(char ));
1463           o.email = (char *)tmp___20;
1464           if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1465             fatal((char *)"Realloc Error\n");
1466           }
1467           strncat((char * __restrict  )o.email, (char const   * __restrict  )(buf),
1468                   (unsigned int )size);
1469           *(o.email + size) = (char )'\000';
1470           break;
1471         }
1472         tmp___21 = realloc((void *)o.email, (unsigned int )(size + 1) * sizeof(char ));
1473         o.email = (char *)tmp___21;
1474         if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1475           fatal((char *)"Realloc Error\n");
1476         }
1477         strncat((char * __restrict  )o.email, (char const   * __restrict  )(buf),
1478                 (unsigned int )size);
1479         *(o.email + size) = (char )'\000';
1480         tmp___22 = strstr((char const   *)(buf), "ENDBODY");
1481         if (! ((unsigned int )tmp___22 == (unsigned int )((void *)0))) {
1482           break;
1483         }
1484       }
1485     }
1486   }
1487   if (! body) {
1488     goto _L;
1489   } else {
1490     if (! subject) {
1491       _L: /* CIL Label */ 
1492       fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nEmail file is in the wrong format\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1493       tmp___25 = fgetc(stdin);
1494       c = (char )tmp___25;
1495       if ((int )c == 121) {
1496         f.got_email = (unsigned char)0;
1497         return (1);
1498       } else {
1499         tmp___26 = fgetc(stdin);
1500         c = (char )tmp___26;
1501         if ((int )c == 89) {
1502           f.got_email = (unsigned char)0;
1503           return (1);
1504         } else {
1505           exit(1);
1506         }
1507       }
1508     }
1509   }
1510   if (! o.email) {
1511     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThe body of your email is empty\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1512     tmp___27 = fgetc(stdin);
1513     c = (char )tmp___27;
1514     if ((int )c == 121) {
1515       f.got_email = (unsigned char)0;
1516       return (1);
1517     } else {
1518       tmp___28 = fgetc(stdin);
1519       c = (char )tmp___28;
1520       if ((int )c == 89) {
1521         f.got_email = (unsigned char)0;
1522         return (1);
1523       } else {
1524         exit(1);
1525       }
1526     }
1527   }
1528   if (! o.email_subject) {
1529     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThe subject of your email is empty\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1530     tmp___29 = fgetc(stdin);
1531     c = (char )tmp___29;
1532     if ((int )c == 121) {
1533       f.got_email = (unsigned char)0;
1534       return (1);
1535     } else {
1536       tmp___30 = fgetc(stdin);
1537       c = (char )tmp___30;
1538       if ((int )c == 89) {
1539         f.got_email = (unsigned char)0;
1540         return (1);
1541       } else {
1542         exit(1);
1543       }
1544     }
1545   }
1546   tmp___33 = strlen((char const   *)o.email);
1547   if (tmp___33 < 2U) {
1548     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThe body of your email contains 1 character\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1549     tmp___31 = fgetc(stdin);
1550     c = (char )tmp___31;
1551     if ((int )c == 121) {
1552       f.got_email = (unsigned char)0;
1553       return (1);
1554     } else {
1555       tmp___32 = fgetc(stdin);
1556       c = (char )tmp___32;
1557       if ((int )c == 89) {
1558         f.got_email = (unsigned char)0;
1559         return (1);
1560       } else {
1561         exit(1);
1562       }
1563     }
1564   }
1565   tmp___36 = strlen((char const   *)o.email_subject);
1566   if (tmp___36 < 2U) {
1567     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThe subject of your email contains 1 character\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1568     tmp___34 = fgetc(stdin);
1569     c = (char )tmp___34;
1570     if ((int )c == 121) {
1571       f.got_email = (unsigned char)0;
1572       return (1);
1573     } else {
1574       tmp___35 = fgetc(stdin);
1575       c = (char )tmp___35;
1576       if ((int )c == 89) {
1577         f.got_email = (unsigned char)0;
1578         return (1);
1579       } else {
1580         exit(1);
1581       }
1582     }
1583   }
1584   p = o.email_subject;
1585   while (1) {
1586     if ((int )*p == 10) {
1587       nflag ++;
1588     }
1589     if ((int )*p == 13) {
1590       rflag ++;
1591     }
1592     tmp___37 = p;
1593     p ++;
1594     if (! ((int )*tmp___37 != 0)) {
1595       break;
1596     }
1597   }
1598   if (nflag > 1) {
1599     goto _L___2;
1600   } else {
1601     if (rflag > 1) {
1602       _L___2: /* CIL Label */ 
1603       fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThere is more than one line feed in the email subject\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1604       tmp___38 = fgetc(stdin);
1605       c = (char )tmp___38;
1606       if ((int )c == 121) {
1607         f.got_email = (unsigned char)0;
1608         return (1);
1609       } else {
1610         tmp___39 = fgetc(stdin);
1611         c = (char )tmp___39;
1612         if ((int )c == 89) {
1613           f.got_email = (unsigned char)0;
1614           return (1);
1615         } else {
1616           exit(1);
1617         }
1618       }
1619     } else {
1620       if (nflag == 0) {
1621         if (rflag == 0) {
1622           strcat((char * __restrict  )o.email_subject, (char const   * __restrict  )"\r\n");
1623         } else {
1624           goto _L___1;
1625         }
1626       } else {
1627         _L___1: /* CIL Label */ 
1628         if (nflag == 0) {
1629           if (rflag == 1) {
1630             strcat((char * __restrict  )o.email_subject, (char const   * __restrict  )"\r");
1631           } else {
1632             goto _L___0;
1633           }
1634         } else {
1635           _L___0: /* CIL Label */ 
1636           if (nflag == 1) {
1637             if (rflag == 1) {
1638               nflag = 0;
1639               rflag = 0;
1640               p = o.email_subject;
1641               while (1) {
1642                 if ((int )*p == 10) {
1643                   s = p;
1644                   *s = (char )((int )*s - 1);
1645                   if (*s == 13) {
1646                     rflag ++;
1647                   }
1648                 }
1649                 tmp___40 = p;
1650                 p ++;
1651                 if (! ((int )*tmp___40 != 0)) {
1652                   break;
1653                 }
1654               }
1655               if (! rflag) {
1656                 fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n\nERROR:\n\nThere is supurious carraige return in the subject\nDo you want to continue using the default?\n\nContinue\t[y] [n]\t:");
1657                 tmp___41 = fgetc(stdin);
1658                 c = (char )tmp___41;
1659                 if ((int )c == 121) {
1660                   f.got_email = (unsigned char)0;
1661                   return (1);
1662                 } else {
1663                   tmp___42 = fgetc(stdin);
1664                   c = (char )tmp___42;
1665                   if ((int )c == 89) {
1666                     f.got_email = (unsigned char)0;
1667                     return (1);
1668                   } else {
1669                     exit(1);
1670                   }
1671                 }
1672               }
1673             }
1674           }
1675         }
1676       }
1677     }
1678   }
1679   tmp___43 = strlen((char const   *)o.email);
1680   tmp___44 = s_malloc((unsigned long )((tmp___43 + 1U) * sizeof(char )));
1681   temp = (char *)tmp___44;
1682   tmp___45 = strlen((char const   *)o.email);
1683   strncpy((char * __restrict  )temp, (char const   * __restrict  )o.email, tmp___45);
1684   p = temp;
1685   rflag = 0;
1686   count = 0;
1687   memset((void *)(buf), 0, 8192U);
1688   while (1) {
1689     if ((int )*p == 10) {
1690       if (! count) {
1691         strncat((char * __restrict  )(buf), (char const   * __restrict  )"\r\n", 8192U);
1692         rflag ++;
1693         rflag ++;
1694         goto __Cont;
1695       }
1696       s = p;
1697       *s = (char )((int )*s - 1);
1698       if (*s != 13) {
1699         strncat((char * __restrict  )(buf), (char const   * __restrict  )"\r\n", 8192U);
1700         rflag ++;
1701         rflag ++;
1702         goto __Cont;
1703       }
1704     }
1705     if ((int )*p == 0) {
1706       break;
1707     }
1708     buf[rflag] = *p;
1709     count ++;
1710     rflag ++;
1711     __Cont: /* CIL Label */ 
1712     tmp___46 = p;
1713     p ++;
1714     if (! ((int )*tmp___46 != 0)) {
1715       break;
1716     }
1717   }
1718   tmp___47 = strlen((char const   *)(buf));
1719   tmp___48 = realloc((void *)o.email, (tmp___47 + 1U) * sizeof(char ));
1720   o.email = (char *)tmp___48;
1721   if ((unsigned int )o.email == (unsigned int )((void *)0)) {
1722     fatal((char *)"Realloc Error\n");
1723   }
1724   tmp___49 = strlen((char const   *)(buf));
1725   strncpy((char * __restrict  )o.email, (char const   * __restrict  )(buf), tmp___49);
1726   tmp___50 = strlen((char const   *)(buf));
1727   *(o.email + tmp___50) = (char )'\000';
1728   if (f.debug) {
1729     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: end subject == [%s]\n",
1730             o.email_subject);
1731     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"DEBUG: end body == [%s]\n",
1732             o.email);
1733   }
1734   free((void *)temp);
1735   return (0);
1736 }
1737 }
1738 int parse_aconfig(void) 
1739 { FILE *fd ;
1740   char buf[8192] ;
1741   char *p ;
1742   size_t tmp ;
1743   void *tmp___0 ;
1744   size_t tmp___1 ;
1745   char *tmp___2 ;
1746   size_t tmp___3 ;
1747   size_t tmp___4 ;
1748   void *tmp___5 ;
1749   size_t tmp___6 ;
1750   char *tmp___7 ;
1751   size_t tmp___8 ;
1752   size_t tmp___9 ;
1753   void *tmp___10 ;
1754   size_t tmp___11 ;
1755   char *tmp___12 ;
1756   size_t tmp___13 ;
1757   int tmp___14 ;
1758   size_t tmp___15 ;
1759   void *tmp___16 ;
1760   size_t tmp___17 ;
1761   char *tmp___18 ;
1762   size_t tmp___19 ;
1763   size_t tmp___20 ;
1764   void *tmp___21 ;
1765   size_t tmp___22 ;
1766   char *tmp___23 ;
1767   size_t tmp___24 ;
1768   size_t tmp___25 ;
1769   void *tmp___26 ;
1770   size_t tmp___27 ;
1771   char *tmp___28 ;
1772   size_t tmp___29 ;
1773   size_t tmp___30 ;
1774   void *tmp___31 ;
1775   size_t tmp___32 ;
1776   char *tmp___33 ;
1777   size_t tmp___34 ;
1778   int tmp___35 ;
1779   int tmp___36 ;
1780   int tmp___37 ;
1781   int tmp___38 ;
1782   int tmp___39 ;
1783   int tmp___40 ;
1784   int tmp___41 ;
1785   int tmp___42 ;
1786   int tmp___43 ;
1787   size_t tmp___44 ;
1788   void *tmp___45 ;
1789   size_t tmp___46 ;
1790   char *tmp___47 ;
1791   size_t tmp___48 ;
1792   int tmp___49 ;
1793   int tmp___50 ;
1794   int tmp___51 ;
1795   int tmp___52 ;
1796   int tmp___53 ;
1797   int tmp___54 ;
1798   int tmp___55 ;
1799   int tmp___56 ;
1800   int tmp___57 ;
1801   int tmp___58 ;
1802   int tmp___59 ;
1803   int tmp___60 ;
1804   int tmp___61 ;
1805   int tmp___62 ;
1806   int tmp___63 ;
1807   int tmp___64 ;
1808   int tmp___65 ;
1809   int tmp___66 ;
1810   char *tmp___67 ;
1811 
1812   {
1813   fd = fopen((char const   * __restrict  )o.auto_config_file, (char const   * __restrict  )"r");
1814   if ((unsigned int )fd == (unsigned int )((void *)0)) {
1815     fatal((char *)"Unable to open auto config file %s\n\n", o.auto_config_file);
1816   }
1817   while (1) {
1818     tmp___67 = fgets((char * __restrict  )(buf), 8191, (FILE * __restrict  )fd);
1819     if (! ((unsigned int )tmp___67 != (unsigned int )((void *)0))) {
1820       break;
1821     }
1822     if ((int )buf[0] == 35) {
1823       continue;
1824     } else {
1825       if ((int )buf[1] == 35) {
1826         continue;
1827       } else {
1828         if ((int )buf[0] == 32) {
1829           continue;
1830         } else {
1831           if ((int )buf[0] == 10) {
1832             continue;
1833           }
1834         }
1835       }
1836     }
1837     tmp___66 = strncmp((char const   *)(buf), "IPRANGE:", 8U);
1838     if (tmp___66) {
1839       tmp___65 = strncmp((char const   *)(buf), "CONFIGFILE:", 11U);
1840       if (tmp___65) {
1841         tmp___64 = strncmp((char const   *)(buf), "WEBPAGE:", 8U);
1842         if (tmp___64) {
1843           tmp___63 = strncmp((char const   *)(buf), "THREADS:", 8U);
1844           if (tmp___63) {
1845             tmp___62 = strncmp((char const   *)(buf), "IPLIST:", 7U);
1846             if (tmp___62) {
1847               tmp___61 = strncmp((char const   *)(buf), "RELAYEMAIL:", 11U);
1848               if (tmp___61) {
1849                 tmp___60 = strncmp((char const   *)(buf), "MBOXMAILBOX:", 12U);
1850                 if (tmp___60) {
1851                   tmp___59 = strncmp((char const   *)(buf), "MAILDIRMAILBOX:", 15U);
1852                   if (tmp___59) {
1853                     tmp___58 = strncmp((char const   *)(buf), "ALLSCANS:", 9U);
1854                     if (tmp___58) {
1855                       tmp___57 = strncmp((char const   *)(buf), "RESOLVEDOMAINS:",
1856                                          15U);
1857                       if (tmp___57) {
1858                         tmp___56 = strncmp((char const   *)(buf), "CONNECTTIMEOUT:",
1859                                            15U);
1860                         if (tmp___56) {
1861                           tmp___55 = strncmp((char const   *)(buf), "READTIMEOUT:",
1862                                              12U);
1863                           if (tmp___55) {
1864                             tmp___54 = strncmp((char const   *)(buf), "WAITFORMAILTIME:",
1865                                                16U);
1866                             if (tmp___54) {
1867                               tmp___53 = strncmp((char const   *)(buf), "EMAILTEMPLATE:",
1868                                                  14U);
1869                               if (tmp___53) {
1870                                 tmp___52 = strncmp((char const   *)(buf), "DISPLAYONLYIPS:",
1871                                                    15U);
1872                                 if (tmp___52) {
1873                                   fatal((char *)"Detected error \"%s\" in configuration file...\n",
1874                                         buf);
1875                                 } else {
1876                                   p = & buf[15];
1877                                   tmp___49 = strncmp((char const   *)p, "Yes", 3U);
1878                                   if (tmp___49) {
1879                                     tmp___50 = strncmp((char const   *)p, "YES", 3U);
1880                                     if (tmp___50) {
1881                                       tmp___51 = strncmp((char const   *)p, "yes",
1882                                                          3U);
1883                                       if (! tmp___51) {
1884                                         f.display_only_ips = (unsigned char)1;
1885                                       }
1886                                     } else {
1887                                       f.display_only_ips = (unsigned char)1;
1888                                     }
1889                                   } else {
1890                                     f.display_only_ips = (unsigned char)1;
1891                                   }
1892                                 }
1893                               } else {
1894                                 if (! f.got_email) {
1895                                   p = & buf[14];
1896                                   f.got_email = (unsigned char)1;
1897                                   tmp___44 = strlen((char const   *)p);
1898                                   tmp___45 = s_malloc((unsigned long )((tmp___44 + 1U) * sizeof(char )));
1899                                   o.email_template = (char *)tmp___45;
1900                                   tmp___46 = strlen((char const   *)p);
1901                                   tmp___47 = chomp(p);
1902                                   strncpy((char * __restrict  )o.email_template, (char const   * __restrict  )tmp___47,
1903                                           tmp___46);
1904                                   tmp___48 = strlen((char const   *)p);
1905                                   *(o.email_template + tmp___48) = (char )'\000';
1906                                 }
1907                               }
1908                             } else {
1909                               if (! o.m_timeout == 60) {
1910                                 p = & buf[16];
1911                                 tmp___43 = atoi((char const   *)p);
1912                                 o.m_timeout = (unsigned short )tmp___43;
1913                               }
1914                             }
1915                           } else {
1916                             if (! o.r_timeout) {
1917                               p = & buf[12];
1918                               tmp___42 = atoi((char const   *)p);
1919                               o.r_timeout = (unsigned short )tmp___42;
1920                             }
1921                           }
1922                         } else {
1923                           if (! o.c_timeout) {
1924                             p = & buf[15];
1925                             tmp___41 = atoi((char const   *)p);
1926                             o.c_timeout = (unsigned short )tmp___41;
1927                           }
1928                         }
1929                       } else {
1930                         p = & buf[15];
1931                         tmp___38 = strncmp((char const   *)p, "Yes", 3U);
1932                         if (tmp___38) {
1933                           tmp___39 = strncmp((char const   *)p, "YES", 3U);
1934                           if (tmp___39) {
1935                             tmp___40 = strncmp((char const   *)p, "yes", 3U);
1936                             if (! tmp___40) {
1937                               f.resolve_hostnames = (unsigned char)1;
1938                             }
1939                           } else {
1940                             f.resolve_hostnames = (unsigned char)1;
1941                           }
1942                         } else {
1943                           f.resolve_hostnames = (unsigned char)1;
1944                         }
1945                       }
1946                     } else {
1947                       p = & buf[9];
1948                       tmp___35 = strncmp((char const   *)p, "Yes", 3U);
1949                       if (tmp___35) {
1950                         tmp___36 = strncmp((char const   *)p, "YES", 3U);
1951                         if (tmp___36) {
1952                           tmp___37 = strncmp((char const   *)p, "yes", 3U);
1953                           if (! tmp___37) {
1954                             f.display_all = (unsigned char)1;
1955                           }
1956                         } else {
1957                           f.display_all = (unsigned char)1;
1958                         }
1959                       } else {
1960                         f.display_all = (unsigned char)1;
1961                       }
1962                     }
1963                   } else {
1964                     if (! f.check_mailbox) {
1965                       p = & buf[15];
1966                       f.check_mailbox = (unsigned char)1;
1967                       f.maildir = (unsigned char)1;
1968                       tmp___30 = strlen((char const   *)p);
1969                       tmp___31 = s_malloc((unsigned long )((tmp___30 + 1U) * sizeof(char )));
1970                       o.mailbox = (char *)tmp___31;
1971                       tmp___32 = strlen((char const   *)p);
1972                       tmp___33 = chomp(p);
1973                       strncpy((char * __restrict  )o.mailbox, (char const   * __restrict  )tmp___33,
1974                               tmp___32);
1975                       tmp___34 = strlen((char const   *)p);
1976                       *(o.mailbox + tmp___34) = (char )'\000';
1977                     }
1978                     f.maildir = (unsigned char)1;
1979                   }
1980                 } else {
1981                   if (! f.check_mailbox) {
1982                     p = & buf[12];
1983                     f.check_mailbox = (unsigned char)1;
1984                     f.mbox = (unsigned char)1;
1985                     tmp___25 = strlen((char const   *)p);
1986                     tmp___26 = s_malloc((unsigned long )((tmp___25 + 1U) * sizeof(char )));
1987                     o.mailbox = (char *)tmp___26;
1988                     tmp___27 = strlen((char const   *)p);
1989                     tmp___28 = chomp(p);
1990                     strncpy((char * __restrict  )o.mailbox, (char const   * __restrict  )tmp___28,
1991                             tmp___27);
1992                     tmp___29 = strlen((char const   *)p);
1993                     *(o.mailbox + tmp___29) = (char )'\000';
1994                   }
1995                   f.mbox = (unsigned char)1;
1996                 }
1997               } else {
1998                 if (! f.send_email) {
1999                   p = & buf[11];
2000                   f.send_email = (unsigned char)1;
2001                   tmp___20 = strlen((char const   *)p);
2002                   tmp___21 = s_malloc((unsigned long )((tmp___20 + 1U) * sizeof(char )));
2003                   o.email_address = (char *)tmp___21;
2004                   tmp___22 = strlen((char const   *)p);
2005                   tmp___23 = chomp(p);
2006                   strncpy((char * __restrict  )o.email_address, (char const   * __restrict  )tmp___23,
2007                           tmp___22);
2008                   tmp___24 = strlen((char const   *)p);
2009                   *(o.email_address + tmp___24) = (char )'\000';
2010                 }
2011               }
2012             } else {
2013               if (! f.ip_list) {
2014                 p = & buf[7];
2015                 if (f.ip_range) {
2016                   fatal((char *)"IPLIST and IPRANGE can\'t both be define in the config file\n");
2017                 }
2018                 f.ip_list = (unsigned char)1;
2019                 tmp___15 = strlen((char const   *)p);
2020                 tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char ) + 1U));
2021                 o.ip_list = (char *)tmp___16;
2022                 tmp___17 = strlen((char const   *)p);
2023                 tmp___18 = chomp(p);
2024                 strncpy((char * __restrict  )o.ip_list, (char const   * __restrict  )tmp___18,
2025                         tmp___17);
2026                 tmp___19 = strlen((char const   *)p);
2027                 *(o.ip_list + tmp___19) = (char )'\000';
2028               }
2029             }
2030           } else {
2031             if (! f.threads) {
2032               p = & buf[8];
2033               tmp___14 = atoi((char const   *)p);
2034               o.number_of_threads = (unsigned short )tmp___14;
2035             }
2036           }
2037         } else {
2038           if (! f.output_html) {
2039             p = & buf[8];
2040             f.output_html = (unsigned char)1;
2041             tmp___9 = strlen((char const   *)p);
2042             tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
2043             o.html_file = (char *)tmp___10;
2044             tmp___11 = strlen((char const   *)p);
2045             tmp___12 = chomp(p);
2046             strncpy((char * __restrict  )o.html_file, (char const   * __restrict  )tmp___12,
2047                     tmp___11);
2048             tmp___13 = strlen((char const   *)p);
2049             *(o.html_file + tmp___13) = (char )'\000';
2050           }
2051         }
2052       } else {
2053         if (! f.config_file) {
2054           p = & buf[11];
2055           f.config_file = (unsigned char)1;
2056           tmp___4 = strlen((char const   *)p);
2057           tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
2058           o.config_file = (char *)tmp___5;
2059           tmp___6 = strlen((char const   *)p);
2060           tmp___7 = chomp(p);
2061           strncpy((char * __restrict  )o.config_file, (char const   * __restrict  )tmp___7,
2062                   tmp___6);
2063           tmp___8 = strlen((char const   *)p);
2064           *(o.config_file + tmp___8) = (char )'\000';
2065         }
2066       }
2067     } else {
2068       if (! f.ip_range) {
2069         p = & buf[8];
2070         f.ip_range = (unsigned char)1;
2071         tmp = strlen((char const   *)p);
2072         tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2073         o.ip_range = (char *)tmp___0;
2074         tmp___1 = strlen((char const   *)p);
2075         tmp___2 = chomp(p);
2076         strncpy((char * __restrict  )o.ip_range, (char const   * __restrict  )tmp___2,
2077                 tmp___1);
2078         tmp___3 = strlen((char const   *)p);
2079         *(o.ip_range + tmp___3) = (char )'\000';
2080       }
2081     }
2082   }
2083   return (0);
2084 }
2085 }
2086 #pragma merger(0,"/tmp/cil-yhUmpuTR.i","-Wall,-g,-pthread")
2087 char *get_sender_address(char *string ) ;
2088 int is_mbox_seperator(char *string ) ;
2089 extern DIR *opendir(char const   *__name )  __attribute__((__nonnull__(1))) ;
2090 extern int closedir(DIR *__dirp )  __attribute__((__nonnull__(1))) ;
2091 extern struct dirent *readdir(DIR *__dirp )  __attribute__((__nonnull__(1))) ;
2092 int parse_mbox(void) 
2093 { FILE *fd ;
2094   char buf[8193] ;
2095   char temp[8193] ;
2096   char *email_address ;
2097   int tmp ;
2098   int tmp___0 ;
2099   char *tmp___1 ;
2100   int tmp___2 ;
2101   char *tmp___3 ;
2102 
2103   {
2104   email_address = (char *)((void *)0);
2105   fd = fopen((char const   * __restrict  )o.mailbox, (char const   * __restrict  )"r");
2106   if ((unsigned int )fd == (unsigned int )((void *)0)) {
2107     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Unable to open %s for reading\n",
2108             o.mailbox);
2109     exit(1);
2110   }
2111   while (1) {
2112     tmp___3 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
2113     if (! ((unsigned int )tmp___3 != (unsigned int )((void *)0))) {
2114       break;
2115     }
2116     START: 
2117     strncpy((char * __restrict  )(temp), (char const   * __restrict  )(buf), 8192U);
2118     temp[8192] = (char )'\000';
2119     tmp___2 = is_mbox_seperator(temp);
2120     if (tmp___2) {
2121       strncpy((char * __restrict  )(temp), (char const   * __restrict  )(buf), 8192U);
2122       temp[8192] = (char )'\000';
2123       email_address = get_sender_address(temp);
2124       if ((unsigned int )email_address == (unsigned int )((void *)0)) {
2125         continue;
2126       }
2127       while (1) {
2128         tmp___1 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
2129         if (! ((unsigned int )tmp___1 != (unsigned int )((void *)0))) {
2130           break;
2131         }
2132         tmp = strncmp((char const   *)(buf), ":SmtpRCKey:", 11U);
2133         if (! tmp) {
2134           check_mail_file(email_address, buf);
2135         }
2136         strncpy((char * __restrict  )(temp), (char const   * __restrict  )(buf), 8192U);
2137         temp[8192] = (char )'\000';
2138         tmp___0 = is_mbox_seperator(temp);
2139         if (tmp___0) {
2140           goto START;
2141         }
2142       }
2143     }
2144   }
2145   fclose(fd);
2146   return (0);
2147 }
2148 }
2149 int parse_maildir(void) 
2150 { DIR *dip ;
2151   FILE *fd ;
2152   struct dirent *dit ;
2153   char dir[8193] ;
2154   char buf[8193] ;
2155   char temp[8193] ;
2156   char filename[8193] ;
2157   char *email_address ;
2158   size_t tmp ;
2159   size_t tmp___0 ;
2160   int tmp___1 ;
2161   int tmp___2 ;
2162   char *tmp___3 ;
2163   int tmp___4 ;
2164 
2165   {
2166   email_address = (char *)((void *)0);
2167   tmp = strlen((char const   *)o.mailbox);
2168   if ((int )*(o.mailbox + tmp) == 47) {
2169     snprintf((char * __restrict  )(dir), 8192U, (char const   * __restrict  )"%snew",
2170              o.mailbox);
2171   } else {
2172     snprintf((char * __restrict  )(dir), 8192U, (char const   * __restrict  )"%s/new",
2173              o.mailbox);
2174   }
2175   dir[8192] = (char )'\000';
2176   dip = opendir((char const   *)(dir));
2177   if ((unsigned int )dip == (unsigned int )((void *)0)) {
2178     perror("opendir");
2179     fatal((char *)"error opening maildir folder (%s)", dir);
2180   }
2181   while (1) {
2182     dit = readdir(dip);
2183     if (! ((unsigned int )dit != (unsigned int )((void *)0))) {
2184       break;
2185     }
2186     if ((int )dit->d_name[0] == 46) {
2187       tmp___0 = strlen((char const   *)(dit->d_name));
2188       if (tmp___0 < 3U) {
2189         continue;
2190       }
2191     }
2192     snprintf((char * __restrict  )(filename), 8192U, (char const   * __restrict  )"%s/%s",
2193              dir, dit->d_name);
2194     filename[8192] = (char )'\000';
2195     fd = fopen((char const   * __restrict  )(filename), (char const   * __restrict  )"r");
2196     if ((unsigned int )fd == (unsigned int )((void *)0)) {
2197       fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"Unable to open mailfile (%s) for reading... Skipping\n",
2198               filename);
2199       continue;
2200     }
2201     while (1) {
2202       tmp___3 = fgets((char * __restrict  )(buf), 8192, (FILE * __restrict  )fd);
2203       if (! ((unsigned int )tmp___3 != (unsigned int )((void *)0))) {
2204         break;
2205       }
2206       tmp___1 = strncmp((char const   *)(buf), "From: ", 6U);
2207       if (! tmp___1) {
2208         strncpy((char * __restrict  )(temp), (char const   * __restrict  )(buf), 8192U);
2209         temp[8192] = (char )'\000';
2210         email_address = get_sender_address(temp);
2211         if ((unsigned int )email_address == (unsigned int )((void *)0)) {
2212           continue;
2213         }
2214       }
2215       tmp___2 = strncmp((char const   *)(buf), ":SmtpRCKey:", 11U);
2216       if (! tmp___2) {
2217         check_mail_file(email_address, buf);
2218       }
2219     }
2220   }
2221   tmp___4 = closedir(dip);
2222   if (tmp___4 == -1) {
2223     perror("closedir");
2224     return (0);
2225   }
2226   return (0);
2227 }
2228 }
2229 int parse_popbox(void) 
2230 { 
2231 
2232   {
2233   return (0);
2234 }
2235 }
2236 int is_mbox_seperator(char *string ) 
2237 { char tmp[9][8193] ;
2238   int count ;
2239   char *word ;
2240   int tmp___0 ;
2241 
2242   {
2243   count = 0;
2244   tmp___0 = strncmp((char const   *)string, "From ", 5U);
2245   if (tmp___0) {
2246     return (0);
2247   } else {
2248     word = strtok((char * __restrict  )string, (char const   * __restrict  )" ");
2249     while (word) {
2250       count ++;
2251       if (count < 8) {
2252         strncpy((char * __restrict  )(tmp[count]), (char const   * __restrict  )word,
2253                 8191U);
2254       }
2255       word = strtok((char * __restrict  )((void *)0), (char const   * __restrict  )" ");
2256     }
2257     if (count == 7) {
2258       return (1);
2259     } else {
2260       return (0);
2261     }
2262   }
2263 }
2264 }
2265 char *get_sender_address(char *string ) 
2266 { int count ;
2267   char *word ;
2268   char *address ;
2269   size_t tmp ;
2270   void *tmp___0 ;
2271   size_t tmp___1 ;
2272   size_t tmp___2 ;
2273   size_t tmp___3 ;
2274 
2275   {
2276   count = 0;
2277   address = (char *)((void *)0);
2278   word = strtok((char * __restrict  )string, (char const   * __restrict  )" ");
2279   while (word) {
2280     count ++;
2281     if (count == 2) {
2282       tmp___3 = strlen((char const   *)word);
2283       if (tmp___3 > 5U) {
2284         tmp = strlen((char const   *)word);
2285         tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2286         address = (char *)tmp___0;
2287         tmp___1 = strlen((char const   *)word);
2288         strncpy((char * __restrict  )address, (char const   * __restrict  )word, tmp___1 + 2U);
2289         tmp___2 = strlen((char const   *)word);
2290         *(address + (tmp___2 + 1U)) = (char )'\000';
2291         break;
2292       }
2293     }
2294     word = strtok((char * __restrict  )((void *)0), (char const   * __restrict  )" ");
2295   }
2296   if ((unsigned int )address != (unsigned int )((void *)0)) {
2297     return (address);
2298   } else {
2299     return ((char *)((void *)0));
2300   }
2301 }
2302 }
2303 #pragma merger(0,"/tmp/cil-kzMrYIFm.i","-Wall,-g,-pthread")
2304 extern int usleep(__useconds_t __useconds ) ;
2305 int thread_start(long cur_host ) ;
2306 int cleaner_start(void) ;
2307 extern int nanosleep(struct timespec  const  *__requested_time , struct timespec *__remaining ) ;
2308 extern  __attribute__((__nothrow__)) int pthread_create(pthread_t * __restrict  __newthread ,
2309                                                         pthread_attr_t const   * __restrict  __attr ,
2310                                                         void *(*__start_routine)(void * ) ,
2311                                                         void * __restrict  __arg )  __attribute__((__nonnull__(1,3))) ;
2312 extern int pthread_join(pthread_t __th , void **__thread_return ) ;
2313 extern  __attribute__((__nothrow__)) pthread_t pthread_self(void)  __attribute__((__const__)) ;
2314 extern  __attribute__((__nothrow__)) int pthread_attr_init(pthread_attr_t *__attr )  __attribute__((__nonnull__(1))) ;
2315 extern  __attribute__((__nothrow__)) int pthread_attr_getstacksize(pthread_attr_t const   * __restrict  __attr ,
2316                                                                    size_t * __restrict  __stacksize )  __attribute__((__nonnull__(1,2))) ;
2317 extern  __attribute__((__nothrow__)) int pthread_attr_setstacksize(pthread_attr_t *__attr ,
2318                                                                    size_t __stacksize )  __attribute__((__nonnull__(1))) ;
2319 extern  __attribute__((__nothrow__)) int pthread_mutex_init(pthread_mutex_t *__mutex ,
2320                                                             pthread_mutexattr_t const   *__mutexattr )  __attribute__((__nonnull__(1))) ;
2321 extern  __attribute__((__nothrow__)) int pthread_mutex_lock(pthread_mutex_t *__mutex )  __attribute__((__nonnull__(1))) ;
2322 extern  __attribute__((__nothrow__)) int pthread_mutex_unlock(pthread_mutex_t *__mutex )  __attribute__((__nonnull__(1))) ;
2323 int relay_check(int *sockfd , long cur_host ) ;
2324 pthread_mutex_t main_thread_count_mutex  ;
2325 void start_scan(void) 
2326 { struct timespec tv ;
2327   pthread_t c_tid ;
2328   pthread_attr_t attr ;
2329   unsigned char flag ;
2330   unsigned char res ;
2331   int x ;
2332   int ret ;
2333   size_t stack_size ;
2334   void *tmp ;
2335   int tmp___0 ;
2336   int tmp___1 ;
2337 
2338   {
2339   flag = (unsigned char)0;
2340   res = (unsigned char)0;
2341   x = 0;
2342   ret = 0;
2343   tv.tv_sec = 0L;
2344   tv.tv_nsec = 500000000L;
2345   pthread_mutex_init(& main_thread_count_mutex, (pthread_mutexattr_t const   *)((void *)0));
2346   ret = pthread_attr_getstacksize((pthread_attr_t const   * __restrict  )(& attr),
2347                                   (size_t * __restrict  )(& stack_size));
2348   if (ret != 0) {
2349     fatal((char *)"cannot get stacksize");
2350   }
2351   debug((char *)"\n\nstack size: %d\n", stack_size);
2352   stack_size = 28672U;
2353   ret = pthread_attr_init(& attr);
2354   ret = pthread_attr_setstacksize(& attr, stack_size);
2355   if (ret != 0) {
2356     fatal((char *)"cannot setting stacksize");
2357   }
2358   ret = pthread_attr_getstacksize((pthread_attr_t const   * __restrict  )(& attr),
2359                                   (size_t * __restrict  )(& stack_size));
2360   if (ret != 0) {
2361     fatal((char *)"cannot get stacksize");
2362   }
2363   debug((char *)"\n\nstack size: %d\n", stack_size);
2364   tmp = s_malloc((o.no_hostnames + 1UL) * (unsigned long )sizeof(pthread_t ));
2365   o.tid = (pthread_t *)tmp;
2366   x = 0;
2367   while ((unsigned long )x < o.no_hostnames) {
2368     *(o.tid + x) = 0UL;
2369     x ++;
2370   }
2371   tmp___0 = pthread_create((pthread_t * __restrict  )(& c_tid), (pthread_attr_t const   * __restrict  )(& attr),
2372                            (void *(*)(void * ))((void *)(& cleaner_start)), (void * __restrict  )((void *)0));
2373   if (tmp___0 != 0) {
2374     fatal((char *)"Unable to start cleaner thread");
2375     perror("aa");
2376   }
2377   o.cur_host = 0UL;
2378   while (o.cur_host < o.no_hostnames) {
2379     pthread_mutex_lock(& main_thread_count_mutex);
2380     while ((int )o.cur_threads >= (int )o.number_of_threads) {
2381       pthread_mutex_unlock(& main_thread_count_mutex);
2382       debug((char *)"Sleeping cur child == %d, max child == %d\n", o.cur_threads,
2383             o.number_of_threads);
2384       nanosleep((struct timespec  const  *)(& tv), (struct timespec *)((void *)0));
2385     }
2386     pthread_mutex_unlock(& main_thread_count_mutex);
2387     while (1) {
2388       tmp___1 = pthread_create((pthread_t * __restrict  )(& c_tid), (pthread_attr_t const   * __restrict  )(& attr),
2389                                (void *(*)(void * ))((void *)(& thread_start)), (void * __restrict  )((int *)o.cur_host));
2390       res = (unsigned char )tmp___1;
2391       if (! ((int )res != 0)) {
2392         break;
2393       }
2394       if ((int )res != 11) {
2395         fatal((char *)"Unable to create thread - (try reducing the number of threads)\n");
2396       }
2397       if (! flag) {
2398         error((char *)"** Failed to create thread!!\nTrying to use sleep to compensate.... although you should run this again with a lower value for -p\n\n");
2399         flag = (unsigned char )((int )flag + 1);
2400       }
2401       usleep(200000U);
2402     }
2403     debug((char *)"Created thread\n");
2404     pthread_mutex_lock(& main_thread_count_mutex);
2405     o.cur_threads = (unsigned short )((int )o.cur_threads + 1);
2406     pthread_mutex_unlock(& main_thread_count_mutex);
2407     (o.cur_host) ++;
2408   }
2409   flag = (unsigned char)0;
2410   pthread_mutex_lock(& main_thread_count_mutex);
2411   while ((int )o.cur_threads > 0) {
2412     pthread_mutex_unlock(& main_thread_count_mutex);
2413     flag = (unsigned char )((int )flag + 1);
2414     if (f.debug) {
2415       goto _L;
2416     } else {
2417       if ((int )f.verbose > 1) {
2418         _L: /* CIL Label */ 
2419         if ((int )flag > 1) {
2420           fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"O.cur_childs(%d) id greater than zero...... sleepingz\n",
2421                   o.cur_threads);
2422           flag = (unsigned char)0;
2423         }
2424       }
2425     }
2426     nanosleep((struct timespec  const  *)(& tv), (struct timespec *)((void *)0));
2427   }
2428   pthread_mutex_unlock(& main_thread_count_mutex);
2429   return;
2430 }
2431 }
2432 int cleaner_start(void) 
2433 { int x ;
2434   int tmp ;
2435 
2436   {
2437   x = 0;
2438   while (1) {
2439     x = 0;
2440     while ((unsigned long )x < o.no_hostnames) {
2441       if ((int )*(o.tid + x)) {
2442         tmp = pthread_join(*(o.tid + x), (void **)((void *)0));
2443         if (! tmp) {
2444           pthread_mutex_lock(& main_thread_count_mutex);
2445           o.cur_threads = (unsigned short )((int )o.cur_threads - 1);
2446           pthread_mutex_unlock(& main_thread_count_mutex);
2447           *(o.tid + x) = 0UL;
2448         }
2449       }
2450       x ++;
2451     }
2452     usleep(200000U);
2453   }
2454   return (0);
2455 }
2456 }
2457 int thread_start(long cur_host ) 
2458 { int sockfd ;
2459   int counter ;
2460   int x ;
2461   int res ;
2462   long ip ;
2463   char hostnamer[8193] ;
2464   char *tmp ;
2465   size_t tmp___0 ;
2466   void *tmp___1 ;
2467   size_t tmp___2 ;
2468   size_t tmp___3 ;
2469   size_t tmp___4 ;
2470   int tmp___5 ;
2471   void *tmp___6 ;
2472   void *tmp___7 ;
2473 
2474   {
2475   counter = 0;
2476   x = 0;
2477   res = 0;
2478   debug((char *)"Starting thread_start process\n");
2479   debug((char *)"hostname == %s o.cur_host == %d\n", (*(hosts + cur_host))->ip_address,
2480         (int )cur_host);
2481   ip = get_ip((*(hosts + cur_host))->ip_address);
2482   if (ip == -1L) {
2483     debug((char *)"Couldn\'t resolve ip\n");
2484     *(o.tid + cur_host) = pthread_self();
2485     return ((int )((void *)0));
2486   }
2487   sockfd = tcp_connect(ip);
2488   if (sockfd != -1) {
2489     counter ++;
2490     if (f.resolve_hostnames) {
2491       tmp = get_hostname((char const   *)(*(hosts + cur_host))->ip_address);
2492       strncpy((char * __restrict  )(hostnamer), (char const   * __restrict  )tmp,
2493               8192U);
2494       hostnamer[8192] = (char )'\000';
2495       tmp___4 = strlen((char const   *)(*(hosts + cur_host))->ip_address);
2496       tmp___5 = strncmp((char const   *)(*(hosts + cur_host))->ip_address, (char const   *)(hostnamer),
2497                         tmp___4);
2498       if (tmp___5) {
2499         tmp___0 = strlen((char const   *)(hostnamer));
2500         tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
2501         (*(hosts + cur_host))->hostname = (char *)tmp___1;
2502         tmp___2 = strlen((char const   *)(hostnamer));
2503         strncpy((char * __restrict  )(*(hosts + cur_host))->hostname, (char const   * __restrict  )(hostnamer),
2504                 tmp___2);
2505         tmp___3 = strlen((char const   *)(hostnamer));
2506         *((*(hosts + cur_host))->hostname + tmp___3) = (char )'\000';
2507         (*(hosts + cur_host))->resolved = (unsigned char)1;
2508       }
2509     }
2510     (*(hosts + cur_host))->smtp_open = (unsigned char)1;
2511     tmp___6 = s_malloc((unsigned long )((unsigned int )((int )o.no_rules + 1) * sizeof(check **)));
2512     (*(hosts + cur_host))->smtp_check = (check **)tmp___6;
2513     x = 0;
2514     while (x <= (int )o.no_rules) {
2515       tmp___7 = s_malloc((unsigned long )sizeof(check ));
2516       *((*(hosts + cur_host))->smtp_check + x) = (check *)tmp___7;
2517       (*((*(hosts + cur_host))->smtp_check + x))->failed = (unsigned char)0;
2518       (*((*(hosts + cur_host))->smtp_check + x))->passed = (unsigned char)0;
2519       (*((*(hosts + cur_host))->smtp_check + x))->error_code = (unsigned char)0;
2520       x ++;
2521     }
2522     res = relay_check(& sockfd, cur_host);
2523     if (res == -1) {
2524       close(sockfd);
2525     }
2526     close(sockfd);
2527   } else {
2528     close(sockfd);
2529   }
2530   *(o.tid + cur_host) = pthread_self();
2531   return ((int )((void *)0));
2532 }
2533 }
2534 /* compiler builtin: 
2535    void __builtin_va_end(__builtin_va_list  ) ;  */
2536 /* compiler builtin: 
2537    void __builtin_va_start(__builtin_va_list  ) ;  */
2538 #pragma merger(0,"/tmp/cil-5Ceo1BbJ.i","-Wall,-g,-pthread")
2539 extern struct _IO_FILE *stdout ;
2540 extern int fflush(FILE *__stream ) ;
2541 extern int vfprintf(FILE * __restrict  __s , char const   * __restrict  __format ,
2542                     __gnuc_va_list __arg ) ;
2543 extern  __attribute__((__nothrow__)) void *malloc(size_t __size )  __attribute__((__malloc__)) ;
2544 extern  __attribute__((__nothrow__)) void *calloc(size_t __nmemb , size_t __size )  __attribute__((__malloc__)) ;
2545 void *s_zmalloc(int size ) ;
2546 void swap_macro(char *string , char const   *replace , char const   *macro ) ;
2547 void convert_rule(char *string , int ind ) ;
2548 int check_file_path(char *filename , char *path ) ;
2549 void return_data(long cur_host , int rule___0 , char *string ) ;
2550 void not_implemented(void) ;
2551 void *s_malloc(unsigned long size ) 
2552 { void *mymem ;
2553 
2554   {
2555   if (size < 0UL) {
2556     fatal((char *)"Tried to allocate a negative amount of memory!!");
2557   }
2558   mymem = malloc((unsigned int )size);
2559   if ((unsigned int )mymem == (unsigned int )((void *)0)) {
2560     fatal((char *)"Malloc failed! Probably out of memory!!");
2561   }
2562   return (mymem);
2563 }
2564 }
2565 void *s_zmalloc(int size ) 
2566 { void *mymem ;
2567 
2568   {
2569   if (size < 0) {
2570     fatal((char *)"Tried to allocate a negative amount of memory!!");
2571   }
2572   mymem = calloc(1U, (unsigned int )size);
2573   if ((unsigned int )mymem == (unsigned int )((void *)0)) {
2574     fatal((char *)"Malloc failed! Probably out of memory!!");
2575   }
2576   return (mymem);
2577 }
2578 }
2579 char *chomp(char *string ) 
2580 { int len ;
2581   size_t tmp ;
2582 
2583   {
2584   tmp = strlen((char const   *)string);
2585   len = (int )tmp;
2586   if (len < 1) {
2587     return (string);
2588   }
2589   if ((int )*(string + (len - 1)) != 10) {
2590     if ((int )*(string + (len - 1)) != 13) {
2591       return (string);
2592     }
2593   }
2594   if (len > 1) {
2595     if ((int )*(string + (len - 2)) == 13) {
2596       *(string + (len - 2)) = (char )'\000';
2597     } else {
2598       *(string + (len - 1)) = (char )'\000';
2599     }
2600   } else {
2601     *(string + (len - 1)) = (char )'\000';
2602   }
2603   return (string);
2604 }
2605 }
2606 void swap_rule(char *dest , char const   *rule___0 , int hostn ) 
2607 { char *tmp ;
2608   char *tmp___0 ;
2609   char *tmp___1 ;
2610   char *tmp___2 ;
2611   char *tmp___3 ;
2612 
2613   {
2614   strncpy((char * __restrict  )dest, (char const   * __restrict  )rule___0, 8192U);
2615   *(dest + 8192) = (char )'\000';
2616   tmp = strstr(rule___0, "--NAME--");
2617   if ((unsigned int )tmp != (unsigned int )((void *)0)) {
2618     swap_macro(dest, (char const   *)o.name, "--NAME--");
2619   }
2620   tmp___0 = strstr(rule___0, "--DOMAIN--");
2621   if ((unsigned int )tmp___0 != (unsigned int )((void *)0)) {
2622     swap_macro(dest, (char const   *)o.domain, "--DOMAIN--");
2623   }
2624   tmp___1 = strstr(rule___0, "--IP_ADDRESS--");
2625   if ((unsigned int )tmp___1 != (unsigned int )((void *)0)) {
2626     swap_macro(dest, (char const   *)(*(hosts + hostn))->ip_address, "--IP_ADDRESS--");
2627   }
2628   tmp___3 = strstr(rule___0, "--HOSTNAME--");
2629   if ((unsigned int )tmp___3 != (unsigned int )((void *)0)) {
2630     if (f.resolve_hostnames) {
2631       if ((*(hosts + hostn))->resolved) {
2632         swap_macro(dest, (char const   *)(*(hosts + hostn))->hostname, "--HOSTNAME--");
2633       } else {
2634         goto _L___0;
2635       }
2636     } else {
2637       goto _L___0;
2638     }
2639   } else {
2640     _L___0: /* CIL Label */ 
2641     tmp___2 = strstr(rule___0, "--HOSTNAME--");
2642     if ((unsigned int )tmp___2 != (unsigned int )((void *)0)) {
2643       if (f.resolve_hostnames) {
2644         swap_macro(dest, (char const   *)(*(hosts + hostn))->ip_address, "--HOSTNAME--");
2645       }
2646     }
2647   }
2648   return;
2649 }
2650 }
2651 void swap_macro(char *string , char const   *replace , char const   *macro ) 
2652 { char *p ;
2653   char *buf ;
2654   void *tmp ;
2655   size_t tmp___0 ;
2656 
2657   {
2658   tmp = s_malloc((unsigned long )(8193U * sizeof(char )));
2659   buf = (char *)tmp;
2660   while (1) {
2661     p = strstr((char const   *)string, macro);
2662     if (! ((unsigned int )p != (unsigned int )((void *)0))) {
2663       break;
2664     }
2665     memcpy((void * __restrict  )buf, (void const   * __restrict  )string, (unsigned int )(p - string));
2666     *(buf + (p - string)) = (char )'\000';
2667     tmp___0 = strlen(macro);
2668     p += tmp___0;
2669     strncat((char * __restrict  )buf, (char const   * __restrict  )replace, 8192U);
2670     strncat((char * __restrict  )buf, (char const   * __restrict  )p, 8192U);
2671     *(buf + 8192) = (char )'\000';
2672     strncpy((char * __restrict  )string, (char const   * __restrict  )buf, 8192U);
2673     *(string + 8192) = (char )'\000';
2674   }
2675   free((void *)buf);
2676   return;
2677 }
2678 }
2679 void convert_rule(char *string , int ind ) 
2680 { char *buf ;
2681   void *tmp ;
2682 
2683   {
2684   tmp = s_malloc((unsigned long )(8193U * sizeof(char )));
2685   buf = (char *)tmp;
2686   if (ind == 1) {
2687     snprintf((char * __restrict  )buf, 8192U, (char const   * __restrict  )"HELO %s\r\n",
2688              string);
2689     strncpy((char * __restrict  )string, (char const   * __restrict  )buf, 8192U);
2690     *(string + 8192) = (char )'\000';
2691   } else {
2692     if (ind == 2) {
2693       snprintf((char * __restrict  )buf, 8192U, (char const   * __restrict  )"MAIL FROM:%s\r\n",
2694                string);
2695       strncpy((char * __restrict  )string, (char const   * __restrict  )buf, 8192U);
2696       *(string + 8192) = (char )'\000';
2697     } else {
2698       if (ind == 3) {
2699         snprintf((char * __restrict  )buf, 8192U, (char const   * __restrict  )"RCPT TO:%s\r\n",
2700                  string);
2701         strncpy((char * __restrict  )string, (char const   * __restrict  )buf, 8192U);
2702         *(string + 8192) = (char )'\000';
2703       }
2704     }
2705   }
2706   return;
2707 }
2708 }
2709 void debug(char *fmt  , ...) 
2710 { va_list ap ;
2711 
2712   {
2713   if (f.debug) {
2714     __builtin_va_start(ap, fmt);
2715     fflush(stdout);
2716     fprintf((FILE * __restrict  )stdout, (char const   * __restrict  )"DEBUG: ");
2717     vfprintf((FILE * __restrict  )stderr, (char const   * __restrict  )fmt, ap);
2718     fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n");
2719     __builtin_va_end(ap);
2720   }
2721   return;
2722 }
2723 }
2724 int check_file_path(char *filename , char *path ) 
2725 { char *s ;
2726   char *p ;
2727   int slash_flag ;
2728   char *fn ;
2729   FILE *fd ;
2730   size_t tmp ;
2731   void *tmp___0 ;
2732   size_t tmp___1 ;
2733   size_t tmp___2 ;
2734   char *tmp___3 ;
2735   size_t tmp___4 ;
2736   void *tmp___5 ;
2737   size_t tmp___6 ;
2738   size_t tmp___7 ;
2739 
2740   {
2741   slash_flag = 0;
2742   fd = fopen((char const   * __restrict  )filename, (char const   * __restrict  )"w");
2743   if ((unsigned int )fd == (unsigned int )((void *)0)) {
2744     return (-1);
2745   }
2746   fclose(fd);
2747   tmp = strlen((char const   *)filename);
2748   tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2749   fn = (char *)tmp___0;
2750   tmp___1 = strlen((char const   *)filename);
2751   strncpy((char * __restrict  )fn, (char const   * __restrict  )filename, tmp___1);
2752   tmp___2 = strlen((char const   *)filename);
2753   *(fn + tmp___2) = (char )'\000';
2754   s = fn;
2755   while (1) {
2756     tmp___3 = s;
2757     s ++;
2758     if (! *tmp___3) {
2759       break;
2760     }
2761     if ((int )*s == 47) {
2762       p = s;
2763       slash_flag = 1;
2764     }
2765   }
2766   p ++;
2767   *p = (char )'\000';
2768   if (! slash_flag) {
2769     tmp___4 = strlen("./");
2770     tmp___5 = s_malloc((unsigned long )((tmp___4 + 2U) * sizeof(char )));
2771     path = (char *)tmp___5;
2772     tmp___6 = strlen("./");
2773     strncpy((char * __restrict  )path, (char const   * __restrict  )"./", tmp___6);
2774     tmp___7 = strlen("./");
2775     *(path + tmp___7) = (char )'\000';
2776   } else {
2777     strncpy((char * __restrict  )path, (char const   * __restrict  )fn, 8192U);
2778     *(path + 8192) = (char )'\000';
2779   }
2780   free((void *)fn);
2781   return (0);
2782 }
2783 }
2784 void return_data(long cur_host , int rule___0 , char *string ) 
2785 { char *buf ;
2786   void *tmp ;
2787 
2788   {
2789   tmp = s_zmalloc((int )(8193U * sizeof(char )));
2790   buf = (char *)tmp;
2791   snprintf((char * __restrict  )buf, 8192U, (char const   * __restrict  )"Subject: %s\r\n%s\r\n\r\n:SmtpRCKey:%d:%s:%d:\r\n\r\n.\r\n",
2792            o.email_subject, o.email, (int )o.time, (*(hosts + cur_host))->ip_address,
2793            rule___0);
2794   strncpy((char * __restrict  )string, (char const   * __restrict  )buf, 8192U);
2795   *(string + 8192) = (char )'\000';
2796   return;
2797 }
2798 }
2799 void set_defaults(void) 
2800 { size_t tmp ;
2801   void *tmp___0 ;
2802   size_t tmp___1 ;
2803   size_t tmp___2 ;
2804   size_t tmp___3 ;
2805   void *tmp___4 ;
2806   size_t tmp___5 ;
2807   size_t tmp___6 ;
2808 
2809   {
2810   o.number_of_threads = (unsigned short)1000;
2811   o.c_timeout = (unsigned short)10;
2812   o.r_timeout = (unsigned short)60;
2813   o.m_timeout = (unsigned short)60;
2814   tmp = strlen("/usr/local/etc/smtprc/rcheck.conf");
2815   tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2816   o.config_file = (char *)tmp___0;
2817   tmp___1 = strlen("/usr/local/etc/smtprc/rcheck.conf");
2818   strncpy((char * __restrict  )o.config_file, (char const   * __restrict  )"/usr/local/etc/smtprc/rcheck.conf",
2819           tmp___1);
2820   tmp___2 = strlen("/usr/local/etc/smtprc/rcheck.conf");
2821   *(o.config_file + tmp___2) = (char )'\000';
2822   f.config_file = (unsigned char)1;
2823   tmp___3 = strlen("/usr/local/etc/smtprc/email.tmpl");
2824   tmp___4 = s_malloc((unsigned long )((tmp___3 + 1U) * sizeof(char )));
2825   o.email_template = (char *)tmp___4;
2826   tmp___5 = strlen("/usr/local/etc/smtprc/email.tmpl");
2827   strncpy((char * __restrict  )o.email_template, (char const   * __restrict  )"/usr/local/etc/smtprc/email.tmpl",
2828           tmp___5);
2829   tmp___6 = strlen("/usr/local/etc/smtprc/email.tmpl");
2830   *(o.email_template + tmp___6) = (char )'\000';
2831   f.email_template = (unsigned char)1;
2832   return;
2833 }
2834 }
2835 void not_implemented(void) 
2836 { 
2837 
2838   {
2839   fatal((char *)"Sorry, This function is not yet implemented");
2840   return;
2841 }
2842 }
2843 #pragma merger(0,"/tmp/cil-VVVPpkmc.i","-Wall,-g,-pthread")
2844 void print_html_header(FILE *fd , char *title ) ;
2845 void print_html_footer(FILE *fd , long smtp_open___0 ) ;
2846 void print_link(FILE *fd , char *link___0 , char *text , char *color ) ;
2847 void print_check(FILE *fd , long x , int y , char *color ) ;
2848 void print_errord_check(FILE *fd , long x , int y , char *color ) ;
2849 void print_check_details(char *filename , long host___0 ) ;
2850 void print_quit(FILE *fd , long x , int y , char *color ) ;
2851 char *escape_html_chars(char *string , char *s ) ;
2852 char *passed  =    (char *)"smtprc_passed.html";
2853 char *errord  =    (char *)"smtprc_errord.html";
2854 char *failed_file  ;
2855 long smtp_open  =    0L;
2856 void display_html(void) 
2857 { FILE *failed_fd ;
2858   FILE *passed_fd ;
2859   FILE *errord_fd ;
2860   char buf[8192] ;
2861   char *p ;
2862   char *s ;
2863   char *boo ;
2864   int failed ;
2865   int failed_count ;
2866   int passed_count ;
2867   int errord_count ;
2868   int count ;
2869   long x ;
2870   int y ;
2871   size_t tmp ;
2872   void *tmp___0 ;
2873   size_t tmp___1 ;
2874   size_t tmp___2 ;
2875   char *tmp___3 ;
2876   size_t tmp___4 ;
2877   void *tmp___5 ;
2878   size_t tmp___6 ;
2879   size_t tmp___7 ;
2880   size_t tmp___8 ;
2881   void *tmp___9 ;
2882   size_t tmp___10 ;
2883   size_t tmp___11 ;
2884 
2885   {
2886   failed = 0;
2887   failed_count = 0;
2888   passed_count = 0;
2889   errord_count = 0;
2890   count = 0;
2891   x = 0L;
2892   y = 0;
2893   tmp = strlen((char const   *)o.html_file);
2894   tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
2895   boo = (char *)tmp___0;
2896   tmp___1 = strlen((char const   *)o.html_file);
2897   strncpy((char * __restrict  )boo, (char const   * __restrict  )o.html_file, tmp___1);
2898   tmp___2 = strlen((char const   *)o.html_file);
2899   *(boo + tmp___2) = (char )'\000';
2900   p = boo;
2901   while (1) {
2902     tmp___3 = p;
2903     p ++;
2904     if (! *tmp___3) {
2905       break;
2906     }
2907     if ((int )*p == 47) {
2908       count ++;
2909       p ++;
2910       s = p;
2911     }
2912   }
2913   if (! count) {
2914     tmp___4 = strlen((char const   *)o.html_file);
2915     tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
2916     failed_file = (char *)tmp___5;
2917     tmp___6 = strlen((char const   *)o.html_file);
2918     strncpy((char * __restrict  )failed_file, (char const   * __restrict  )o.html_file,
2919             tmp___6);
2920     tmp___7 = strlen((char const   *)o.html_file);
2921     *(failed_file + tmp___7) = (char )'\000';
2922   } else {
2923     tmp___8 = strlen((char const   *)s);
2924     tmp___9 = s_malloc((unsigned long )((tmp___8 + 1U) * sizeof(char )));
2925     failed_file = (char *)tmp___9;
2926     tmp___10 = strlen((char const   *)s);
2927     strncpy((char * __restrict  )failed_file, (char const   * __restrict  )s, tmp___10);
2928     tmp___11 = strlen((char const   *)s);
2929     *(failed_file + tmp___11) = (char )'\000';
2930   }
2931   count = 0;
2932   failed_fd = fopen((char const   * __restrict  )o.html_file, (char const   * __restrict  )"w");
2933   if ((unsigned int )failed_fd == (unsigned int )((void *)0)) {
2934     fatal((char *)"Unable to open html file");
2935   }
2936   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s",
2937            o.html_path, passed);
2938   passed_fd = fopen((char const   * __restrict  )(buf), (char const   * __restrict  )"w");
2939   if ((unsigned int )passed_fd == (unsigned int )((void *)0)) {
2940     fatal((char *)"Unable to open html file");
2941   }
2942   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s",
2943            o.html_path, errord);
2944   errord_fd = fopen((char const   * __restrict  )(buf), (char const   * __restrict  )"w");
2945   if ((unsigned int )errord_fd == (unsigned int )((void *)0)) {
2946     fatal((char *)"Unable to open html file");
2947   }
2948   print_html_header(failed_fd, (char *)"SMTP Relay Checker");
2949   print_html_header(passed_fd, (char *)"SMTP Relay Checker");
2950   print_html_header(errord_fd, (char *)"SMTP Relay Checker");
2951   fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"orange\">Orange</font> are suspected open relays</font><br />\n");
2952   fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"red\">Red</font> are definite open relays</font><br /><br /><br /><br />\n");
2953   fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"blue\">Blue</font> are not open relays and have passed all tests</font><br /><br /><br /><br />\n");
2954   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"black\">Black</font> Closed the connection after it was established (Probably due to a firewall)</font><br />\n");
2955   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"darkblue\">Dark Blue</font> Had restrictions in place to disallow access</font><br />\n");
2956   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"green\">Green</font> Produced Read Timeouts</font><br />\n");
2957   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<font size=\"1\">Scans marked in <font color=\"purple\">Purple</font> Produced Unknown Errors</font><br /><br /><br /><br />\n");
2958   fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2959   fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2960   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<table align=\"center\" border=\"0\" cellspacing=\"10\"><tr>\n");
2961   x = 0L;
2962   while ((unsigned long )x < o.no_hostnames) {
2963     if ((*(hosts + x))->smtp_open) {
2964       smtp_open ++;
2965     }
2966     x ++;
2967   }
2968   x = 0L;
2969   while ((unsigned long )x < o.no_hostnames) {
2970     if ((*(hosts + x))->smtp_open) {
2971       y = 0;
2972       while (y <= (int )o.no_rules) {
2973         if ((int )(*((*(hosts + x))->smtp_check + y))->failed == 1) {
2974           if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
2975             if (failed < 1) {
2976               failed = 1;
2977             }
2978           }
2979         }
2980         if ((int )(*((*(hosts + x))->smtp_check + y))->failed == 2) {
2981           if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
2982             if (failed < 2) {
2983               failed = 2;
2984             }
2985           }
2986         }
2987         y ++;
2988       }
2989       if (failed) {
2990         if (failed == 1) {
2991           fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<td>");
2992           failed_count ++;
2993           if ((*(hosts + x))->resolved) {
2994             snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
2995                      (*(hosts + x))->hostname);
2996             print_link(failed_fd, buf, (*(hosts + x))->hostname, (char *)"orange");
2997             snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
2998                      o.html_path, (*(hosts + x))->hostname);
2999           } else {
3000             snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3001                      (*(hosts + x))->ip_address);
3002             print_link(failed_fd, buf, (*(hosts + x))->ip_address, (char *)"orange");
3003             snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3004                      o.html_path, (*(hosts + x))->ip_address);
3005           }
3006           fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"</td>");
3007           if (failed_count % 5 == 0) {
3008             fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"</tr><tr>\n");
3009           }
3010         } else {
3011           if (failed == 2) {
3012             failed_count ++;
3013             fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<td>");
3014             if ((*(hosts + x))->resolved) {
3015               snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3016                        (*(hosts + x))->hostname);
3017               print_link(failed_fd, buf, (*(hosts + x))->hostname, (char *)"red");
3018               snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3019                        o.html_path, (*(hosts + x))->hostname);
3020             } else {
3021               snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3022                        (*(hosts + x))->ip_address);
3023               print_link(failed_fd, buf, (*(hosts + x))->ip_address, (char *)"red");
3024               snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3025                        o.html_path, (*(hosts + x))->ip_address);
3026             }
3027             fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"</td>");
3028             if (failed_count % 5 == 0) {
3029               fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"</tr><tr>\n");
3030             }
3031           }
3032         }
3033       } else {
3034         if ((*(hosts + x))->fatal_error) {
3035           if ((int )(*(hosts + x))->fatal < 2) {
3036             if ((int )(*((*(hosts + x))->smtp_check + 0))->error_code == 1) {
3037               errord_count ++;
3038               fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<td>");
3039               if ((*(hosts + x))->resolved) {
3040                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3041                          (*(hosts + x))->hostname);
3042                 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"black");
3043                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3044                          o.html_path, (*(hosts + x))->hostname);
3045               } else {
3046                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3047                          (*(hosts + x))->ip_address);
3048                 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"black");
3049                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3050                          o.html_path, (*(hosts + x))->ip_address);
3051               }
3052               fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</td>");
3053               if (errord_count % 5 == 0) {
3054                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</tr><tr>\n");
3055               }
3056             } else {
3057               goto _L___2;
3058             }
3059           } else {
3060             goto _L___2;
3061           }
3062         } else {
3063           _L___2: /* CIL Label */ 
3064           if ((*(hosts + x))->fatal_error) {
3065             if ((int )(*(hosts + x))->fatal < 2) {
3066               if ((int )(*((*(hosts + x))->smtp_check + 0))->error_code == 2) {
3067                 errord_count ++;
3068                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<td>");
3069                 if ((*(hosts + x))->resolved) {
3070                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3071                            (*(hosts + x))->hostname);
3072                   print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"darkblue");
3073                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3074                            o.html_path, (*(hosts + x))->hostname);
3075                 } else {
3076                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3077                            (*(hosts + x))->ip_address);
3078                   print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"darkblue");
3079                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3080                            o.html_path, (*(hosts + x))->ip_address);
3081                 }
3082                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</td>");
3083                 if (errord_count % 5 == 0) {
3084                   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</tr><tr>\n");
3085                 }
3086               } else {
3087                 goto _L___0;
3088               }
3089             } else {
3090               goto _L___0;
3091             }
3092           } else {
3093             _L___0: /* CIL Label */ 
3094             if ((int )(*(hosts + x))->fatal_error == 3) {
3095               errord_count ++;
3096               fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<td>");
3097               if ((*(hosts + x))->resolved) {
3098                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3099                          (*(hosts + x))->hostname);
3100                 print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"green");
3101                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3102                          o.html_path, (*(hosts + x))->hostname);
3103               } else {
3104                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3105                          (*(hosts + x))->ip_address);
3106                 print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"green");
3107                 snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3108                          o.html_path, (*(hosts + x))->ip_address);
3109               }
3110               fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</td>");
3111               if (errord_count % 5 == 0) {
3112                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</tr><tr>\n");
3113               }
3114             } else {
3115               if ((*(hosts + x))->fatal_error) {
3116                 errord_count ++;
3117                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<td>");
3118                 if ((*(hosts + x))->resolved) {
3119                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3120                            (*(hosts + x))->hostname);
3121                   print_link(errord_fd, buf, (*(hosts + x))->hostname, (char *)"purple");
3122                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3123                            o.html_path, (*(hosts + x))->hostname);
3124                 } else {
3125                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3126                            (*(hosts + x))->ip_address);
3127                   print_link(errord_fd, buf, (*(hosts + x))->ip_address, (char *)"purple");
3128                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3129                            o.html_path, (*(hosts + x))->ip_address);
3130                 }
3131                 fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</td>");
3132                 if (errord_count % 5 == 0) {
3133                   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</tr><tr>\n");
3134                 }
3135               } else {
3136                 passed_count ++;
3137                 fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"<td>");
3138                 if ((*(hosts + x))->resolved) {
3139                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3140                            (*(hosts + x))->hostname);
3141                   print_link(passed_fd, buf, (*(hosts + x))->hostname, (char *)"blue");
3142                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3143                            o.html_path, (*(hosts + x))->hostname);
3144                 } else {
3145                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s.html",
3146                            (*(hosts + x))->ip_address);
3147                   print_link(passed_fd, buf, (*(hosts + x))->ip_address, (char *)"blue");
3148                   snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%s%s.html",
3149                            o.html_path, (*(hosts + x))->ip_address);
3150                 }
3151                 fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"</td>");
3152                 if (passed_count % 5 == 0) {
3153                   fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"</tr><tr>\n");
3154                 }
3155               }
3156             }
3157           }
3158         }
3159       }
3160       print_check_details(buf, x);
3161       failed = 0;
3162     }
3163     x ++;
3164   }
3165   fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"</tr></table>");
3166   fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"</tr></table>");
3167   fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"</tr></table>");
3168   if (! failed_count) {
3169     fprintf((FILE * __restrict  )failed_fd, (char const   * __restrict  )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Open Relays Were Found</b></font></center><br /><br /><br />\n");
3170   }
3171   if (! passed_count) {
3172     fprintf((FILE * __restrict  )passed_fd, (char const   * __restrict  )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Mail Servers Passed The Tests</b></font></center><br /><br /><br />\n");
3173   }
3174   if (! errord_count) {
3175     fprintf((FILE * __restrict  )errord_fd, (char const   * __restrict  )"<br /><br /><br /><center><font size=\"2\" color=\"black\"><b>No Errors Were Encountered While Scanning</b></font></center><br /><br /><br />\n");
3176   }
3177   print_html_footer(failed_fd, smtp_open);
3178   print_html_footer(errord_fd, smtp_open);
3179   print_html_footer(passed_fd, smtp_open);
3180   fclose(failed_fd);
3181   fclose(passed_fd);
3182   fclose(errord_fd);
3183   return;
3184 }
3185 }
3186 void print_check_details(char *filename , long host___0 ) 
3187 { FILE *fd ;
3188   char color[8193] ;
3189   int y ;
3190 
3191   {
3192   y = 0;
3193   fd = fopen((char const   * __restrict  )filename, (char const   * __restrict  )"w");
3194   if ((unsigned int )fd == (unsigned int )((void *)0)) {
3195     fatal((char *)"Unable to open file: %s\n", filename);
3196   }
3197   print_html_header(fd, (char *)"SMTP Relay Checker");
3198   y = 0;
3199   while (y <= (int )o.no_rules) {
3200     if ((int )(*((*(hosts + host___0))->smtp_check + y))->failed == 1) {
3201       strncpy((char * __restrict  )(color), (char const   * __restrict  )"orange",
3202               8192U);
3203       color[8192] = (char )'\000';
3204     } else {
3205       if ((int )(*((*(hosts + host___0))->smtp_check + y))->failed == 2) {
3206         strncpy((char * __restrict  )(color), (char const   * __restrict  )"red",
3207                 8192U);
3208         color[8192] = (char )'\000';
3209       } else {
3210         if ((*((*(hosts + host___0))->smtp_check + y))->passed) {
3211           strncpy((char * __restrict  )(color), (char const   * __restrict  )"blue",
3212                   8192U);
3213           color[8192] = (char )'\000';
3214         } else {
3215           strncpy((char * __restrict  )(color), (char const   * __restrict  )"purple",
3216                   8192U);
3217           color[8192] = (char )'\000';
3218         }
3219       }
3220     }
3221     if ((*(hosts + host___0))->fatal_error) {
3222       if (y <= (int )(*(hosts + host___0))->fatal) {
3223         if ((*((*(hosts + host___0))->smtp_check + y))->error_code) {
3224           if ((int )(*((*(hosts + host___0))->smtp_check + y))->error_code < 21) {
3225             print_errord_check(fd, host___0, y, (char *)"green");
3226           } else {
3227             goto _L;
3228           }
3229         } else {
3230           _L: /* CIL Label */ 
3231           if ((*((*(hosts + host___0))->smtp_check + y))->passed) {
3232             print_check(fd, host___0, y, color);
3233           } else {
3234             if ((*((*(hosts + host___0))->smtp_check + y))->failed) {
3235               print_check(fd, host___0, y, color);
3236             }
3237           }
3238         }
3239       }
3240     } else {
3241       print_check(fd, host___0, y, color);
3242     }
3243     y ++;
3244   }
3245   if ((int )(*((*(hosts + host___0))->smtp_check + o.no_rules))->error_code > 20) {
3246     if ((int )(*(hosts + host___0))->fatal == (int )o.no_rules) {
3247       print_quit(fd, host___0, (int )o.no_rules, (char *)"green");
3248     } else {
3249       goto _L___0;
3250     }
3251   } else {
3252     _L___0: /* CIL Label */ 
3253     if (! (*(hosts + host___0))->fatal_error) {
3254       print_quit(fd, host___0, (int )o.no_rules, (char *)"blue");
3255     }
3256   }
3257   print_html_footer(fd, smtp_open);
3258   fclose(fd);
3259   return;
3260 }
3261 }
3262 void print_quit(FILE *fd , long x , int y , char *color ) 
3263 { 
3264 
3265   {
3266   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3267           color);
3268   if ((*(hosts + x))->resolved) {
3269     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Quit sequence for %s [%s]</font></b><br /><br /></td></tr>\n",
3270             (*(hosts + x))->hostname, (*(hosts + x))->ip_address);
3271   } else {
3272     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Quit sequence for [%s]</font></b><br /><br /></td></tr>\n",
3273             (*(hosts + x))->ip_address);
3274   }
3275   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 21) {
3276     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;A fatal error occured while trying to read/write</font><br /></td></tr>\n",
3277             color);
3278   } else {
3279     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 22) {
3280       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;A fatal error occured while trying to read/write</font><br /></td></tr>\n",
3281               color);
3282     }
3283   }
3284   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">QUIT SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3285           color, "QUIT\r\n");
3286   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">QUIT REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3287           color, (*(hosts + x))->r_quit);
3288   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"</table></font><br /><br /><br />\n\n");
3289   return;
3290 }
3291 }
3292 void print_errord_check(FILE *fd , long x , int y , char *color ) 
3293 { char *p ;
3294   char *buf ;
3295   char *tmp ;
3296   char *tmp___0 ;
3297   char *tmp___1 ;
3298   char *tmp___2 ;
3299   char *tmp___3 ;
3300   char *tmp___4 ;
3301   char *tmp___5 ;
3302   char *tmp___6 ;
3303   char *tmp___7 ;
3304   char *tmp___8 ;
3305   char *tmp___9 ;
3306   char *tmp___10 ;
3307   void *tmp___11 ;
3308   char *tmp___12 ;
3309   char *tmp___13 ;
3310   char *tmp___14 ;
3311   char *tmp___15 ;
3312 
3313   {
3314   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3315           color);
3316   if ((*(hosts + x))->resolved) {
3317     tmp = escape_html_chars((*(hosts + x))->ip_address, p);
3318     tmp___0 = escape_html_chars((*(hosts + x))->hostname, p);
3319     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Results for %s [%s] check %d</font></b><br /><br /></td></tr>\n",
3320             tmp___0, tmp, y);
3321   } else {
3322     tmp___1 = escape_html_chars((*(hosts + x))->ip_address, p);
3323     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Results for [%s] check %d</font></b><br /><br /></td></tr>\n",
3324             tmp___1, y);
3325   }
3326   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 1) {
3327     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;The server closed the connection.... probably due to a firewall</font><br /></td></tr>\n",
3328             color);
3329   }
3330   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3331     tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3332     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>&#9;%s</font><br /></td></tr>\n",
3333             color, tmp___2);
3334   } else {
3335     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 1) {
3336       tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3337       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>&#9;%s</font><br /></td></tr>\n",
3338               color, tmp___2);
3339     }
3340   }
3341   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 3) {
3342     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write HELO</font><br /></td></tr>\n",
3343             color);
3344   } else {
3345     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 4) {
3346       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write HELO</font><br /></td></tr>\n",
3347               color);
3348     }
3349   }
3350   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3351     tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3352     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3353             color, tmp___3);
3354   } else {
3355     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 4) {
3356       tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3357       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3358               color, tmp___3);
3359     }
3360   }
3361   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3362     tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3363     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3364             color, tmp___4);
3365   } else {
3366     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 4) {
3367       tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3368       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3369               color, tmp___4);
3370     }
3371   }
3372   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 6) {
3373     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write MAIL FROM</font><br /></td></tr>\n",
3374             color);
3375   } else {
3376     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 7) {
3377       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write MAIL FROM</font><br /></td></tr>\n",
3378               color);
3379     }
3380   }
3381   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3382     tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from, p);
3383     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3384             color, tmp___5);
3385   } else {
3386     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 7) {
3387       tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from,
3388                                   p);
3389       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3390               color, tmp___5);
3391     }
3392   }
3393   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3394     tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3395                                 p);
3396     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3397             color, tmp___6);
3398   } else {
3399     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 7) {
3400       tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3401                                   p);
3402       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3403               color, tmp___6);
3404     }
3405   }
3406   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 9) {
3407     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write RCPT TO</font><br /></td></tr>\n",
3408             color);
3409   } else {
3410     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 10) {
3411       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write RCPT TO</font><br /></td></tr>\n",
3412               color);
3413     }
3414   }
3415   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3416     goto _L;
3417   } else {
3418     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 10) {
3419       _L: /* CIL Label */ 
3420       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 3) {
3421         tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to,
3422                                     p);
3423         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3424                 color, tmp___7);
3425       }
3426     }
3427   }
3428   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3429     goto _L___0;
3430   } else {
3431     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 10) {
3432       _L___0: /* CIL Label */ 
3433       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 3) {
3434         tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to,
3435                                     p);
3436         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3437                 color, tmp___8);
3438       }
3439     }
3440   }
3441   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 12) {
3442     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3443             color);
3444   } else {
3445     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 13) {
3446       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3447               color);
3448     }
3449   }
3450   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3451     goto _L___1;
3452   } else {
3453     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 13) {
3454       _L___1: /* CIL Label */ 
3455       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 4) {
3456         tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3457         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3458                 color, tmp___9);
3459       }
3460     }
3461   }
3462   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3463     goto _L___2;
3464   } else {
3465     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 13) {
3466       _L___2: /* CIL Label */ 
3467       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 4) {
3468         tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3469                                      p);
3470         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3471                 color, tmp___10);
3472       }
3473     }
3474   }
3475   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 15) {
3476     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3477             color);
3478   } else {
3479     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 16) {
3480       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write DATA</font><br /></td></tr>\n",
3481               color);
3482     }
3483   }
3484   tmp___11 = s_malloc((unsigned long )(8193U * sizeof(char )));
3485   buf = (char *)tmp___11;
3486   return_data(x, y, buf);
3487   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3488     goto _L___3;
3489   } else {
3490     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 16) {
3491       _L___3: /* CIL Label */ 
3492       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 5) {
3493         tmp___12 = escape_html_chars(buf, p);
3494         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA SENT:</font> &#9;<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3495                 color, tmp___12);
3496       }
3497     }
3498   }
3499   free((void *)buf);
3500   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3501     goto _L___4;
3502   } else {
3503     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 16) {
3504       _L___4: /* CIL Label */ 
3505       if ((int )(*((*(hosts + x))->smtp_check + y))->passed > 6) {
3506         tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3507                                      p);
3508         fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3509                 color, tmp___13);
3510       }
3511     }
3512   }
3513   if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 18) {
3514     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write RSET</font><br /></td></tr>\n",
3515             color);
3516   } else {
3517     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code == 19) {
3518       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">FATAL ERROR:</font><font color=\"black\"></td>\n<td>&#9;An fatal error occured while trying to read/write RSET</font><br /></td></tr>\n",
3519               color);
3520     }
3521   }
3522   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3523     tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3524     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3525             color, tmp___14);
3526   } else {
3527     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 19) {
3528       tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3529       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3530               color, tmp___14);
3531     }
3532   }
3533   if (! (*((*(hosts + x))->smtp_check + y))->error_code) {
3534     tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3535     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3536             color, tmp___15);
3537   } else {
3538     if ((int )(*((*(hosts + x))->smtp_check + y))->error_code > 19) {
3539       tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3540       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3541               color, tmp___15);
3542     }
3543   }
3544   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"</table></font><br /><br /><br />\n\n");
3545   return;
3546 }
3547 }
3548 void print_check(FILE *fd , long x , int y , char *color ) 
3549 { int passed___0 ;
3550   char *p ;
3551   char *buf ;
3552   char *tmp ;
3553   char *tmp___0 ;
3554   char *tmp___1 ;
3555   char *tmp___2 ;
3556   char *tmp___3 ;
3557   char *tmp___4 ;
3558   char *tmp___5 ;
3559   char *tmp___6 ;
3560   char *tmp___7 ;
3561   char *tmp___8 ;
3562   char *tmp___9 ;
3563   char *tmp___10 ;
3564   void *tmp___11 ;
3565   char *tmp___12 ;
3566   char *tmp___13 ;
3567   char *tmp___14 ;
3568   char *tmp___15 ;
3569 
3570   {
3571   passed___0 = 0;
3572   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n\n<br /><br /><table border=\"0\" cellspacing=\"1\"><font color=\"%s\"><br />\n",
3573           color);
3574   if ((*(hosts + x))->resolved) {
3575     tmp = escape_html_chars((*(hosts + x))->ip_address, p);
3576     tmp___0 = escape_html_chars((*(hosts + x))->hostname, p);
3577     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Results for %s [%s] check %d</font></b><br /><br /></td></tr>\n",
3578             tmp___0, tmp, y);
3579   } else {
3580     tmp___1 = escape_html_chars((*(hosts + x))->ip_address, p);
3581     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td colspan=\"2\"><b>Results for [%s] check %d</font></b><br /><br /></td></tr>\n",
3582             tmp___1, y);
3583   }
3584   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3585     tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3586     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>&#9;%s</font><br /></td></tr>\n",
3587             color, tmp___2);
3588   } else {
3589     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3590       tmp___2 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_banner, p);
3591       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">BANNER:</font><font color=\"black\"></td>\n<td>&#9;%s</font><br /></td></tr>\n",
3592               color, tmp___2);
3593     }
3594   }
3595   passed___0 ++;
3596   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3597     tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3598     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3599             color, tmp___3);
3600   } else {
3601     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3602       tmp___3 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->helo, p);
3603       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3604               color, tmp___3);
3605     }
3606   }
3607   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3608     tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3609     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3610             color, tmp___4);
3611   } else {
3612     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3613       tmp___4 = escape_html_chars((*((*(hosts + x))->smtp_check + 0))->r_helo, p);
3614       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">HELO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3615               color, tmp___4);
3616     }
3617   }
3618   passed___0 ++;
3619   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3620     tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from, p);
3621     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3622             color, tmp___5);
3623   } else {
3624     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3625       tmp___5 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->mail_from,
3626                                   p);
3627       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3628               color, tmp___5);
3629     }
3630   }
3631   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3632     tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3633                                 p);
3634     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3635             color, tmp___6);
3636   } else {
3637     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3638       tmp___6 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_mail_from,
3639                                   p);
3640       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">MAIL FROM REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3641               color, tmp___6);
3642     }
3643   }
3644   passed___0 ++;
3645   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3646     tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to, p);
3647     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3648             color, tmp___7);
3649   } else {
3650     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3651       tmp___7 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->rcpt_to, p);
3652       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3653               color, tmp___7);
3654     }
3655   }
3656   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3657     tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to, p);
3658     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3659             color, tmp___8);
3660   } else {
3661     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3662       tmp___8 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_rcpt_to,
3663                                   p);
3664       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RCPT TO REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3665               color, tmp___8);
3666     }
3667   }
3668   passed___0 ++;
3669   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3670     tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3671     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3672             color, tmp___9);
3673   } else {
3674     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3675       tmp___9 = escape_html_chars((char *)"DATA\r\n", p);
3676       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3677               color, tmp___9);
3678     }
3679   }
3680   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3681     tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3682                                  p);
3683     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3684             color, tmp___10);
3685   } else {
3686     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3687       tmp___10 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_start,
3688                                    p);
3689       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA START REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3690               color, tmp___10);
3691     }
3692   }
3693   passed___0 ++;
3694   tmp___11 = s_malloc((unsigned long )(8193U * sizeof(char )));
3695   buf = (char *)tmp___11;
3696   return_data(x, y, buf);
3697   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3698     tmp___12 = escape_html_chars(buf, p);
3699     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA SENT:</font> &#9;<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3700             color, tmp___12);
3701   } else {
3702     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3703       tmp___12 = escape_html_chars(buf, p);
3704       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA SENT:</font> &#9;<font color=\"black\"></td>\n<td><pre>%s</pre></font><br /></td></tr>\n",
3705               color, tmp___12);
3706     }
3707   }
3708   free((void *)buf);
3709   if (! (*((*(hosts + x))->smtp_check + y))->passed) {
3710     tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3711                                  p);
3712     fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3713             color, tmp___13);
3714   } else {
3715     if (passed___0 < (int )(*((*(hosts + x))->smtp_check + y))->passed) {
3716       tmp___13 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_data_end,
3717                                    p);
3718       fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">DATA REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3719               color, tmp___13);
3720     }
3721   }
3722   passed___0 ++;
3723   tmp___14 = escape_html_chars((char *)"RSET\r\n", p);
3724   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET SENT:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3725           color, tmp___14);
3726   tmp___15 = escape_html_chars((*((*(hosts + x))->smtp_check + y))->r_reset, p);
3727   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\n<tr><td>&#9;<font color=\"%s\">RESET REPLY:</font> &#9;<font color=\"black\"></td>\n<td>%s</font><br /></td></tr>\n",
3728           color, tmp___15);
3729   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"</table></font><br /><br /><br />\n\n");
3730   return;
3731 }
3732 }
3733 void print_html_header(FILE *fd , char *title ) 
3734 { 
3735 
3736   {
3737   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
3738   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t<html xmlns=\"http://www.w3.org/1999/xhtml\">");
3739   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t<head><LINK rel=\"stylesheet\" type=\"text/css\" href=\"default.css\">");
3740   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t<style type=\"text/css\">");
3741   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\ttable {\n\t\t\t}\n\t\t\tth, td {\n\t\t\t}\n\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\ttext-transform:capitalize;\n\t\t\t\tfont-size: medium;");
3742   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\t}\n\t\t\tA:link {\n\t\t\t\tcolor: darkblue;\n\t\t\t}\n\t\t\tA:visited {\n\t\t\t\tcolor: darkblue;\n\t\t\t}\n\t\t\tA:active {\n\t\t\t\tcolor: violet;");
3743   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\t}\n\t\t\tbody {\n\t\t\t\tcolor: black;\n\t\t\t\tbackground-color: white;\n\t\t\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n");
3744   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\t\tfont-size: small;\n\t\t\t\tborder-width: 10px;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-color: darkblue;\n\t\t\t\tpadding-top: 10px;\n");
3745   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\t\tpadding-left: 32px;\n\t\t\t\tpadding-right: 10px;\n\t\t\t\tpadding-bottom: 10px;\n\t\t\t\tmargin: 10px;\n\t\t\t}\n\t\t\tblockquote {\n");
3746   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t\t\tpadding:10px;\n\t\t\t\tborder:red 5px solid;\n\t\t\t\tborder-style:inset outset inset;\n\t\t\t}\n\t\t</style>\n");
3747   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"\t\t<title>%s</title>\n\t</head>\n\t<body>",
3748           title);
3749   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<Font size=\"5\">Smtp Relay Checker</font><br /><br /><br /><br />\n");
3750   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<table border=\"0\" cellpadding=\"5\" align=\"center\"><tr>\n");
3751   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<td><a href=\"%s\">Checks that Failed</a></td>\n",
3752           failed_file);
3753   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<td><a href=\"%s\">Checks that passed</a></td>\n",
3754           passed);
3755   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<td><a href=\"%s\">Checks that produced errors</a></td>\n",
3756           errord);
3757   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"</tr></table>");
3758   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<br /><br />");
3759   return;
3760 }
3761 }
3762 void print_html_footer(FILE *fd , long smtp_open___0 ) 
3763 { char buf[8193] ;
3764 
3765   {
3766   if (o.hours) {
3767     snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%d Hours, %d Mins and %d Seconds",
3768              o.hours, o.mins, o.seconds);
3769   } else {
3770     if (o.mins) {
3771       snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%d Mins and %d Seconds",
3772                o.mins, o.seconds);
3773     } else {
3774       snprintf((char * __restrict  )(buf), 8192U, (char const   * __restrict  )"%d Seconds",
3775                o.seconds);
3776     }
3777   }
3778   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<br /><br /><center><br /><br /><hr width=\"30%%\">");
3779   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<font size=\"1\">Scanned %ld hosts in %s<br />%ld of which were running mail servers<br />Spencer Hardy - <a href=\"mailto:diceman@dircon.co.uk\">diceman@dircon.co.uk</a><br /><a href=\"http://www.moejo.co.uk/smtprc-website\">http://www.moejo.co.uk/smtprc-website</a></font><hr width=\"30%%\"></center></body>",
3780           o.no_hostnames, buf, smtp_open___0);
3781   return;
3782 }
3783 }
3784 void print_link(FILE *fd , char *link___0 , char *text , char *color ) 
3785 { char buf[30] ;
3786   int x ;
3787   size_t tmp ;
3788 
3789   {
3790   x = 0;
3791   while (1) {
3792     if (x < 20) {
3793       tmp = strlen((char const   *)text);
3794       if (! ((size_t )x < tmp)) {
3795         break;
3796       }
3797     } else {
3798       break;
3799     }
3800     buf[x] = *(text + x);
3801     x ++;
3802   }
3803   buf[x] = (char )'\000';
3804   fprintf((FILE * __restrict  )fd, (char const   * __restrict  )"<a href=\"%s\"><font color=\"%s\">%s</font></a>",
3805           link___0, color, buf);
3806   return;
3807 }
3808 }
3809 char *escape_html_chars(char *string , char *s ) 
3810 { char *p ;
3811   char buf[8193] ;
3812   int count ;
3813   size_t tmp ;
3814   void *tmp___0 ;
3815   char *tmp___1 ;
3816   size_t tmp___2 ;
3817   void *tmp___3 ;
3818   size_t tmp___4 ;
3819   size_t tmp___5 ;
3820 
3821   {
3822   count = 0;
3823   memset((void *)(buf), 0, 8192U);
3824   if ((unsigned int )string == (unsigned int )((void *)0)) {
3825     tmp = strlen("NULL");
3826     tmp___0 = s_malloc((unsigned long )((tmp + 2U) * sizeof(char )));
3827     s = (char *)tmp___0;
3828     strncpy((char * __restrict  )s, (char const   * __restrict  )"NULL", 4U);
3829     *(s + 5) = (char )'\000';
3830     return (s);
3831   }
3832   p = string;
3833   while (1) {
3834     if ((int )*p == 60) {
3835       strncat((char * __restrict  )(buf), (char const   * __restrict  )"&lt;", 8192U);
3836       count += 4;
3837       goto __Cont;
3838     }
3839     if ((int )*p == 62) {
3840       strncat((char * __restrict  )(buf), (char const   * __restrict  )"&gt;", 8192U);
3841       count += 4;
3842       goto __Cont;
3843     }
3844     buf[count] = *p;
3845     count ++;
3846     __Cont: /* CIL Label */ 
3847     tmp___1 = p;
3848     p ++;
3849     if (! ((int )*tmp___1 != 0)) {
3850       break;
3851     }
3852   }
3853   tmp___2 = strlen((char const   *)(buf));
3854   tmp___3 = s_malloc((unsigned long )((tmp___2 + 1U) * sizeof(char )));
3855   s = (char *)tmp___3;
3856   tmp___4 = strlen((char const   *)(buf));
3857   strncpy((char * __restrict  )s, (char const   * __restrict  )(buf), tmp___4);
3858   tmp___5 = strlen((char const   *)(buf));
3859   *(s + tmp___5) = (char )'\000';
3860   return (s);
3861 }
3862 }
3863 #pragma merger(0,"/tmp/cil-0nwjV0jq.i","-Wall,-g,-pthread")
3864 void display_text(void) 
3865 { 
3866 
3867   {
3868   return;
3869 }
3870 }
3871 #pragma merger(0,"/tmp/cil-mL4HxtOc.i","-Wall,-g,-pthread")
3872 void validate_options(void) 
3873 { FILE *fd ;
3874   DIR *dip ;
3875   char dir[8193] ;
3876   char buf[8193] ;
3877   int tmp ;
3878   size_t tmp___0 ;
3879   void *tmp___1 ;
3880   size_t tmp___2 ;
3881   size_t tmp___3 ;
3882   int tmp___4 ;
3883   size_t tmp___5 ;
3884   void *tmp___6 ;
3885   size_t tmp___7 ;
3886   size_t tmp___8 ;
3887   int tmp___9 ;
3888   size_t tmp___10 ;
3889   void *tmp___11 ;
3890   size_t tmp___12 ;
3891   size_t tmp___13 ;
3892   int tmp___14 ;
3893   size_t tmp___15 ;
3894   void *tmp___16 ;
3895   size_t tmp___17 ;
3896   size_t tmp___18 ;
3897   size_t tmp___19 ;
3898   time_t tmp___20 ;
3899 
3900   {
3901   if (f.ip_range) {
3902     if (f.ip_list) {
3903       fatal((char *)"You cannont supply both an ip list and ip range\n");
3904     }
3905   }
3906   if (f.auto_config) {
3907     if (f.generate_config) {
3908       fatal((char *)"You can only generate the auto config file from command line options. You cannot also specify the \'-j\' option.\n");
3909     }
3910   }
3911   if (! f.ip_range) {
3912     if (! f.ip_list) {
3913       fatal((char *)"You must supply either an ip range or a file that contains a list of ip addresses to scan.\n");
3914     }
3915   }
3916   if ((int )o.number_of_threads < 5) {
3917     fatal((char *)"You can only scan with a minumum of 5 threads... please increas the number of threads.\n");
3918   }
3919   if (f.output_html) {
3920     tmp = check_file_path(o.html_file, buf);
3921     if (tmp == -1) {
3922       fatal((char *)"Unable to open output HTML file %s", o.html_file);
3923     }
3924     tmp___0 = strlen((char const   *)(buf));
3925     tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
3926     o.html_path = (char *)tmp___1;
3927     tmp___2 = strlen((char const   *)(buf));
3928     strncpy((char * __restrict  )o.html_path, (char const   * __restrict  )(buf),
3929             tmp___2);
3930     tmp___3 = strlen((char const   *)(buf));
3931     *(o.html_path + tmp___3) = (char )'\000';
3932   }
3933   if (f.output_text) {
3934     tmp___4 = check_file_path(o.text_file, buf);
3935     if (tmp___4 == -1) {
3936       fatal((char *)"Unable to open output TEXT file %s", o.text_file);
3937     }
3938     tmp___5 = strlen((char const   *)(buf));
3939     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
3940     o.text_path = (char *)tmp___6;
3941     tmp___7 = strlen((char const   *)(buf));
3942     strncpy((char * __restrict  )o.text_path, (char const   * __restrict  )(buf),
3943             tmp___7);
3944     tmp___8 = strlen((char const   *)(buf));
3945     *(o.text_path + tmp___8) = (char )'\000';
3946   }
3947   if (f.output_machine) {
3948     tmp___9 = check_file_path(o.machine_file, buf);
3949     if (tmp___9 == -1) {
3950       fatal((char *)"Unable to open output MACHINE file %s", o.machine_file);
3951     }
3952     tmp___10 = strlen((char const   *)(buf));
3953     tmp___11 = s_malloc((unsigned long )((tmp___10 + 1U) * sizeof(char )));
3954     o.machine_path = (char *)tmp___11;
3955     tmp___12 = strlen((char const   *)(buf));
3956     strncpy((char * __restrict  )o.machine_path, (char const   * __restrict  )(buf),
3957             tmp___12);
3958     tmp___13 = strlen((char const   *)(buf));
3959     *(o.machine_path + tmp___13) = (char )'\000';
3960   }
3961   if (f.output_xml) {
3962     tmp___14 = check_file_path(o.xml_file, buf);
3963     if (tmp___14 == -1) {
3964       fatal((char *)"Unable to open output XML file %s", o.xml_file);
3965     }
3966     tmp___15 = strlen((char const   *)(buf));
3967     tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char )));
3968     o.xml_path = (char *)tmp___16;
3969     tmp___17 = strlen((char const   *)(buf));
3970     strncpy((char * __restrict  )o.xml_path, (char const   * __restrict  )(buf), tmp___17);
3971     tmp___18 = strlen((char const   *)(buf));
3972     *(o.xml_path + tmp___18) = (char )'\000';
3973   }
3974   if (f.maildir) {
3975     tmp___19 = strlen((char const   *)o.mailbox);
3976     if ((int )*(o.mailbox + tmp___19) == 47) {
3977       snprintf((char * __restrict  )(dir), 8192U, (char const   * __restrict  )"%snew",
3978                o.mailbox);
3979     } else {
3980       snprintf((char * __restrict  )(dir), 8192U, (char const   * __restrict  )"%s/new",
3981                o.mailbox);
3982     }
3983     dir[8192] = (char )'\000';
3984     dip = opendir((char const   *)(dir));
3985     if ((unsigned int )dip == (unsigned int )((void *)0)) {
3986       fatal((char *)"Unable to open maildir folder (%s)", dir);
3987     }
3988   }
3989   if (f.mbox) {
3990     fd = fopen((char const   * __restrict  )o.mailbox, (char const   * __restrict  )"r");
3991     if ((unsigned int )fd == (unsigned int )((void *)0)) {
3992       fatal((char *)"Unable to mbox (%s)\n", o.mailbox);
3993     }
3994   }
3995   if (((int )f.mbox + (int )f.maildir) + (int )f.pop > 1) {
3996     fatal((char *)"You can only supply one mail retreival format");
3997   }
3998   if (! f.config_file) {
3999     printf((char const   * __restrict  )"\nConfig file not specified, using the default location (%s)\n",
4000            o.config_file);
4001     f.config_file = (unsigned char)1;
4002   }
4003   if (! f.email_template) {
4004     printf((char const   * __restrict  )"\nEmail template not specified, using the default location (%s)\n",
4005            o.email_template);
4006     f.email_template = (unsigned char)1;
4007   }
4008   tmp___20 = time((time_t *)((void *)0));
4009   o.time = (unsigned int )tmp___20;
4010   return;
4011 }
4012 }
4013 #pragma merger(0,"/tmp/cil-SMk1onHu.i","-Wall,-g,-pthread")
4014 int check_banner(int *sockfd , long cur_host , int rule___0 ) ;
4015 int check_helo(int *sockfd , long cur_host , int rule___0 ) ;
4016 int check_mail_from(int *sockfd , long cur_host , int rule___0 ) ;
4017 int check_rcpt_to(int *sockfd , long cur_host , int rule___0 ) ;
4018 int check_send_data_start(int *sockfd , long cur_host , int rule___0 ) ;
4019 int check_send_data(int *sockfd , long cur_host , int rule___0 ) ;
4020 int suspected_open_relay(long cur_host , int rule___0 ) ;
4021 int reset_smtp(int *sockfd , long cur_host , int rule___0 ) ;
4022 int quit_smtp(int *sockfd , long cur_host , int rule___0 ) ;
4023 int relay_check(int *sockfd , long cur_host ) 
4024 { int rule___0 ;
4025   int res ;
4026   int padding ;
4027   char checking[8193] ;
4028 
4029   {
4030   rule___0 = 0;
4031   res = 0;
4032   padding = 60;
4033   if (f.resolve_hostnames) {
4034     if ((*(hosts + cur_host))->resolved) {
4035       if (! f.display_only_ips) {
4036         snprintf((char * __restrict  )(checking), (unsigned int )padding, (char const   * __restrict  )"Checking %s%200c",
4037                  (*(hosts + cur_host))->hostname, ' ');
4038       } else {
4039         snprintf((char * __restrict  )(checking), (unsigned int )padding, (char const   * __restrict  )"Checking %s%200c",
4040                  (*(hosts + cur_host))->ip_address, ' ');
4041       }
4042     } else {
4043       snprintf((char * __restrict  )(checking), (unsigned int )padding, (char const   * __restrict  )"Checking %s%200c",
4044                (*(hosts + cur_host))->ip_address, ' ');
4045     }
4046   } else {
4047     snprintf((char * __restrict  )(checking), (unsigned int )padding, (char const   * __restrict  )"Checking %s%200c",
4048              (*(hosts + cur_host))->ip_address, ' ');
4049   }
4050   rule___0 = 0;
4051   while (rule___0 <= (int )o.no_rules) {
4052     if (! rule___0) {
4053       res = check_banner(sockfd, cur_host, rule___0);
4054       if (res == -1) {
4055         strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4056                 8192U);
4057         if (f.verbose) {
4058           printf((char const   * __restrict  )"%s\n", checking);
4059         }
4060         return (-1);
4061       } else {
4062         if (res == 1) {
4063           strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4064                   8192U);
4065           goto RESET;
4066         }
4067       }
4068       res = check_helo(sockfd, cur_host, rule___0);
4069       if (res == -1) {
4070         strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4071                 8192U);
4072         if (f.verbose) {
4073           printf((char const   * __restrict  )"%s\n", checking);
4074         }
4075         return (-1);
4076       } else {
4077         if (res == 1) {
4078           strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4079                   8192U);
4080           goto RESET;
4081         }
4082       }
4083     }
4084     res = check_mail_from(sockfd, cur_host, rule___0);
4085     if (res == -1) {
4086       strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4087               8192U);
4088       if (f.verbose) {
4089         printf((char const   * __restrict  )"%s\n", checking);
4090       }
4091       return (-1);
4092     } else {
4093       if (res == 1) {
4094         strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4095                 8192U);
4096         goto RESET;
4097       }
4098     }
4099     res = check_rcpt_to(sockfd, cur_host, rule___0);
4100     if (res == -1) {
4101       strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4102               8192U);
4103       if (f.verbose) {
4104         printf((char const   * __restrict  )"%s\n", checking);
4105       }
4106       return (-1);
4107     } else {
4108       if (res == 1) {
4109         strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4110                 8192U);
4111         goto RESET;
4112       }
4113     }
4114     res = check_send_data_start(sockfd, cur_host, rule___0);
4115     if (res == -1) {
4116       strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4117               8192U);
4118       if (f.verbose) {
4119         printf((char const   * __restrict  )"%s\n", checking);
4120       }
4121       return (-1);
4122     } else {
4123       if (res == 1) {
4124         strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4125                 8192U);
4126         goto RESET;
4127       }
4128     }
4129     res = check_send_data(sockfd, cur_host, rule___0);
4130     if (res == -1) {
4131       strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4132               8192U);
4133       if (f.verbose) {
4134         printf((char const   * __restrict  )"%s\n", checking);
4135       }
4136       return (-1);
4137     } else {
4138       if (res == 1) {
4139         strncat((char * __restrict  )(checking), (char const   * __restrict  )" o",
4140                 8192U);
4141         goto RESET;
4142       }
4143     }
4144     strncat((char * __restrict  )(checking), (char const   * __restrict  )" x", 8192U);
4145     (*((*(hosts + cur_host))->smtp_check + rule___0))->failed = (unsigned char)1;
4146     suspected_open_relay(cur_host, rule___0);
4147     RESET: 
4148     res = reset_smtp(sockfd, cur_host, rule___0);
4149     if (res == -1) {
4150       strncat((char * __restrict  )(checking), (char const   * __restrict  )" !",
4151               8192U);
4152       printf((char const   * __restrict  )"%s\n", checking);
4153       return (-1);
4154     }
4155     rule___0 ++;
4156   }
4157   res = quit_smtp(sockfd, cur_host, (int )o.no_rules);
4158   if (res == -1) {
4159     strncat((char * __restrict  )(checking), (char const   * __restrict  )" !", (unsigned int )padding);
4160     printf((char const   * __restrict  )"%s\n", checking);
4161     return (-1);
4162   }
4163   printf((char const   * __restrict  )"%s\n", checking);
4164   return (0);
4165 }
4166 }
4167 #pragma merger(0,"/tmp/cil-AnIOkWli.i","-Wall,-g,-pthread")
4168 void fatal(char *fmt  , ...) 
4169 { va_list ap ;
4170 
4171   {
4172   __builtin_va_start(ap, fmt);
4173   fflush(stdout);
4174   fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"ERROR: ");
4175   vfprintf((FILE * __restrict  )stderr, (char const   * __restrict  )fmt, ap);
4176   fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\nQUITTING!\n");
4177   __builtin_va_end(ap);
4178   exit(1);
4179   return;
4180 }
4181 }
4182 void error(char *fmt  , ...) 
4183 { va_list ap ;
4184 
4185   {
4186   __builtin_va_start(ap, fmt);
4187   fflush(stdout);
4188   vfprintf((FILE * __restrict  )stderr, (char const   * __restrict  )fmt, ap);
4189   fprintf((FILE * __restrict  )stderr, (char const   * __restrict  )"\n");
4190   __builtin_va_end(ap);
4191   return;
4192 }
4193 }
4194 #pragma merger(0,"/tmp/cil-d6rPGVlq.i","-Wall,-g,-pthread")
4195 void display_machine(void) 
4196 { 
4197 
4198   {
4199   return;
4200 }
4201 }
4202 #pragma merger(0,"/tmp/cil-EuTtXGmx.i","-Wall,-g,-pthread")
4203 void display_xml(void) 
4204 { 
4205 
4206   {
4207   return;
4208 }
4209 }
4210 /* compiler builtin: 
4211    void *__builtin_alloca(unsigned int  ) ;  */
4212 #pragma merger(0,"/tmp/cil-SKHJ9eww.i","-Wall,-g,-pthread")
4213 extern char *optarg ;
4214 extern  __attribute__((__nothrow__)) int getopt(int ___argc , char * const  *___argv ,
4215                                                 char const   *__shortopts ) ;
4216 void usage(char *pname ) ;
4217 struct options o  ;
4218 struct flags f  ;
4219 void parse_args(int argc , char * const  *argv ) 
4220 { char c ;
4221   size_t tmp ;
4222   void *tmp___0 ;
4223   size_t tmp___1 ;
4224   size_t tmp___2 ;
4225   size_t tmp___3 ;
4226   void *tmp___4 ;
4227   size_t tmp___5 ;
4228   size_t tmp___6 ;
4229   size_t tmp___7 ;
4230   void *tmp___8 ;
4231   size_t tmp___9 ;
4232   size_t tmp___10 ;
4233   size_t tmp___11 ;
4234   void *tmp___12 ;
4235   size_t tmp___13 ;
4236   size_t tmp___14 ;
4237   size_t tmp___15 ;
4238   void *tmp___16 ;
4239   size_t tmp___17 ;
4240   size_t tmp___18 ;
4241   size_t tmp___19 ;
4242   void *tmp___20 ;
4243   size_t tmp___21 ;
4244   size_t tmp___22 ;
4245   size_t tmp___23 ;
4246   void *tmp___24 ;
4247   size_t tmp___25 ;
4248   size_t tmp___26 ;
4249   int tmp___27 ;
4250   int tmp___28 ;
4251   size_t tmp___29 ;
4252   void *tmp___30 ;
4253   size_t tmp___31 ;
4254   size_t tmp___32 ;
4255   int tmp___33 ;
4256   int tmp___34 ;
4257   size_t tmp___35 ;
4258   void *tmp___36 ;
4259   size_t tmp___37 ;
4260   size_t tmp___38 ;
4261   size_t tmp___39 ;
4262   void *tmp___40 ;
4263   size_t tmp___41 ;
4264   size_t tmp___42 ;
4265   size_t tmp___43 ;
4266   void *tmp___44 ;
4267   size_t tmp___45 ;
4268   size_t tmp___46 ;
4269   size_t tmp___47 ;
4270   void *tmp___48 ;
4271   size_t tmp___49 ;
4272   size_t tmp___50 ;
4273   size_t tmp___51 ;
4274   void *tmp___52 ;
4275   size_t tmp___53 ;
4276   size_t tmp___54 ;
4277   size_t tmp___55 ;
4278   void *tmp___56 ;
4279   size_t tmp___57 ;
4280   size_t tmp___58 ;
4281   int tmp___59 ;
4282 
4283   {
4284   while (1) {
4285     tmp___59 = getopt(argc, argv, "ab:c:de:f:g:hi:j:k:l:m:no:p:qr:s:tu:vw:x:y:");
4286     c = (char )tmp___59;
4287     if (! ((int )c != -1)) {
4288       break;
4289     }
4290     switch ((int )c) {
4291     case 97: 
4292     f.display_all = (unsigned char)1;
4293     break;
4294     case 98: 
4295     f.send_email = (unsigned char)1;
4296     tmp = strlen((char const   *)optarg);
4297     tmp___0 = s_malloc((unsigned long )((tmp + 1U) * sizeof(char )));
4298     o.email_address = (char *)tmp___0;
4299     tmp___1 = strlen((char const   *)optarg);
4300     strncpy((char * __restrict  )o.email_address, (char const   * __restrict  )optarg,
4301             tmp___1);
4302     tmp___2 = strlen((char const   *)optarg);
4303     *(o.email_address + tmp___2) = (char )'\000';
4304     break;
4305     case 99: 
4306     f.config_file = (unsigned char)1;
4307     tmp___3 = strlen((char const   *)(optarg + 1));
4308     tmp___4 = realloc((void *)o.config_file, tmp___3 * sizeof(char ));
4309     o.config_file = (char *)tmp___4;
4310     if ((unsigned int )o.config_file == (unsigned int )((void *)0)) {
4311       fatal((char *)"Realloc Error\n");
4312     }
4313     tmp___5 = strlen((char const   *)optarg);
4314     strncpy((char * __restrict  )o.config_file, (char const   * __restrict  )optarg,
4315             tmp___5);
4316     tmp___6 = strlen((char const   *)optarg);
4317     *(o.config_file + tmp___6) = (char )'\000';
4318     break;
4319     case 100: 
4320     f.debug = (unsigned char)1;
4321     break;
4322     case 101: 
4323     f.check_mailbox = (unsigned char)1;
4324     f.mbox = (unsigned char)1;
4325     tmp___7 = strlen((char const   *)optarg);
4326     tmp___8 = s_malloc((unsigned long )((tmp___7 + 1U) * sizeof(char )));
4327     o.mailbox = (char *)tmp___8;
4328     tmp___9 = strlen((char const   *)optarg);
4329     strncpy((char * __restrict  )o.mailbox, (char const   * __restrict  )optarg, tmp___9);
4330     tmp___10 = strlen((char const   *)optarg);
4331     *(o.mailbox + tmp___10) = (char )'\000';
4332     break;
4333     case 102: 
4334     not_implemented();
4335     f.output_text = (unsigned char)1;
4336     tmp___11 = strlen((char const   *)optarg);
4337     tmp___12 = s_malloc((unsigned long )((tmp___11 + 1U) * sizeof(char )));
4338     o.text_file = (char *)tmp___12;
4339     tmp___13 = strlen((char const   *)optarg);
4340     strncpy((char * __restrict  )o.text_file, (char const   * __restrict  )optarg,
4341             tmp___13);
4342     tmp___14 = strlen((char const   *)optarg);
4343     *(o.text_file + tmp___14) = (char )'\000';
4344     break;
4345     case 104: 
4346     usage((char *)*(argv + 0));
4347     break;
4348     case 105: 
4349     f.ip_list = (unsigned char)1;
4350     tmp___15 = strlen((char const   *)optarg);
4351     tmp___16 = s_malloc((unsigned long )((tmp___15 + 1U) * sizeof(char )));
4352     o.ip_list = (char *)tmp___16;
4353     tmp___17 = strlen((char const   *)optarg);
4354     strncpy((char * __restrict  )o.ip_list, (char const   * __restrict  )optarg, tmp___17);
4355     tmp___18 = strlen((char const   *)optarg);
4356     *(o.ip_list + tmp___18) = (char )'\000';
4357     break;
4358     case 106: 
4359     f.auto_config = (unsigned char)1;
4360     tmp___19 = strlen((char const   *)optarg);
4361     tmp___20 = s_malloc((unsigned long )((tmp___19 + 1U) * sizeof(char )));
4362     o.auto_config_file = (char *)tmp___20;
4363     tmp___21 = strlen((char const   *)optarg);
4364     strncpy((char * __restrict  )o.auto_config_file, (char const   * __restrict  )optarg,
4365             tmp___21);
4366     tmp___22 = strlen((char const   *)optarg);
4367     *(o.auto_config_file + tmp___22) = (char )'\000';
4368     break;
4369     case 107: 
4370     f.generate_config = (unsigned char)1;
4371     tmp___23 = strlen((char const   *)optarg);
4372     tmp___24 = s_malloc((unsigned long )((tmp___23 + 1U) * sizeof(char )));
4373     o.generate_file = (char *)tmp___24;
4374     tmp___25 = strlen((char const   *)optarg);
4375     strncpy((char * __restrict  )o.generate_file, (char const   * __restrict  )optarg,
4376             tmp___25);
4377     tmp___26 = strlen((char const   *)optarg);
4378     *(o.generate_file + tmp___26) = (char )'\000';
4379     break;
4380     case 108: 
4381     tmp___27 = atoi((char const   *)optarg);
4382     o.c_timeout = (unsigned short )tmp___27;
4383     break;
4384     case 109: 
4385     tmp___28 = atoi((char const   *)optarg);
4386     o.m_timeout = (unsigned short )tmp___28;
4387     break;
4388     case 110: 
4389     f.resolve_hostnames = (unsigned char)1;
4390     break;
4391     case 111: 
4392     f.output_machine = (unsigned char)1;
4393     tmp___29 = strlen((char const   *)optarg);
4394     tmp___30 = s_malloc((unsigned long )((tmp___29 + 1U) * sizeof(char )));
4395     o.machine_file = (char *)tmp___30;
4396     tmp___31 = strlen((char const   *)optarg);
4397     strncpy((char * __restrict  )o.machine_file, (char const   * __restrict  )optarg,
4398             tmp___31);
4399     tmp___32 = strlen((char const   *)optarg);
4400     *(o.machine_file + tmp___32) = (char )'\000';
4401     break;
4402     case 112: 
4403     tmp___33 = atoi((char const   *)optarg);
4404     o.number_of_threads = (unsigned short )tmp___33;
4405     break;
4406     case 113: 
4407     f.display_only_ips = (unsigned char)1;
4408     break;
4409     case 114: 
4410     tmp___34 = atoi((char const   *)optarg);
4411     o.r_timeout = (unsigned short )tmp___34;
4412     break;
4413     case 115: 
4414     f.ip_range = (unsigned char)1;
4415     tmp___35 = strlen((char const   *)optarg);
4416     tmp___36 = s_malloc((unsigned long )((tmp___35 + 1U) * sizeof(char )));
4417     o.ip_range = (char *)tmp___36;
4418     tmp___37 = strlen((char const   *)optarg);
4419     strncpy((char * __restrict  )o.ip_range, (char const   * __restrict  )optarg,
4420             tmp___37);
4421     tmp___38 = strlen((char const   *)optarg);
4422     *(o.ip_range + tmp___38) = (char )'\000';
4423     break;
4424     case 117: 
4425     f.check_mailbox = (unsigned char)1;
4426     f.maildir = (unsigned char)1;
4427     tmp___39 = strlen((char const   *)optarg);
4428     tmp___40 = s_malloc((unsigned long )((tmp___39 + 1U) * sizeof(char )));
4429     o.mailbox = (char *)tmp___40;
4430     tmp___41 = strlen((char const   *)optarg);
4431     strncpy((char * __restrict  )o.mailbox, (char const   * __restrict  )optarg, tmp___41);
4432     tmp___42 = strlen((char const   *)optarg);
4433     *(o.mailbox + tmp___42) = (char )'\000';
4434     break;
4435     case 118: 
4436     f.verbose = (unsigned char )((int )f.verbose + 1);
4437     break;
4438     case 119: 
4439     f.output_html = (unsigned char)1;
4440     tmp___43 = strlen((char const   *)optarg);
4441     tmp___44 = s_malloc((unsigned long )((tmp___43 + 1U) * sizeof(char )));
4442     o.html_file = (char *)tmp___44;
4443     tmp___45 = strlen((char const   *)optarg);
4444     strncpy((char * __restrict  )o.html_file, (char const   * __restrict  )optarg,
4445             tmp___45);
4446     tmp___46 = strlen((char const   *)optarg);
4447     *(o.html_file + tmp___46) = (char )'\000';
4448     break;
4449     case 120: 
4450     not_implemented();
4451     f.output_xml = (unsigned char)1;
4452     tmp___47 = strlen((char const   *)optarg);
4453     tmp___48 = s_malloc((unsigned long )((tmp___47 + 1U) * sizeof(char )));
4454     o.xml_file = (char *)tmp___48;
4455     tmp___49 = strlen((char const   *)optarg);
4456     strncpy((char * __restrict  )o.xml_file, (char const   * __restrict  )optarg,
4457             tmp___49);
4458     tmp___50 = strlen((char const   *)optarg);
4459     *(o.xml_file + tmp___50) = (char )'\000';
4460     case 121: 
4461     f.email_template = (unsigned char)1;
4462     tmp___51 = strlen((char const   *)(optarg + 1));
4463     tmp___52 = realloc((void *)o.email_template, tmp___51 * sizeof(char ));
4464     o.email_template = (char *)tmp___52;
4465     if ((unsigned int )o.email_template == (unsigned int )((void *)0)) {
4466       fatal((char *)"Realloc Error\n");
4467     }
4468     tmp___53 = strlen((char const   *)optarg);
4469     strncpy((char * __restrict  )o.email_template, (char const   * __restrict  )optarg,
4470             tmp___53);
4471     tmp___54 = strlen((char const   *)optarg);
4472     *(o.email_template + tmp___54) = (char )'\000';
4473     break;
4474     case 122: 
4475     not_implemented();
4476     f.output_machine = (unsigned char)1;
4477     tmp___55 = strlen((char const   *)optarg);
4478     tmp___56 = s_malloc((unsigned long )((tmp___55 + 1U) * sizeof(char )));
4479     o.machine_file = (char *)tmp___56;
4480     tmp___57 = strlen((char const   *)optarg);
4481     strncpy((char * __restrict  )o.machine_file, (char const   * __restrict  )optarg,
4482             tmp___57);
4483     tmp___58 = strlen((char const   *)optarg);
4484     *(o.machine_file + tmp___58) = (char )'\000';
4485     case 63: 
4486     usage((char *)*(argv + 0));
4487     default: 
4488     usage((char *)*(argv + 0));
4489     }
4490   }
4491   return;
4492 }
4493 }
4494 int get_domain(void) 
4495 { char *p ;
4496   char *t ;
4497   size_t tmp ;
4498   char *email ;
4499   unsigned int __lengthofemail ;
4500   void *tmp___0 ;
4501   int flag ;
4502   unsigned short const   **tmp___1 ;
4503   unsigned short const   **tmp___2 ;
4504   unsigned short const   **tmp___3 ;
4505   char *tmp___4 ;
4506   size_t tmp___5 ;
4507   void *tmp___6 ;
4508   size_t tmp___7 ;
4509   size_t tmp___8 ;
4510   size_t tmp___9 ;
4511   void *tmp___10 ;
4512   size_t tmp___11 ;
4513   size_t tmp___12 ;
4514 
4515   {
4516   tmp = strlen((char const   *)o.email_address);
4517   __lengthofemail = tmp + 1U;
4518   tmp___0 = __builtin_alloca(sizeof(*email) * __lengthofemail);
4519   email = (char *)tmp___0;
4520   flag = 0;
4521   strncpy((char * __restrict  )email, (char const   * __restrict  )o.email_address,
4522           sizeof(*email) * __lengthofemail);
4523   p = o.email_address;
4524   while (1) {
4525     tmp___4 = p;
4526     p ++;
4527     if (! *tmp___4) {
4528       break;
4529     }
4530     if ((int )*p == 0) {
4531       goto _L;
4532     } else {
4533       tmp___3 = __ctype_b_loc();
4534       if ((int const   )*(*tmp___3 + (int )*p) & 8) {
4535         goto _L;
4536       } else {
4537         if ((int )*p == 46) {
4538           goto _L;
4539         } else {
4540           if ((int )*p == 45) {
4541             goto _L;
4542           } else {
4543             if ((int )*p == 95) {
4544               goto _L;
4545             } else {
4546               if ((int )*p == 64) {
4547                 _L: /* CIL Label */ 
4548                 if ((int )*p == 64) {
4549                   flag ++;
4550                   t = p;
4551                   tmp___1 = __ctype_b_loc();
4552                   t ++;
4553                   if (! ((int const   )*(*tmp___1 + (int )*t) & 8)) {
4554                     fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4555                           email);
4556                   }
4557                   t = p;
4558                   tmp___2 = __ctype_b_loc();
4559                   t --;
4560                   if (! ((int const   )*(*tmp___2 + (int )*t) & 8)) {
4561                     fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4562                           email);
4563                   }
4564                   t = p;
4565                   *t = (char )'\000';
4566                   t ++;
4567                   p ++;
4568                 }
4569               } else {
4570                 fatal((char *)"The email address you have supplied %s is incorrect!!\n",
4571                       email);
4572               }
4573             }
4574           }
4575         }
4576       }
4577     }
4578   }
4579   if (! flag) {
4580     fatal((char *)"The email address you have supplied %s is incorrect!!\n", email);
4581   } else {
4582     if (flag > 2) {
4583       fatal((char *)"The email address you have supplied %s is incorrect!!\n", email);
4584     }
4585   }
4586   tmp___5 = strlen((char const   *)t);
4587   tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4588   o.domain = (char *)tmp___6;
4589   tmp___7 = strlen((char const   *)t);
4590   strncpy((char * __restrict  )o.domain, (char const   * __restrict  )t, tmp___7);
4591   tmp___8 = strlen((char const   *)t);
4592   *(o.domain + tmp___8) = (char )'\000';
4593   tmp___9 = strlen((char const   *)o.email_address);
4594   tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4595   o.name = (char *)tmp___10;
4596   tmp___11 = strlen((char const   *)o.email_address);
4597   strncpy((char * __restrict  )o.name, (char const   * __restrict  )o.email_address,
4598           tmp___11);
4599   tmp___12 = strlen((char const   *)o.email_address);
4600   *(o.name + tmp___12) = (char )'\000';
4601   debug((char *)"name: %s domain: %s\n", o.name, o.domain);
4602   return (0);
4603 }
4604 }
4605 #pragma merger(0,"/tmp/cil-pi4v49pL.i","-Wall,-g,-pthread")
4606 extern ssize_t send(int __fd , void const   *__buf , size_t __n , int __flags ) ;
4607 int write_smtp(int *sockfd , char *string , long cur_host ) 
4608 { int size ;
4609   size_t tmp ;
4610   int ret ;
4611   int *tmp___0 ;
4612 
4613   {
4614   tmp = strlen((char const   *)string);
4615   size = (int )tmp;
4616   ret = 0;
4617   ret = send(*sockfd, (void const   *)string, (unsigned int )size, 16384);
4618   if (ret == -1) {
4619     tmp___0 = __errno_location();
4620     if (*tmp___0 == 16384) {
4621       (*(hosts + cur_host))->fatal_error = (unsigned char)1;
4622     } else {
4623       if (ret != size) {
4624         (*(hosts + cur_host))->fatal_error = (unsigned char)1;
4625       } else {
4626         (*(hosts + cur_host))->fatal_error = (unsigned char)2;
4627       }
4628     }
4629     return (-1);
4630   }
4631   return (0);
4632 }
4633 }
4634 int read_smtp(int *sockfd , char *dest , long cur_host ) 
4635 { int ret ;
4636 
4637   {
4638   ret = read_timeo(*sockfd, dest, 8192, (int )o.r_timeout);
4639   if (ret == -1) {
4640     (*(hosts + cur_host))->fatal_error = (unsigned char)3;
4641     return (-1);
4642   }
4643   if (! ret) {
4644     (*(hosts + cur_host))->fatal_error = (unsigned char)4;
4645     return (-1);
4646   }
4647   return (0);
4648 }
4649 }
4650 int check_banner(int *sockfd , long cur_host , int rule___0 ) 
4651 { char *buf ;
4652   int res ;
4653   void *tmp ;
4654   size_t tmp___0 ;
4655   void *tmp___1 ;
4656   size_t tmp___2 ;
4657   size_t tmp___3 ;
4658   size_t tmp___4 ;
4659   void *tmp___5 ;
4660   size_t tmp___6 ;
4661   size_t tmp___7 ;
4662   size_t tmp___8 ;
4663   void *tmp___9 ;
4664   size_t tmp___10 ;
4665   size_t tmp___11 ;
4666   size_t tmp___12 ;
4667   void *tmp___13 ;
4668   size_t tmp___14 ;
4669   size_t tmp___15 ;
4670   int tmp___16 ;
4671   int tmp___17 ;
4672   int tmp___18 ;
4673 
4674   {
4675   res = 0;
4676   tmp = s_zmalloc((int )(8193U * sizeof(char )));
4677   buf = (char *)tmp;
4678   res = read_smtp(sockfd, buf, cur_host);
4679   if (res == -1) {
4680     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4681     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)1;
4682     free((void *)buf);
4683     return (-1);
4684   }
4685   tmp___18 = strncmp((char const   *)buf, "220", 3U);
4686   if (tmp___18) {
4687     tmp___17 = strncmp((char const   *)buf, "421", 3U);
4688     if (tmp___17) {
4689       tmp___16 = strncmp((char const   *)buf, "521", 3U);
4690       if (tmp___16) {
4691         (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4692         (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4693         (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4694         tmp___12 = strlen((char const   *)buf);
4695         tmp___13 = s_malloc((unsigned long )((tmp___12 + 1U) * sizeof(char )));
4696         (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___13;
4697         tmp___14 = strlen((char const   *)buf);
4698         strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4699                 (char const   * __restrict  )buf, tmp___14);
4700         tmp___15 = strlen((char const   *)buf);
4701         *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___15) = (char )'\000';
4702         free((void *)buf);
4703         return (-1);
4704       } else {
4705         (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4706         (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4707         (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4708         tmp___8 = strlen((char const   *)buf);
4709         tmp___9 = s_malloc((unsigned long )((tmp___8 + 1U) * sizeof(char )));
4710         (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___9;
4711         tmp___10 = strlen((char const   *)buf);
4712         strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4713                 (char const   * __restrict  )buf, tmp___10);
4714         tmp___11 = strlen((char const   *)buf);
4715         *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___11) = (char )'\000';
4716         free((void *)buf);
4717         return (-1);
4718       }
4719     } else {
4720       (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4721       (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4722       (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)2;
4723       tmp___4 = strlen((char const   *)buf);
4724       tmp___5 = s_malloc((unsigned long )((tmp___4 + 1U) * sizeof(char )));
4725       (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___5;
4726       tmp___6 = strlen((char const   *)buf);
4727       strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4728               (char const   * __restrict  )buf, tmp___6);
4729       tmp___7 = strlen((char const   *)buf);
4730       *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___7) = (char )'\000';
4731       free((void *)buf);
4732       return (-1);
4733     }
4734   } else {
4735     tmp___0 = strlen((char const   *)buf);
4736     tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4737     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner = (char *)tmp___1;
4738     tmp___2 = strlen((char const   *)buf);
4739     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner,
4740             (char const   * __restrict  )buf, tmp___2);
4741     tmp___3 = strlen((char const   *)buf);
4742     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_banner + tmp___3) = (char )'\000';
4743     free((void *)buf);
4744     return (0);
4745   }
4746   free((void *)buf);
4747   return (-1);
4748 }
4749 }
4750 int check_helo(int *sockfd , long cur_host , int rule___0 ) 
4751 { char *buf ;
4752   int res ;
4753   void *tmp ;
4754   size_t tmp___0 ;
4755   void *tmp___1 ;
4756   size_t tmp___2 ;
4757   size_t tmp___3 ;
4758   int tmp___4 ;
4759   size_t tmp___5 ;
4760   void *tmp___6 ;
4761   size_t tmp___7 ;
4762   size_t tmp___8 ;
4763   size_t tmp___9 ;
4764   void *tmp___10 ;
4765   size_t tmp___11 ;
4766   size_t tmp___12 ;
4767   size_t tmp___13 ;
4768   void *tmp___14 ;
4769   size_t tmp___15 ;
4770   size_t tmp___16 ;
4771   int tmp___17 ;
4772   int tmp___18 ;
4773 
4774   {
4775   res = 0;
4776   tmp = s_zmalloc((int )(8193U * sizeof(char )));
4777   buf = (char *)tmp;
4778   swap_rule(buf, (char const   *)(*(rules + rule___0))->helo, (int )cur_host);
4779   convert_rule(buf, 1);
4780   tmp___0 = strlen((char const   *)buf);
4781   tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4782   (*((*(hosts + cur_host))->smtp_check + rule___0))->helo = (char *)tmp___1;
4783   tmp___2 = strlen((char const   *)buf);
4784   strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->helo,
4785           (char const   * __restrict  )buf, tmp___2);
4786   tmp___3 = strlen((char const   *)buf);
4787   *((*((*(hosts + cur_host))->smtp_check + rule___0))->helo + tmp___3) = (char )'\000';
4788   tmp___4 = write_smtp(sockfd, buf, cur_host);
4789   if (tmp___4 == -1) {
4790     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4791     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)3;
4792     free((void *)buf);
4793     return (-1);
4794   }
4795   memset((void *)buf, 0, 8192U);
4796   res = read_smtp(sockfd, buf, cur_host);
4797   if (res == -1) {
4798     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4799     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)4;
4800     free((void *)buf);
4801     return (-1);
4802   }
4803   tmp___18 = strncmp((char const   *)buf, "250", 3U);
4804   if (tmp___18) {
4805     tmp___17 = strncmp((char const   *)buf, "421", 3U);
4806     if (tmp___17) {
4807       (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4808       (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4809       (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)5;
4810       tmp___13 = strlen((char const   *)buf);
4811       tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
4812       (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___14;
4813       tmp___15 = strlen((char const   *)buf);
4814       strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4815               (char const   * __restrict  )buf, tmp___15);
4816       tmp___16 = strlen((char const   *)buf);
4817       *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___16) = (char )'\000';
4818       free((void *)buf);
4819       return (-1);
4820     } else {
4821       (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4822       (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4823       (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)5;
4824       tmp___9 = strlen((char const   *)buf);
4825       tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4826       (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___10;
4827       tmp___11 = strlen((char const   *)buf);
4828       strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4829               (char const   * __restrict  )buf, tmp___11);
4830       tmp___12 = strlen((char const   *)buf);
4831       *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___12) = (char )'\000';
4832       free((void *)buf);
4833       return (-1);
4834     }
4835   } else {
4836     tmp___5 = strlen((char const   *)buf);
4837     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4838     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo = (char *)tmp___6;
4839     tmp___7 = strlen((char const   *)buf);
4840     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo,
4841             (char const   * __restrict  )buf, tmp___7);
4842     tmp___8 = strlen((char const   *)buf);
4843     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_helo + tmp___8) = (char )'\000';
4844     free((void *)buf);
4845     return (0);
4846   }
4847   free((void *)buf);
4848   return (-1);
4849 }
4850 }
4851 int check_mail_from(int *sockfd , long cur_host , int rule___0 ) 
4852 { char *buf ;
4853   int res ;
4854   void *tmp ;
4855   size_t tmp___0 ;
4856   void *tmp___1 ;
4857   size_t tmp___2 ;
4858   size_t tmp___3 ;
4859   int tmp___4 ;
4860   size_t tmp___5 ;
4861   void *tmp___6 ;
4862   size_t tmp___7 ;
4863   size_t tmp___8 ;
4864   size_t tmp___9 ;
4865   void *tmp___10 ;
4866   size_t tmp___11 ;
4867   size_t tmp___12 ;
4868   size_t tmp___13 ;
4869   void *tmp___14 ;
4870   size_t tmp___15 ;
4871   size_t tmp___16 ;
4872   size_t tmp___17 ;
4873   void *tmp___18 ;
4874   size_t tmp___19 ;
4875   size_t tmp___20 ;
4876   size_t tmp___21 ;
4877   void *tmp___22 ;
4878   size_t tmp___23 ;
4879   size_t tmp___24 ;
4880   int tmp___25 ;
4881   int tmp___26 ;
4882   int tmp___27 ;
4883   unsigned short const   **tmp___28 ;
4884   unsigned short const   **tmp___29 ;
4885   int tmp___30 ;
4886 
4887   {
4888   res = 0;
4889   tmp = s_zmalloc((int )(8193U * sizeof(char )));
4890   buf = (char *)tmp;
4891   swap_rule(buf, (char const   *)(*(rules + rule___0))->mail_from, (int )cur_host);
4892   convert_rule(buf, 2);
4893   tmp___0 = strlen((char const   *)buf);
4894   tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
4895   (*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from = (char *)tmp___1;
4896   tmp___2 = strlen((char const   *)buf);
4897   strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from,
4898           (char const   * __restrict  )buf, tmp___2);
4899   tmp___3 = strlen((char const   *)buf);
4900   *((*((*(hosts + cur_host))->smtp_check + rule___0))->mail_from + tmp___3) = (char )'\000';
4901   tmp___4 = write_smtp(sockfd, buf, cur_host);
4902   if (tmp___4 == -1) {
4903     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4904     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)6;
4905     free((void *)buf);
4906     return (-1);
4907   }
4908   memset((void *)buf, 0, 8192U);
4909   res = read_smtp(sockfd, buf, cur_host);
4910   if (res == -1) {
4911     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4912     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)7;
4913     free((void *)buf);
4914     return (-1);
4915   }
4916   tmp___30 = strncmp((char const   *)buf, "250", 3U);
4917   if (tmp___30) {
4918     if ((int )*(buf + 0) == 53) {
4919       tmp___28 = __ctype_b_loc();
4920       if ((int const   )*(*tmp___28 + (int )*(buf + 1)) & 2048) {
4921         tmp___29 = __ctype_b_loc();
4922         if ((int const   )*(*tmp___29 + (int )*(buf + 2)) & 2048) {
4923           (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)3;
4924           tmp___9 = strlen((char const   *)buf);
4925           tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
4926           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___10;
4927           tmp___11 = strlen((char const   *)buf);
4928           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4929                   (char const   * __restrict  )buf, tmp___11);
4930           tmp___12 = strlen((char const   *)buf);
4931           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___12) = (char )'\000';
4932           free((void *)buf);
4933           return (1);
4934         } else {
4935           goto _L___1;
4936         }
4937       } else {
4938         goto _L___1;
4939       }
4940     } else {
4941       _L___1: /* CIL Label */ 
4942       tmp___26 = strncmp((char const   *)buf, "451", 3U);
4943       if (tmp___26) {
4944         tmp___27 = strncmp((char const   *)buf, "452", 3U);
4945         if (tmp___27) {
4946           tmp___25 = strncmp((char const   *)buf, "421", 3U);
4947           if (tmp___25) {
4948             (*(hosts + cur_host))->fatal_error = (unsigned char)6;
4949             (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4950             (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4951             tmp___21 = strlen((char const   *)buf);
4952             tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
4953             (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___22;
4954             tmp___23 = strlen((char const   *)buf);
4955             strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4956                     (char const   * __restrict  )buf, tmp___23);
4957             tmp___24 = strlen((char const   *)buf);
4958             *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___24) = (char )'\000';
4959             free((void *)buf);
4960             return (-1);
4961           } else {
4962             (*(hosts + cur_host))->fatal_error = (unsigned char)5;
4963             (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4964             (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4965             tmp___17 = strlen((char const   *)buf);
4966             tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
4967             (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___18;
4968             tmp___19 = strlen((char const   *)buf);
4969             strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4970                     (char const   * __restrict  )buf, tmp___19);
4971             tmp___20 = strlen((char const   *)buf);
4972             *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___20) = (char )'\000';
4973             free((void *)buf);
4974             return (-1);
4975           }
4976         } else {
4977           _L: /* CIL Label */ 
4978           (*(hosts + cur_host))->fatal_error = (unsigned char)7;
4979           (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
4980           (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)8;
4981           tmp___13 = strlen((char const   *)buf);
4982           tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
4983           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___14;
4984           tmp___15 = strlen((char const   *)buf);
4985           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
4986                   (char const   * __restrict  )buf, tmp___15);
4987           tmp___16 = strlen((char const   *)buf);
4988           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___16) = (char )'\000';
4989           free((void *)buf);
4990           return (-1);
4991         }
4992       } else {
4993         goto _L;
4994       }
4995     }
4996   } else {
4997     tmp___5 = strlen((char const   *)buf);
4998     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
4999     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from = (char *)tmp___6;
5000     tmp___7 = strlen((char const   *)buf);
5001     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from,
5002             (char const   * __restrict  )buf, tmp___7);
5003     tmp___8 = strlen((char const   *)buf);
5004     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_mail_from + tmp___8) = (char )'\000';
5005     free((void *)buf);
5006     return (0);
5007   }
5008   free((void *)buf);
5009   return (-1);
5010 }
5011 }
5012 int check_rcpt_to(int *sockfd , long cur_host , int rule___0 ) 
5013 { char *buf ;
5014   int res ;
5015   void *tmp ;
5016   size_t tmp___0 ;
5017   void *tmp___1 ;
5018   size_t tmp___2 ;
5019   size_t tmp___3 ;
5020   int tmp___4 ;
5021   size_t tmp___5 ;
5022   void *tmp___6 ;
5023   size_t tmp___7 ;
5024   size_t tmp___8 ;
5025   size_t tmp___9 ;
5026   void *tmp___10 ;
5027   size_t tmp___11 ;
5028   size_t tmp___12 ;
5029   size_t tmp___13 ;
5030   void *tmp___14 ;
5031   size_t tmp___15 ;
5032   size_t tmp___16 ;
5033   size_t tmp___17 ;
5034   void *tmp___18 ;
5035   size_t tmp___19 ;
5036   size_t tmp___20 ;
5037   size_t tmp___21 ;
5038   void *tmp___22 ;
5039   size_t tmp___23 ;
5040   size_t tmp___24 ;
5041   size_t tmp___25 ;
5042   void *tmp___26 ;
5043   size_t tmp___27 ;
5044   size_t tmp___28 ;
5045   int tmp___29 ;
5046   int tmp___30 ;
5047   int tmp___31 ;
5048   int tmp___32 ;
5049   int tmp___33 ;
5050   int tmp___34 ;
5051   int tmp___35 ;
5052   int tmp___36 ;
5053   int tmp___37 ;
5054   unsigned short const   **tmp___38 ;
5055   unsigned short const   **tmp___39 ;
5056   int tmp___40 ;
5057 
5058   {
5059   res = 0;
5060   tmp = s_zmalloc((int )(8193U * sizeof(char )));
5061   buf = (char *)tmp;
5062   swap_rule(buf, (char const   *)(*(rules + rule___0))->rcpt_to, (int )cur_host);
5063   convert_rule(buf, 3);
5064   tmp___0 = strlen((char const   *)buf);
5065   tmp___1 = s_malloc((unsigned long )((tmp___0 + 1U) * sizeof(char )));
5066   (*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to = (char *)tmp___1;
5067   tmp___2 = strlen((char const   *)buf);
5068   strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to,
5069           (char const   * __restrict  )buf, tmp___2);
5070   tmp___3 = strlen((char const   *)buf);
5071   *((*((*(hosts + cur_host))->smtp_check + rule___0))->rcpt_to + tmp___3) = (char )'\000';
5072   debug((char *)"Check rcpt_to: sending %s", buf);
5073   tmp___4 = write_smtp(sockfd, buf, cur_host);
5074   if (tmp___4 == -1) {
5075     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5076     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)9;
5077     free((void *)buf);
5078     return (-1);
5079   }
5080   memset((void *)buf, 0, 8192U);
5081   res = read_smtp(sockfd, buf, cur_host);
5082   if (res == -1) {
5083     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5084     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)10;
5085     free((void *)buf);
5086     return (-1);
5087   }
5088   debug((char *)"Check rcpt_to: received %s", buf);
5089   tmp___40 = strncmp((char const   *)buf, "250", 3U);
5090   if (tmp___40) {
5091     if ((int )*(buf + 0) == 53) {
5092       tmp___38 = __ctype_b_loc();
5093       if ((int const   )*(*tmp___38 + (int )*(buf + 1)) & 2048) {
5094         tmp___39 = __ctype_b_loc();
5095         if ((int const   )*(*tmp___39 + (int )*(buf + 2)) & 2048) {
5096           (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)4;
5097           tmp___9 = strlen((char const   *)buf);
5098           tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5099           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___10;
5100           tmp___11 = strlen((char const   *)buf);
5101           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5102                   (char const   * __restrict  )buf, tmp___11);
5103           tmp___12 = strlen((char const   *)buf);
5104           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___12) = (char )'\000';
5105           free((void *)buf);
5106           return (1);
5107         } else {
5108           goto _L___2;
5109         }
5110       } else {
5111         goto _L___2;
5112       }
5113     } else {
5114       _L___2: /* CIL Label */ 
5115       tmp___32 = strncmp((char const   *)buf, "450", 3U);
5116       if (tmp___32) {
5117         tmp___33 = strncmp((char const   *)buf, "473", 3U);
5118         if (tmp___33) {
5119           tmp___34 = strncmp((char const   *)buf, "500", 3U);
5120           if (tmp___34) {
5121             tmp___35 = strncmp((char const   *)buf, "521", 3U);
5122             if (tmp___35) {
5123               tmp___36 = strncmp((char const   *)buf, "530", 3U);
5124               if (tmp___36) {
5125                 tmp___37 = strncmp((char const   *)buf, "554", 3U);
5126                 if (tmp___37) {
5127                   tmp___30 = strncmp((char const   *)buf, "451", 3U);
5128                   if (tmp___30) {
5129                     tmp___31 = strncmp((char const   *)buf, "452", 3U);
5130                     if (tmp___31) {
5131                       tmp___29 = strncmp((char const   *)buf, "421", 3U);
5132                       if (tmp___29) {
5133                         (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5134                         (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5135                         (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5136                         tmp___25 = strlen((char const   *)buf);
5137                         tmp___26 = s_malloc((unsigned long )((tmp___25 + 1U) * sizeof(char )));
5138                         (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___26;
5139                         tmp___27 = strlen((char const   *)buf);
5140                         strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5141                                 (char const   * __restrict  )buf, tmp___27);
5142                         tmp___28 = strlen((char const   *)buf);
5143                         *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___28) = (char )'\000';
5144                         free((void *)buf);
5145                         return (-1);
5146                       } else {
5147                         (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5148                         (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5149                         (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5150                         tmp___21 = strlen((char const   *)buf);
5151                         tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
5152                         (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___22;
5153                         tmp___23 = strlen((char const   *)buf);
5154                         strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5155                                 (char const   * __restrict  )buf, tmp___23);
5156                         tmp___24 = strlen((char const   *)buf);
5157                         *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___24) = (char )'\000';
5158                         free((void *)buf);
5159                         return (-1);
5160                       }
5161                     } else {
5162                       _L: /* CIL Label */ 
5163                       (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5164                       (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5165                       (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)11;
5166                       tmp___17 = strlen((char const   *)buf);
5167                       tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5168                       (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___18;
5169                       tmp___19 = strlen((char const   *)buf);
5170                       strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5171                               (char const   * __restrict  )buf, tmp___19);
5172                       tmp___20 = strlen((char const   *)buf);
5173                       *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___20) = (char )'\000';
5174                       free((void *)buf);
5175                       return (-1);
5176                     }
5177                   } else {
5178                     goto _L;
5179                   }
5180                 } else {
5181                   _L___0: /* CIL Label */ 
5182                   (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)4;
5183                   tmp___13 = strlen((char const   *)buf);
5184                   tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5185                   (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___14;
5186                   tmp___15 = strlen((char const   *)buf);
5187                   strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5188                           (char const   * __restrict  )buf, tmp___15);
5189                   tmp___16 = strlen((char const   *)buf);
5190                   *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___16) = (char )'\000';
5191                   free((void *)buf);
5192                   return (1);
5193                 }
5194               } else {
5195                 goto _L___0;
5196               }
5197             } else {
5198               goto _L___0;
5199             }
5200           } else {
5201             goto _L___0;
5202           }
5203         } else {
5204           goto _L___0;
5205         }
5206       } else {
5207         goto _L___0;
5208       }
5209     }
5210   } else {
5211     tmp___5 = strlen((char const   *)buf);
5212     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5213     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to = (char *)tmp___6;
5214     tmp___7 = strlen((char const   *)buf);
5215     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to,
5216             (char const   * __restrict  )buf, tmp___7);
5217     tmp___8 = strlen((char const   *)buf);
5218     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_rcpt_to + tmp___8) = (char )'\000';
5219     free((void *)buf);
5220     return (0);
5221   }
5222   free((void *)buf);
5223   return (-1);
5224 }
5225 }
5226 int check_send_data_start(int *sockfd , long cur_host , int rule___0 ) 
5227 { char *buf ;
5228   int res ;
5229   void *tmp ;
5230   int tmp___0 ;
5231   size_t tmp___1 ;
5232   void *tmp___2 ;
5233   size_t tmp___3 ;
5234   size_t tmp___4 ;
5235   size_t tmp___5 ;
5236   void *tmp___6 ;
5237   size_t tmp___7 ;
5238   size_t tmp___8 ;
5239   size_t tmp___9 ;
5240   void *tmp___10 ;
5241   size_t tmp___11 ;
5242   size_t tmp___12 ;
5243   size_t tmp___13 ;
5244   void *tmp___14 ;
5245   size_t tmp___15 ;
5246   size_t tmp___16 ;
5247   size_t tmp___17 ;
5248   void *tmp___18 ;
5249   size_t tmp___19 ;
5250   size_t tmp___20 ;
5251   int tmp___21 ;
5252   int tmp___22 ;
5253   int tmp___23 ;
5254   unsigned short const   **tmp___24 ;
5255   unsigned short const   **tmp___25 ;
5256   int tmp___26 ;
5257 
5258   {
5259   res = 0;
5260   tmp = s_zmalloc((int )(8193U * sizeof(char )));
5261   buf = (char *)tmp;
5262   tmp___0 = write_smtp(sockfd, (char *)"DATA\r\n", cur_host);
5263   if (tmp___0 == -1) {
5264     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5265     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)12;
5266     free((void *)buf);
5267     return (-1);
5268   }
5269   res = read_smtp(sockfd, buf, cur_host);
5270   if (res == -1) {
5271     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5272     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)13;
5273     free((void *)buf);
5274     return (-1);
5275   }
5276   tmp___26 = strncmp((char const   *)buf, "354", 3U);
5277   if (tmp___26) {
5278     if ((int )*(buf + 0) == 53) {
5279       tmp___24 = __ctype_b_loc();
5280       if ((int const   )*(*tmp___24 + (int )*(buf + 1)) & 2048) {
5281         tmp___25 = __ctype_b_loc();
5282         if ((int const   )*(*tmp___25 + (int )*(buf + 2)) & 2048) {
5283           (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)5;
5284           tmp___5 = strlen((char const   *)buf);
5285           tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5286           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___6;
5287           tmp___7 = strlen((char const   *)buf);
5288           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5289                   (char const   * __restrict  )buf, tmp___7);
5290           tmp___8 = strlen((char const   *)buf);
5291           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___8) = (char )'\000';
5292           free((void *)buf);
5293           return (1);
5294         } else {
5295           goto _L___1;
5296         }
5297       } else {
5298         goto _L___1;
5299       }
5300     } else {
5301       _L___1: /* CIL Label */ 
5302       tmp___22 = strncmp((char const   *)buf, "451", 3U);
5303       if (tmp___22) {
5304         tmp___23 = strncmp((char const   *)buf, "452", 3U);
5305         if (tmp___23) {
5306           tmp___21 = strncmp((char const   *)buf, "421", 3U);
5307           if (tmp___21) {
5308             (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5309             (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5310             (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5311             tmp___17 = strlen((char const   *)buf);
5312             tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5313             (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___18;
5314             tmp___19 = strlen((char const   *)buf);
5315             strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5316                     (char const   * __restrict  )buf, tmp___19);
5317             tmp___20 = strlen((char const   *)buf);
5318             *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___20) = (char )'\000';
5319             free((void *)buf);
5320             return (-1);
5321           } else {
5322             (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5323             (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5324             (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5325             tmp___13 = strlen((char const   *)buf);
5326             tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5327             (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___14;
5328             tmp___15 = strlen((char const   *)buf);
5329             strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5330                     (char const   * __restrict  )buf, tmp___15);
5331             tmp___16 = strlen((char const   *)buf);
5332             *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___16) = (char )'\000';
5333             free((void *)buf);
5334             return (-1);
5335           }
5336         } else {
5337           _L: /* CIL Label */ 
5338           (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5339           (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5340           (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)14;
5341           tmp___9 = strlen((char const   *)buf);
5342           tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5343           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___10;
5344           tmp___11 = strlen((char const   *)buf);
5345           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5346                   (char const   * __restrict  )buf, tmp___11);
5347           tmp___12 = strlen((char const   *)buf);
5348           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___12) = (char )'\000';
5349           free((void *)buf);
5350           return (-1);
5351         }
5352       } else {
5353         goto _L;
5354       }
5355     }
5356   } else {
5357     tmp___1 = strlen((char const   *)buf);
5358     tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5359     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start = (char *)tmp___2;
5360     tmp___3 = strlen((char const   *)buf);
5361     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start,
5362             (char const   * __restrict  )buf, tmp___3);
5363     tmp___4 = strlen((char const   *)buf);
5364     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_start + tmp___4) = (char )'\000';
5365     free((void *)buf);
5366     return (0);
5367   }
5368   free((void *)buf);
5369   return (-1);
5370 }
5371 }
5372 int check_send_data(int *sockfd , long cur_host , int rule___0 ) 
5373 { char *buf ;
5374   int res ;
5375   void *tmp ;
5376   int tmp___0 ;
5377   size_t tmp___1 ;
5378   void *tmp___2 ;
5379   size_t tmp___3 ;
5380   size_t tmp___4 ;
5381   size_t tmp___5 ;
5382   void *tmp___6 ;
5383   size_t tmp___7 ;
5384   size_t tmp___8 ;
5385   size_t tmp___9 ;
5386   void *tmp___10 ;
5387   size_t tmp___11 ;
5388   size_t tmp___12 ;
5389   size_t tmp___13 ;
5390   void *tmp___14 ;
5391   size_t tmp___15 ;
5392   size_t tmp___16 ;
5393   size_t tmp___17 ;
5394   void *tmp___18 ;
5395   size_t tmp___19 ;
5396   size_t tmp___20 ;
5397   size_t tmp___21 ;
5398   void *tmp___22 ;
5399   size_t tmp___23 ;
5400   size_t tmp___24 ;
5401   int tmp___25 ;
5402   int tmp___26 ;
5403   int tmp___27 ;
5404   int tmp___28 ;
5405   int tmp___29 ;
5406   int tmp___30 ;
5407   int tmp___31 ;
5408   int tmp___32 ;
5409   int tmp___33 ;
5410   int tmp___34 ;
5411   int tmp___35 ;
5412   int tmp___36 ;
5413 
5414   {
5415   res = 0;
5416   tmp = s_zmalloc((int )(8193U * sizeof(char )));
5417   buf = (char *)tmp;
5418   return_data(cur_host, rule___0, buf);
5419   tmp___0 = write_smtp(sockfd, buf, cur_host);
5420   if (tmp___0 == -1) {
5421     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5422     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)15;
5423     free((void *)buf);
5424     return (-1);
5425   }
5426   memset((void *)buf, 0, 8192U);
5427   res = read_smtp(sockfd, buf, cur_host);
5428   if (res == -1) {
5429     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5430     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)16;
5431     free((void *)buf);
5432     return (-1);
5433   }
5434   tmp___36 = strncmp((char const   *)buf, "250", 3U);
5435   if (tmp___36) {
5436     tmp___33 = strncmp((char const   *)buf, "550", 3U);
5437     if (tmp___33) {
5438       tmp___34 = strncmp((char const   *)buf, "55", 2U);
5439       if (tmp___34) {
5440         tmp___35 = strncmp((char const   *)buf, "571", 3U);
5441         if (tmp___35) {
5442           tmp___28 = strncmp((char const   *)buf, "450", 3U);
5443           if (tmp___28) {
5444             tmp___29 = strncmp((char const   *)buf, "473", 3U);
5445             if (tmp___29) {
5446               tmp___30 = strncmp((char const   *)buf, "500", 3U);
5447               if (tmp___30) {
5448                 tmp___31 = strncmp((char const   *)buf, "521", 3U);
5449                 if (tmp___31) {
5450                   tmp___32 = strncmp((char const   *)buf, "530", 3U);
5451                   if (tmp___32) {
5452                     tmp___26 = strncmp((char const   *)buf, "451", 3U);
5453                     if (tmp___26) {
5454                       tmp___27 = strncmp((char const   *)buf, "452", 3U);
5455                       if (tmp___27) {
5456                         tmp___25 = strncmp((char const   *)buf, "421", 3U);
5457                         if (tmp___25) {
5458                           (*(hosts + cur_host))->fatal_error = (unsigned char)6;
5459                           (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5460                           (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5461                           tmp___21 = strlen((char const   *)buf);
5462                           tmp___22 = s_malloc((unsigned long )((tmp___21 + 1U) * sizeof(char )));
5463                           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___22;
5464                           tmp___23 = strlen((char const   *)buf);
5465                           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5466                                   (char const   * __restrict  )buf, tmp___23);
5467                           tmp___24 = strlen((char const   *)buf);
5468                           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___24) = (char )'\000';
5469                           free((void *)buf);
5470                           return (-1);
5471                         } else {
5472                           (*(hosts + cur_host))->fatal_error = (unsigned char)5;
5473                           (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5474                           (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5475                           tmp___17 = strlen((char const   *)buf);
5476                           tmp___18 = s_malloc((unsigned long )((tmp___17 + 1U) * sizeof(char )));
5477                           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___18;
5478                           tmp___19 = strlen((char const   *)buf);
5479                           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5480                                   (char const   * __restrict  )buf, tmp___19);
5481                           tmp___20 = strlen((char const   *)buf);
5482                           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___20) = (char )'\000';
5483                           free((void *)buf);
5484                           return (-1);
5485                         }
5486                       } else {
5487                         _L: /* CIL Label */ 
5488                         (*(hosts + cur_host))->fatal_error = (unsigned char)7;
5489                         (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5490                         (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)17;
5491                         tmp___13 = strlen((char const   *)buf);
5492                         tmp___14 = s_malloc((unsigned long )((tmp___13 + 1U) * sizeof(char )));
5493                         (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___14;
5494                         tmp___15 = strlen((char const   *)buf);
5495                         strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5496                                 (char const   * __restrict  )buf, tmp___15);
5497                         tmp___16 = strlen((char const   *)buf);
5498                         *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___16) = (char )'\000';
5499                         free((void *)buf);
5500                         return (-1);
5501                       }
5502                     } else {
5503                       goto _L;
5504                     }
5505                   } else {
5506                     _L___0: /* CIL Label */ 
5507                     (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)6;
5508                     tmp___9 = strlen((char const   *)buf);
5509                     tmp___10 = s_malloc((unsigned long )((tmp___9 + 1U) * sizeof(char )));
5510                     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___10;
5511                     tmp___11 = strlen((char const   *)buf);
5512                     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5513                             (char const   * __restrict  )buf, tmp___11);
5514                     tmp___12 = strlen((char const   *)buf);
5515                     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___12) = (char )'\000';
5516                     free((void *)buf);
5517                     return (1);
5518                   }
5519                 } else {
5520                   goto _L___0;
5521                 }
5522               } else {
5523                 goto _L___0;
5524               }
5525             } else {
5526               goto _L___0;
5527             }
5528           } else {
5529             goto _L___0;
5530           }
5531         } else {
5532           _L___1: /* CIL Label */ 
5533           (*((*(hosts + cur_host))->smtp_check + rule___0))->passed = (unsigned char)6;
5534           tmp___5 = strlen((char const   *)buf);
5535           tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5536           (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___6;
5537           tmp___7 = strlen((char const   *)buf);
5538           strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5539                   (char const   * __restrict  )buf, tmp___7);
5540           tmp___8 = strlen((char const   *)buf);
5541           *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___8) = (char )'\000';
5542           free((void *)buf);
5543           return (1);
5544         }
5545       } else {
5546         goto _L___1;
5547       }
5548     } else {
5549       goto _L___1;
5550     }
5551   } else {
5552     tmp___1 = strlen((char const   *)buf);
5553     tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5554     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end = (char *)tmp___2;
5555     tmp___3 = strlen((char const   *)buf);
5556     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end,
5557             (char const   * __restrict  )buf, tmp___3);
5558     tmp___4 = strlen((char const   *)buf);
5559     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_data_end + tmp___4) = (char )'\000';
5560     free((void *)buf);
5561     return (0);
5562   }
5563   free((void *)buf);
5564   return (-1);
5565 }
5566 }
5567 int suspected_open_relay(long cur_host , int rule___0 ) 
5568 { 
5569 
5570   {
5571   return (0);
5572 }
5573 }
5574 int reset_smtp(int *sockfd , long cur_host , int rule___0 ) 
5575 { char *buf ;
5576   int res ;
5577   void *tmp ;
5578   int tmp___0 ;
5579   size_t tmp___1 ;
5580   void *tmp___2 ;
5581   size_t tmp___3 ;
5582   size_t tmp___4 ;
5583   size_t tmp___5 ;
5584   void *tmp___6 ;
5585   size_t tmp___7 ;
5586   size_t tmp___8 ;
5587   int tmp___9 ;
5588 
5589   {
5590   res = 0;
5591   tmp = s_zmalloc((int )(8193U * sizeof(char )));
5592   buf = (char *)tmp;
5593   tmp___0 = write_smtp(sockfd, (char *)"RSET\r\n", cur_host);
5594   if (tmp___0 == -1) {
5595     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5596     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)18;
5597     free((void *)buf);
5598     return (-1);
5599   }
5600   res = read_smtp(sockfd, buf, cur_host);
5601   if (res == -1) {
5602     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5603     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)19;
5604     free((void *)buf);
5605     return (-1);
5606   }
5607   tmp___9 = strncmp((char const   *)buf, "250", 3U);
5608   if (tmp___9) {
5609     (*(hosts + cur_host))->fatal_error = (unsigned char)8;
5610     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5611     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)20;
5612     tmp___1 = strlen((char const   *)buf);
5613     tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5614     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset = (char *)tmp___2;
5615     tmp___3 = strlen((char const   *)buf);
5616     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset,
5617             (char const   * __restrict  )buf, tmp___3);
5618     tmp___4 = strlen((char const   *)buf);
5619     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset + tmp___4) = (char )'\000';
5620     free((void *)buf);
5621     return (-1);
5622   } else {
5623     tmp___5 = strlen((char const   *)buf);
5624     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5625     (*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset = (char *)tmp___6;
5626     tmp___7 = strlen((char const   *)buf);
5627     strncpy((char * __restrict  )(*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset,
5628             (char const   * __restrict  )buf, tmp___7);
5629     tmp___8 = strlen((char const   *)buf);
5630     *((*((*(hosts + cur_host))->smtp_check + rule___0))->r_reset + tmp___8) = (char )'\000';
5631     free((void *)buf);
5632     return (0);
5633   }
5634   free((void *)buf);
5635   return (0);
5636 }
5637 }
5638 int quit_smtp(int *sockfd , long cur_host , int rule___0 ) 
5639 { char *buf ;
5640   int res ;
5641   void *tmp ;
5642   int tmp___0 ;
5643   size_t tmp___1 ;
5644   void *tmp___2 ;
5645   size_t tmp___3 ;
5646   size_t tmp___4 ;
5647   size_t tmp___5 ;
5648   void *tmp___6 ;
5649   size_t tmp___7 ;
5650   size_t tmp___8 ;
5651   int tmp___9 ;
5652 
5653   {
5654   res = 0;
5655   tmp = s_zmalloc((int )(8193U * sizeof(char )));
5656   buf = (char *)tmp;
5657   tmp___0 = write_smtp(sockfd, (char *)"QUIT\r\n", cur_host);
5658   if (tmp___0 == -1) {
5659     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5660     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)21;
5661     free((void *)buf);
5662     return (-1);
5663   }
5664   res = read_smtp(sockfd, buf, cur_host);
5665   if (res == -1) {
5666     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5667     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)22;
5668     free((void *)buf);
5669     return (-1);
5670   }
5671   tmp___9 = strncmp((char const   *)buf, "221", 3U);
5672   if (tmp___9) {
5673     (*(hosts + cur_host))->fatal_error = (unsigned char)9;
5674     (*(hosts + cur_host))->fatal = (unsigned char )rule___0;
5675     (*((*(hosts + cur_host))->smtp_check + rule___0))->error_code = (unsigned char)23;
5676     tmp___1 = strlen((char const   *)buf);
5677     tmp___2 = s_malloc((unsigned long )((tmp___1 + 1U) * sizeof(char )));
5678     (*(hosts + cur_host))->r_quit = (char *)tmp___2;
5679     tmp___3 = strlen((char const   *)buf);
5680     strncpy((char * __restrict  )(*(hosts + cur_host))->r_quit, (char const   * __restrict  )buf,
5681             tmp___3);
5682     tmp___4 = strlen((char const   *)buf);
5683     *((*(hosts + cur_host))->r_quit + tmp___4) = (char )'\000';
5684     free((void *)buf);
5685     return (-1);
5686   } else {
5687     tmp___5 = strlen((char const   *)buf);
5688     tmp___6 = s_malloc((unsigned long )((tmp___5 + 1U) * sizeof(char )));
5689     (*(hosts + cur_host))->r_quit = (char *)tmp___6;
5690     tmp___7 = strlen((char const   *)buf);
5691     strncpy((char * __restrict  )(*(hosts + cur_host))->r_quit, (char const   * __restrict  )buf,
5692             tmp___7);
5693     tmp___8 = strlen((char const   *)buf);
5694     *((*(hosts + cur_host))->r_quit + tmp___8) = (char )'\000';
5695     free((void *)buf);
5696     return (0);
5697   }
5698   free((void *)buf);
5699   return (0);
5700 }
5701 }
5702 #pragma merger(0,"/tmp/cil-gbAoEKxk.i","-Wall,-g,-pthread")
5703 void usage(char *pname ) 
5704 { 
5705 
5706   {
5707   printf((char const   * __restrict  )"\n\nUsage: %s -c [config file] -s [iprange] -w [path to html file] -b [email address to relay to] -e [path to mbox]\n",
5708          pname);
5709   printf((char const   * __restrict  )"\nOptions:\n\n");
5710   printf((char const   * __restrict  )"-p [number of threads]\n");
5711   printf((char const   * __restrict  )"\t\tForks the specified number of threads\n");
5712   printf((char const   * __restrict  )"\t\tSet this to whatever works best for the machine\n");
5713   printf((char const   * __restrict  )"\t\tFreeBSD seems fine with 400+ The Linux test\n");
5714   printf((char const   * __restrict  )"\t\tmachine won\'t take anymore that 250\n");
5715   printf((char const   * __restrict  )"\n-b [email address]\n");
5716   printf((char const   * __restrict  )"\t\tWhen this option is supplied, SmtpRC will send email\n");
5717   printf((char const   * __restrict  )"\t\tthrough any servers that fail any tests. It must\n");
5718   printf((char const   * __restrict  )"\t\talso correspond with the configuration file. see the\n");
5719   printf((char const   * __restrict  )"\t\tREADME file for more info.\n");
5720   printf((char const   * __restrict  )"\n-e [path to mbox]\n");
5721   printf((char const   * __restrict  )"\t\tWhen this opton is used SmtpRC will check the mail file\n");
5722   printf((char const   * __restrict  )"\t\tspecified for relayed emails\n");
5723   printf((char const   * __restrict  )"\n-u [path to maildir]\n");
5724   printf((char const   * __restrict  )"\t\tWhen this opton is used SmtpRC will check the maildir\n");
5725   printf((char const   * __restrict  )"\t\tspecified for relayed emails\n");
5726   printf((char const   * __restrict  )"\n-w [filename]\n");
5727   printf((char const   * __restrict  )"\t\tPrints detailed HTML output of all failed\n");
5728   printf((char const   * __restrict  )"\t\tchecks to the filename specified. If used with the -a\n");
5729   printf((char const   * __restrict  )"\t\toption it will print all checks not just those that\n");
5730   printf((char const   * __restrict  )"\t\tfailed\n");
5731   printf((char const   * __restrict  )"\n-f [filename]\n");
5732   printf((char const   * __restrict  )"\t\tOutput results in text format\n");
5733   printf((char const   * __restrict  )"\n-o [filename]\n");
5734   printf((char const   * __restrict  )"\t\tOutput results in machine readable format (comma\n");
5735   printf((char const   * __restrict  )"\t\tseperated values)\n");
5736   printf((char const   * __restrict  )"\n-c [config file]\n");
5737   printf((char const   * __restrict  )"\t\tRead the checks from the specified filename.\n");
5738   printf((char const   * __restrict  )"\n-y [email template file]\n");
5739   printf((char const   * __restrict  )"\t\tSpecify an email template to use.\n");
5740   printf((char const   * __restrict  )"\n-s [ip address range]\n");
5741   printf((char const   * __restrict  )"\t\tYou can use this option to specify\n");
5742   printf((char const   * __restrict  )"\t\tthe ip address range (or single host) to scan for\n");
5743   printf((char const   * __restrict  )"\t\topen relay\'s. Must be in the format 127.0.*.1-200\n");
5744   printf((char const   * __restrict  )"\n-i [ip list file]\n");
5745   printf((char const   * __restrict  )"\t\tUse this option to specify a list of ip addresses or\n");
5746   printf((char const   * __restrict  )"\t\thostnames to scan\n");
5747   printf((char const   * __restrict  )"\n-k [config file to generate]\n");
5748   printf((char const   * __restrict  )"\t\tUse this option to generate an automatic config file with the options\n");
5749   printf((char const   * __restrict  )"\t\tused on the command line\n");
5750   printf((char const   * __restrict  )"\n-j [auto config file]\n");
5751   printf((char const   * __restrict  )"\t\tuse this option to use an automatic config file\n");
5752   printf((char const   * __restrict  )"\n-r [timeout]\n");
5753   printf((char const   * __restrict  )"\t\tSpecify a timeout value used for reading\n");
5754   printf((char const   * __restrict  )"\t\tdata from hosts. The default is 60 seconds but you\n");
5755   printf((char const   * __restrict  )"\t\tmay have to increase it up to 90+.\n");
5756   printf((char const   * __restrict  )"\n-m [time to wait]\n");
5757   printf((char const   * __restrict  )"\t\tUse this option to specify the time to wait before checking\n");
5758   printf((char const   * __restrict  )"\t\tthe mail file\n");
5759   printf((char const   * __restrict  )"\n-l [timeout]\n");
5760   printf((char const   * __restrict  )"\t\tSpecify a timeout value used for connecting\n");
5761   printf((char const   * __restrict  )"\t\tto hosts. The default is 30 seconds but you may\n");
5762   printf((char const   * __restrict  )"\t\tneed to increase it with slow networks\n");
5763   printf((char const   * __restrict  )"\n-n\t\tUsing this option will convert all IP addresses to\n");
5764   printf((char const   * __restrict  )"\t\tdomiain names\n");
5765   printf((char const   * __restrict  )"\n-a\t\tThis option will print all of the checks to the output file\n");
5766   printf((char const   * __restrict  )"\t\tspecified not just the tests that fail. Failed tests\n");
5767   printf((char const   * __restrict  )"\t\twill be highlighted in red\n");
5768   printf((char const   * __restrict  )"\n-v\t\tVerbose mode. This is not a rcommended option. It\n");
5769   printf((char const   * __restrict  )"\t\tdisplays more output about what\'s going on.\n");
5770   fflush(stdout);
5771   exit(0);
5772 }
5773 }
5774 void banner(void) 
5775 { 
5776 
5777   {
5778   printf((char const   * __restrict  )"\n\n\n\n\t----------------------------\n");
5779   printf((char const   * __restrict  )"\t|    SMTP Relay Checker    |\n");
5780   printf((char const   * __restrict  )"\t|      Spencer Hardy       |\n");
5781   printf((char const   * __restrict  )"\t|   diceman@dircon.co.uk   |\n");
5782   printf((char const   * __restrict  )"\t|          2.0.3           |\n");
5783   printf((char const   * __restrict  )"\t----------------------------\n\n\n\n");
5784   fflush(stdout);
5785   return;
5786 }
5787 }


syntax highlighted by Code2HTML, v. 0.9.1