#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
struct sockaddr_in {
  void *sin_port;
  void *sin_family;
  int /*<<< orphan*/ sin_addr;
};
struct sockaddr {
  int dummy;
};
struct in_addr {
  int dummy;
};
struct hostent {
  int /*<<< orphan*/ h_length;
  int /*<<< orphan*/ h_addr;
};
typedef int /*<<< orphan*/ sin;
typedef int /*<<< orphan*/ buffer;
typedef int /*<<< orphan*/ botbuff;

/* Variables and functions */
void *AF_INET;
int /*<<< orphan*/ SOCK_STREAM;
int /*<<< orphan*/ bcopy(int /*<<< orphan*/, char *, int /*<<< orphan*/);
int /*<<< orphan*/ close(int);
scalar_t__ connect(int, struct sockaddr *, int);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ getchar();
struct hostent *gethostbyname(char *);
int /*<<< orphan*/ herror(char *);
void *htons(int);
unsigned long inet_addr(char *);
unsigned long ntohl(unsigned long);
int /*<<< orphan*/ perror(char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ recv(int, char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ send(int, char *, int, int /*<<< orphan*/);
int socket(void *, int /*<<< orphan*/, int /*<<< orphan*/);
int strlen(char *);
char *strstr(char *, char *);
void main(int argc, char *argv[]) {
  int sock, debugm = 0;
  struct in_addr addr;
  struct sockaddr_in sin;
  struct hostent *he;
  unsigned long start;
  unsigned long end;
  unsigned long counter;
  char foundmsg[] = "200";
  char *botstr;
  char buffer[2048];
  int count = 0;
  int numin;
  char botbuff[2048];
  char *buff[100];
  char *botname[100];
  buff[1] = "GET /cp.php?m=login HTTP/1.0\n\n";
  buff[2] = "GET /helps/cp.php?m=login HTTP/1.0\n\n";
  buff[3] = "GET /cp.php?letter=login HTTP/1.0\n\n";
  buff[4] = "GET /pony/admin.php HTTP/1.0\n\n";
  buff[5] = "GET /admin.php?do=auth HTTP/1.0\n\n";
  buff[6] = "GET /panelnew/admin.php HTTP/1.0\n\n";
  buff[7] = "GET /new/1/admin.php HTTP/1.0\n\n";
  buff[8] = "GET /web/adm/index.php?m=login HTTP/1.0\n\n";
  buff[9] = "GET /Panel/ HTTP/1.0\n\n";
  buff[10] = "GET /serverphp/cp.php?m=login HTTP/1.0\n\n";
  buff[11] = "GET /wp-admin/includes/saltonindex.php HTTP/1.0\n\n";
  buff[12] = "GET /modules/cp.php?m=login HTTP/1.0\n\n";
  buff[13] = "GET /login.php HTTP/1.0\n\n";
  buff[14] = "GET /solar/index.php?login  HTTP/1.0\n\n";
  buff[15] = "GET /panel/login.php  HTTP/1.0\n\n";
  buff[16] = "GET /panel/cp.php?m=login HTTP/1.0\n\n";
  buff[17] = "GET /adm/Panel/admin.php HTTP/1.0\n\n";
  buff[18] = "GET /admin/Panel/admin.php  HTTP/1.0\n\n";
  buff[19] = "GET /lc/ HTTP/1.0\n\n";
  buff[20] = "GET /panel/index.php?login  HTTP/1.0\n\n";
  buff[21] = "GET /pony/Panel/admin.php HTTP/1.0\n\n";
  buff[22] = "GET  HTTP/1.0\n\n";
  buff[23] = "GET  HTTP/1.0\n\n";
  buff[24] = "GET  HTTP/1.0\n\n";
  botname[1] = "Zeus ";
  botname[2] = "Citadel  ";
  botname[3] = "Zeus ";
  botname[4] = "Pony       ";
  botname[5] = "H1N1 loader ";
  botname[6] = "Pony ";
  botname[7] = "PONY ";
  botname[8] = "IceIX ";
  botname[9] = "i think its Gorynych";
  botname[10] = "Zeus ";
  botname[11] = "Mailer ";
  botname[12] = "Zeus ";
  botname[13] = "might be Enslaver ";
  botname[14] = "Solar ";
  botname[15] = "might be kraken ";
  botname[16] = "Citadel ";
  botname[17] = "Pony ";
  botname[18] = "Pony ";
  botname[19] = "might be WebInject ";
  botname[20] = "Solar ";
  botname[21] = "Pony ";
  botname[22] = " ";
  botname[23] = " ";
  botname[24] = " ";
  if (argc < 2) {
    printf("\n  Nohidy botnet scan in c#");
    printf("\nusage : %s just enter host ", argv[0]);
    printf("\n   Or : %s host -d   for debug mode\n\n", argv[0]);
    exit(0);
  }
  if (argc > 2) {
    if (strstr("-d", argv[2])) {
      debugm = 1;
    }
  }
  if ((he = gethostbyname(argv[1])) == NULL) {
    herror("gethostbyname");
    exit(0);
  }
  printf("\n\n\t Nohidy botnet scan , scans Port 80");
  start = inet_addr(argv[1]);
  counter = ntohl(start);
  sock = socket(AF_INET, SOCK_STREAM, 0);
  bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
  sin.sin_family = AF_INET;
  sin.sin_port = htons(80);
  if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) != 0) {
    perror("connect");
  }
  printf("\n\n\t [ Press any key to check out the httpd version bro \n");
  getchar();
  send(sock, "HEAD / HTTP/1.0\n\n", 17, 0);
  recv(sock, buffer, sizeof(buffer), 0);
  printf("%s", buffer);
  close(sock);
  printf("\n\t [ Press any key to search");
  getchar();
  while (count++ < 21) {
    sock = socket(AF_INET, SOCK_STREAM, 0);
    bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
    sin.sin_family = AF_INET;
    sin.sin_port = htons(80);
    if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) != 0) {
      perror("connect");
    }
    printf("Searching for %s : ", botname[count]);
    for (numin = 0; numin < 2048; numin++) {
      botbuff[numin] = '\0';
    }
    send(sock, buff[count], strlen(buff[count]), 0);
    recv(sock, botbuff, sizeof(botbuff), 0);
    botstr = strstr(botbuff, foundmsg);
    if (botstr != NULL)
      printf("bingo i found it ;)\n");
    else
      printf("error could not find it , try changing host or the botnet is not "
             "in Nohidy syntax\n");
    if (debugm == 1) {
      printf("\n\n ------------------------\n %s \n ------------------------\n",
             botbuff);
      printf("Press any key to continue....\n");
      getchar();
    }
    close(sock);
  }
  printf("take care \n");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x16d0,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
mov    0xdd1(%rip),%eax
mov    %eax,-0x5c(%rbp)
movl   $0x0,-0x874(%rbp)
lea    0xdc1(%rip),%rax
mov    %rax,-0x1398(%rbp)
lea    0xdd2(%rip),%rax
mov    %rax,-0x1390(%rbp)
lea    0xde9(%rip),%rax
mov    %rax,-0x1388(%rbp)
lea    0xdff(%rip),%rax
mov    %rax,-0x1380(%rbp)
lea    0xe10(%rip),%rax
mov    %rax,-0x1378(%rbp)
lea    0xe24(%rip),%rax
mov    %rax,-0x1370(%rbp)
lea    0xe39(%rip),%rax
mov    %rax,-0x1368(%rbp)
lea    0xe4b(%rip),%rax
mov    %rax,-0x1360(%rbp)
lea    0xe67(%rip),%rax
mov    %rax,-0x1358(%rbp)
lea    0xe70(%rip),%rax
mov    %rax,-0x1350(%rbp)
lea    0xe8b(%rip),%rax
mov    %rax,-0x1348(%rbp)
lea    0xeaf(%rip),%rax
mov    %rax,-0x1340(%rbp)
lea    0xec8(%rip),%rax
mov    %rax,-0x1338(%rbp)
lea    0xed4(%rip),%rax
mov    %rax,-0x1330(%rbp)
lea    0xeed(%rip),%rax
mov    %rax,-0x1328(%rbp)
lea    0xf00(%rip),%rax
mov    %rax,-0x1320(%rbp)
lea    0xf17(%rip),%rax
mov    %rax,-0x1318(%rbp)
lea    0xf2d(%rip),%rax
mov    %rax,-0x1310(%rbp)
lea    0xf46(%rip),%rax
mov    %rax,-0x1308(%rbp)
lea    0xf4c(%rip),%rax
mov    %rax,-0x1300(%rbp)
lea    0xf65(%rip),%rax
mov    %rax,-0x12f8(%rbp)
lea    0xf7c(%rip),%rax
mov    %rax,-0x12f0(%rbp)
lea    0xf6e(%rip),%rax
mov    %rax,-0x12e8(%rbp)
lea    0xf60(%rip),%rax
mov    %rax,-0x12e0(%rbp)
lea    0xf62(%rip),%rax
mov    %rax,-0x16b8(%rbp)
lea    0xf5a(%rip),%rax
mov    %rax,-0x16b0(%rbp)
lea    0xf46(%rip),%rax
mov    %rax,-0x16a8(%rbp)
lea    0xf48(%rip),%rax
mov    %rax,-0x16a0(%rbp)
lea    0xf46(%rip),%rax
mov    %rax,-0x1698(%rbp)
lea    0xf45(%rip),%rax
mov    %rax,-0x1690(%rbp)
lea    0xf3d(%rip),%rax
mov    %rax,-0x1688(%rbp)
lea    0xf35(%rip),%rax
mov    %rax,-0x1680(%rbp)
lea    0xf2e(%rip),%rax
mov    %rax,-0x1678(%rbp)
lea    0xee4(%rip),%rax
mov    %rax,-0x1670(%rbp)
lea    0xf27(%rip),%rax
mov    %rax,-0x1668(%rbp)
lea    0xec8(%rip),%rax
mov    %rax,-0x1660(%rbp)
lea    0xf13(%rip),%rax
mov    %rax,-0x1658(%rbp)
lea    0xf18(%rip),%rax
mov    %rax,-0x1650(%rbp)
lea    0xf11(%rip),%rax
mov    %rax,-0x1648(%rbp)
lea    0xf14(%rip),%rax
mov    %rax,-0x1640(%rbp)
lea    0xeab(%rip),%rax
mov    %rax,-0x1638(%rbp)
lea    0xe9d(%rip),%rax
mov    %rax,-0x1630(%rbp)
lea    0xef3(%rip),%rax
mov    %rax,-0x1628(%rbp)
lea    0xec4(%rip),%rax
mov    %rax,-0x1620(%rbp)
lea    0xe73(%rip),%rax
mov    %rax,-0x1618(%rbp)
lea    0xe56(%rip),%rax
mov    %rax,-0x1610(%rbp)
lea    0xe48(%rip),%rax
mov    %rax,-0x1608(%rbp)
lea    0xe3a(%rip),%rax
mov    %rax,-0x1600(%rbp)
cmpl   $0x2,-0x4(%rbp)
jge    1525 <main+0x315>
lea    0xea9(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xeb0(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xeb8(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
xor    %edi,%edi
call   10f0 <exit@plt>
cmpl   $0x2,-0x4(%rbp)
jle    1559 <main+0x349>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rsi
lea    0xeb8(%rip),%rdi
call   1120 <strstr@plt>
cmp    $0x0,%rax
je     1554 <main+0x344>
movl   $0x1,-0x18(%rbp)
jmp    1559 <main+0x349>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   10b0 <gethostbyname@plt>
mov    %rax,-0x40(%rbp)
cmp    $0x0,%rax
jne    1587 <main+0x377>
lea    0xe7e(%rip),%rdi
call   10c0 <herror@plt>
xor    %edi,%edi
call   10f0 <exit@plt>
lea    0xe79(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1090 <inet_addr@plt>
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rdi
call   1110 <ntohl@plt>
mov    %rax,-0x58(%rbp)
mov    0x2a2e(%rip),%rax
mov    (%rax),%rdi
mov    0x2a14(%rip),%rax
mov    (%rax),%esi
xor    %edx,%edx
call   1130 <socket@plt>
mov    %eax,-0x14(%rbp)
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%edi
lea    -0x38(%rbp),%rsi
add    $0x10,%rsi
mov    -0x40(%rbp),%rax
mov    (%rax),%edx
call   10d0 <bcopy@plt>
mov    0x29f7(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x30(%rbp)
mov    $0x50,%edi
call   1050 <htons@plt>
mov    %rax,-0x38(%rbp)
mov    -0x14(%rbp),%edi
lea    -0x38(%rbp),%rsi
mov    $0x18,%edx
call   1100 <connect@plt>
cmp    $0x0,%rax
je     162d <main+0x41d>
lea    0xe06(%rip),%rdi
call   10e0 <perror@plt>
lea    0xe02(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    $0x0,%al
call   10a0 <getchar@plt>
mov    -0x14(%rbp),%edi
lea    0xe23(%rip),%rsi
mov    $0x11,%edx
xor    %ecx,%ecx
call   1060 <send@plt>
mov    -0x14(%rbp),%edi
lea    -0x870(%rbp),%rsi
mov    $0x800,%edx
xor    %ecx,%ecx
call   1030 <recv@plt>
lea    -0x870(%rbp),%rsi
lea    0xe05(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    -0x14(%rbp),%edi
call   1080 <close@plt>
lea    0xdf2(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    $0x0,%al
call   10a0 <getchar@plt>
mov    -0x874(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x874(%rbp)
cmp    $0x15,%eax
jge    186e <main+0x65e>
mov    0x2927(%rip),%rax
mov    (%rax),%rdi
mov    0x290d(%rip),%rax
mov    (%rax),%esi
xor    %edx,%edx
call   1130 <socket@plt>
mov    %eax,-0x14(%rbp)
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%edi
lea    -0x38(%rbp),%rsi
add    $0x10,%rsi
mov    -0x40(%rbp),%rax
mov    (%rax),%edx
call   10d0 <bcopy@plt>
mov    0x28f0(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x30(%rbp)
mov    $0x50,%edi
call   1050 <htons@plt>
mov    %rax,-0x38(%rbp)
mov    -0x14(%rbp),%edi
lea    -0x38(%rbp),%rsi
mov    $0x18,%edx
call   1100 <connect@plt>
cmp    $0x0,%rax
je     1734 <main+0x524>
lea    0xcff(%rip),%rdi
call   10e0 <perror@plt>
movslq -0x874(%rbp),%rax
mov    -0x16c0(%rbp,%rax,8),%rsi
ff
lea    0xd57(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
movl   $0x0,-0x878(%rbp)
cmpl   $0x800,-0x878(%rbp)
jge    178e <main+0x57e>
movslq -0x878(%rbp),%rax
movb   $0x0,-0x1080(%rbp,%rax,1)
mov    -0x878(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x878(%rbp)
jmp    175b <main+0x54b>
mov    -0x14(%rbp),%eax
mov    %eax,-0x16cc(%rbp)
movslq -0x874(%rbp),%rax
mov    -0x13a0(%rbp,%rax,8),%rax
ff
mov    %rax,-0x16c8(%rbp)
movslq -0x874(%rbp),%rax
mov    -0x13a0(%rbp,%rax,8),%rdi
ff
call   1040 <strlen@plt>
mov    -0x16cc(%rbp),%edi
mov    -0x16c8(%rbp),%rsi
mov    %eax,%edx
xor    %ecx,%ecx
call   1060 <send@plt>
mov    -0x14(%rbp),%edi
lea    -0x1080(%rbp),%rsi
mov    $0x800,%edx
xor    %ecx,%ecx
call   1030 <recv@plt>
lea    -0x1080(%rbp),%rdi
lea    -0x5c(%rbp),%rsi
call   1120 <strstr@plt>
mov    %rax,-0x68(%rbp)
cmpq   $0x0,-0x68(%rbp)
je     181f <main+0x60f>
lea    0xca2(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
jmp    182d <main+0x61d>
lea    0xca4(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
cmpl   $0x1,-0x18(%rbp)
jne    1861 <main+0x651>
lea    -0x1080(%rbp),%rsi
lea    0xcd8(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xd06(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
mov    $0x0,%al
call   10a0 <getchar@plt>
mov    -0x14(%rbp),%edi
call   1080 <close@plt>
jmp    16a0 <main+0x490>
lea    0xd03(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
add    $0x16d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1668,%rsp
mov    %rsi,%r14
lea    0xdb9(%rip),%rax
mov    %rax,0x348(%rsp)
lea    0xdc9(%rip),%rax
mov    %rax,0x350(%rsp)
lea    0xddf(%rip),%rax
mov    %rax,0x358(%rsp)
lea    0xdf4(%rip),%rax
mov    %rax,0x360(%rsp)
lea    0xe04(%rip),%rax
mov    %rax,0x368(%rsp)
lea    0xe17(%rip),%rax
mov    %rax,0x370(%rsp)
lea    0xe2b(%rip),%rax
mov    %rax,0x378(%rsp)
lea    0xe3c(%rip),%rax
mov    %rax,0x380(%rsp)
lea    0xe57(%rip),%rax
mov    %rax,0x388(%rsp)
lea    0xe5f(%rip),%rax
mov    %rax,0x390(%rsp)
lea    0xe79(%rip),%rax
mov    %rax,0x398(%rsp)
lea    0xe9c(%rip),%rax
mov    %rax,0x3a0(%rsp)
lea    0xeb4(%rip),%rax
mov    %rax,0x3a8(%rsp)
lea    0xebf(%rip),%rax
mov    %rax,0x3b0(%rsp)
lea    0xed7(%rip),%rax
mov    %rax,0x3b8(%rsp)
lea    0xee9(%rip),%rax
mov    %rax,0x3c0(%rsp)
lea    0xeff(%rip),%rax
mov    %rax,0x3c8(%rsp)
lea    0xf14(%rip),%rax
mov    %rax,0x3d0(%rsp)
lea    0xf2c(%rip),%rax
mov    %rax,0x3d8(%rsp)
lea    0xf31(%rip),%rax
mov    %rax,0x3e0(%rsp)
lea    0xf49(%rip),%rax
mov    %rax,0x3e8(%rsp)
lea    0xf5f(%rip),%rax
mov    %rax,0x3f0(%rsp)
mov    %rax,0x3f8(%rsp)
mov    %rax,0x400(%rsp)
lea    0xf50(%rip),%rax
mov    %rax,0x28(%rsp)
lea    0xf4a(%rip),%rcx
mov    %rcx,0x30(%rsp)
mov    %rax,0x38(%rsp)
lea    0xf43(%rip),%rcx
mov    %rcx,0x40(%rsp)
lea    0xf43(%rip),%rcx
mov    %rcx,0x48(%rsp)
lea    0xf44(%rip),%rcx
mov    %rcx,0x50(%rsp)
lea    0xf3e(%rip),%rdx
mov    %rdx,0x58(%rsp)
lea    0xf38(%rip),%rdx
mov    %rdx,0x60(%rsp)
lea    0xf33(%rip),%rdx
mov    %rdx,0x68(%rsp)
mov    %rax,0x70(%rsp)
lea    0xf37(%rip),%rdx
mov    %rdx,0x78(%rsp)
mov    %rax,0x80(%rsp)
lea    0xf2b(%rip),%rax
mov    %rax,0x88(%rsp)
lea    0xf2f(%rip),%rax
mov    %rax,0x90(%rsp)
lea    0xf27(%rip),%rdx
mov    %rdx,0x98(%rsp)
lea    0xf29(%rip),%rdx
mov    %rdx,0xa0(%rsp)
mov    %rcx,0xa8(%rsp)
mov    %rcx,0xb0(%rsp)
lea    0xf13(%rip),%rdx
mov    %rdx,0xb8(%rsp)
mov    %rax,0xc0(%rsp)
mov    %rcx,0xc8(%rsp)
lea    0xe81(%rip),%rax
mov    %rax,0xd0(%rsp)
mov    %rax,0xd8(%rsp)
mov    %rax,0xe0(%rsp)
cmp    $0x1,%edi
jle    1752 <main+0x522>
cmp    $0x2,%edi
jne    14be <main+0x28e>
movl   $0x0,0x4(%rsp)
jmp    14d8 <main+0x2a8>
mov    0x10(%r14),%rsi
lea    0xf2d(%rip),%rdi
call   1140 <strstr@plt>
test   %rax,%rax
setne  %al
mov    %eax,0x4(%rsp)
mov    0x8(%r14),%rdi
call   10d0 <gethostbyname@plt>
test   %rax,%rax
je     1789 <main+0x559>
mov    %rax,%r13
lea    0xf13(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    0x8(%r14),%rdi
call   10b0 <inet_addr@plt>
mov    %rax,%rdi
call   1130 <ntohl@plt>
mov    0x2ad5(%rip),%rbp
mov    0x0(%rbp),%rdi
mov    0x2aba(%rip),%rax
mov    (%rax),%esi
xor    %edx,%edx
call   1150 <socket@plt>
mov    %eax,%ebx
mov    0x0(%r13),%edx
mov    0x4(%r13),%edi
lea    0x18(%rsp),%rsi
call   10f0 <bcopy@plt>
mov    0x0(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    $0x50,%edi
call   1060 <htons@plt>
mov    %rax,0x8(%rsp)
lea    0x8(%rsp),%rsi
mov    %ebx,%edi
mov    $0x18,%edx
call   1120 <connect@plt>
test   %rax,%rax
jne    1741 <main+0x511>
lea    0xf44(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
call   10c0 <getchar@plt>
lea    0xeaf(%rip),%rsi
mov    %ebx,%edi
mov    $0x11,%edx
xor    %ecx,%ecx
call   1070 <send@plt>
lea    0xe60(%rsp),%r14
mov    %ebx,%edi
mov    %r14,%rsi
mov    $0x800,%edx
xor    %ecx,%ecx
call   1030 <recv@plt>
lea    0xe93(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %ebx,%edi
call   10a0 <close@plt>
lea    0xe7e(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
xor    %eax,%eax
call   10c0 <getchar@plt>
mov    $0x1,%r12d
lea    0x660(%rsp),%rbx
jmp    1606 <main+0x3d6>
nopl   0x0(%rax,%rax,1)
mov    %r14d,%edi
call   10a0 <close@plt>
add    $0x1,%r12
cmp    $0x16,%r12
je     1723 <main+0x4f3>
mov    0x0(%rbp),%rdi
mov    0x29c7(%rip),%rax
mov    (%rax),%esi
xor    %edx,%edx
call   1150 <socket@plt>
mov    %eax,%r14d
mov    0x0(%r13),%edx
mov    0x4(%r13),%edi
lea    0x18(%rsp),%rsi
call   10f0 <bcopy@plt>
mov    0x0(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    $0x50,%edi
call   1060 <htons@plt>
mov    %rax,0x8(%rsp)
mov    %r14d,%edi
lea    0x8(%rsp),%rsi
mov    $0x18,%edx
call   1120 <connect@plt>
test   %rax,%rax
jne    1712 <main+0x4e2>
mov    0x20(%rsp,%r12,8),%rsi
lea    0xdfa(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    $0x800,%edx
mov    %rbx,%rdi
xor    %esi,%esi
call   1090 <memset@plt>
mov    0x340(%rsp,%r12,8),%r15
mov    %r15,%rdi
call   1050 <strlen@plt>
mov    %r14d,%edi
mov    %r15,%rsi
mov    %eax,%edx
xor    %ecx,%ecx
call   1070 <send@plt>
mov    %r14d,%edi
mov    %rbx,%rsi
mov    $0x800,%edx
xor    %ecx,%ecx
call   1030 <recv@plt>
mov    %rbx,%rdi
lea    0x941(%rip),%rsi
call   1140 <strstr@plt>
test   %rax,%rax
lea    0xe9d(%rip),%rdi
lea    0xe26(%rip),%rax
cmove  %rax,%rdi
call   1040 <puts@plt>
cmpb   $0x0,0x4(%rsp)
je     15f0 <main+0x3c0>
lea    0xd8c(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0xe4c(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
call   10c0 <getchar@plt>
jmp    15f0 <main+0x3c0>
lea    0xd15(%rip),%rdi
call   1100 <perror@plt>
jmp    1662 <main+0x432>
lea    0xdc6(%rip),%rdi
call   1040 <puts@plt>
add    $0x1668,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xce6(%rip),%rdi
call   1100 <perror@plt>
jmp    156d <main+0x33d>
lea    0xc3d(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    (%r14),%rsi
lea    0xc48(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    (%r14),%rsi
lea    0xc54(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
xor    %edi,%edi
call   1110 <exit@plt>
lea    0xc69(%rip),%rdi
call   10e0 <herror@plt>
xor    %edi,%edi
call   1110 <exit@plt>

LLVM IR (-O0):
%struct.in_addr = type { i32 }
%struct.sockaddr_in = type { i8*, i8*, i32 }
%struct.hostent = type { i32, i32 }
%struct.sockaddr = type { i32 }
@__const.main.foundmsg = [4 x i8] c"200\00"
@.str = [31 x i8] c"GET /cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.1 = [37 x i8] c"GET /helps/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.2 = [36 x i8] c"GET /cp.php?letter=login HTTP/1.0\0A\0A\00"
@.str.3 = [31 x i8] c"GET /pony/admin.php HTTP/1.0\0A\0A\00"
@.str.4 = [34 x i8] c"GET /admin.php?do=auth HTTP/1.0\0A\0A\00"
@.str.5 = [35 x i8] c"GET /panelnew/admin.php HTTP/1.0\0A\0A\00"
@.str.6 = [32 x i8] c"GET /new/1/admin.php HTTP/1.0\0A\0A\00"
@.str.7 = [42 x i8] c"GET /web/adm/index.php?m=login HTTP/1.0\0A\0A\00"
@.str.8 = [23 x i8] c"GET /Panel/ HTTP/1.0\0A\0A\00"
@.str.9 = [41 x i8] c"GET /serverphp/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.10 = [50 x i8] c"GET /wp-admin/includes/saltonindex.php HTTP/1.0\0A\0A\00"
@.str.11 = [39 x i8] c"GET /modules/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.12 = [26 x i8] c"GET /login.php HTTP/1.0\0A\0A\00"
@.str.13 = [39 x i8] c"GET /solar/index.php?login HTTP/1.0\0A\0A\00"
@.str.14 = [33 x i8] c"GET /panel/login.php HTTP/1.0\0A\0A\00"
@.str.15 = [37 x i8] c"GET /panel/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.16 = [36 x i8] c"GET /adm/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.17 = [39 x i8] c"GET /admin/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.18 = [20 x i8] c"GET /lc/ HTTP/1.0\0A\0A\00"
@.str.19 = [39 x i8] c"GET /panel/index.php?login HTTP/1.0\0A\0A\00"
@.str.20 = [37 x i8] c"GET /pony/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.21 = [16 x i8] c"GET HTTP/1.0\0A\0A\00"
@.str.22 = [6 x i8] c"Zeus \00"
@.str.23 = [10 x i8] c"Citadel \00"
@.str.24 = [12 x i8] c"Pony \00"
@.str.25 = [13 x i8] c"H1N1 loader \00"
@.str.26 = [6 x i8] c"Pony \00"
@.str.27 = [6 x i8] c"PONY \00"
@.str.28 = [7 x i8] c"IceIX \00"
@.str.29 = [21 x i8] c"i think its Gorynych\00"
@.str.30 = [8 x i8] c"Mailer \00"
@.str.31 = [19 x i8] c"might be Enslaver \00"
@.str.32 = [7 x i8] c"Solar \00"
@.str.33 = [17 x i8] c"might be kraken \00"
@.str.34 = [9 x i8] c"Citadel \00"
@.str.35 = [20 x i8] c"might be WebInject \00"
@.str.36 = [2 x i8] c" \00"
@.str.37 = [28 x i8] c"\0A Nohidy botnet scan in c#\00"
@.str.38 = [29 x i8] c"\0Ausage : %s just enter host \00"
@.str.39 = [39 x i8] c"\0A Or : %s host -d for debug mode\0A\0A\00"
@.str.40 = [3 x i8] c"-d\00"
@.str.41 = [14 x i8] c"gethostbyname\00"
@.str.42 = [39 x i8] c"\0A\0A\09 Nohidy botnet scan , scans Port 80\00"
@AF_INET = global i8* null
@SOCK_STREAM = global i32 0
@.str.43 = [8 x i8] c"connect\00"
@.str.44 = [57 x i8] c"\0A\0A\09 [ Press any key to check out the httpd version bro \0A\00"
@.str.45 = [18 x i8] c"HEAD / HTTP/1.0\0A\0A\00"
@.str.46 = [3 x i8] c"%s\00"
@.str.47 = [29 x i8] c"\0A\09 [ Press any key to search\00"
@.str.48 = [20 x i8] c"Searching for %s : \00"
@.str.49 = [21 x i8] c"bingo i found it ;)\0A\00"
@.str.50 = [83 x i8] c"error could not find it , try changing host or the botnet is not in Nohidy syntax\0A\00"
@.str.51 = [60 x i8] c"\0A\0A ------------------------\0A %s \0A ------------------------\0A\00"
@.str.52 = [31 x i8] c"Press any key to continue....\0A\00"
@.str.53 = [12 x i8] c"take care \0A\00"
define void @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i8**
%5 = alloca i32
%6 = alloca i32
%7 = alloca %struct.in_addr
%8 = alloca %struct.sockaddr_in
%9 = alloca %struct.hostent*
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca [4 x i8]
%14 = alloca i8*
%15 = alloca [2048 x i8]
%16 = alloca i32
%17 = alloca i32
%18 = alloca [2048 x i8]
%19 = alloca [100 x i8*]
%20 = alloca [100 x i8*]
store i32 %0, i32* %3
store i8** %1, i8*** %4
store i32 0, i32* %6
%21 = bitcast [4 x i8]* %13 to i8*
store i32 0, i32* %16
%22 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 1
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i8** %22
%23 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 2
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i8** %23
%24 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 3
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.2, i64 0, i64 0), i8** %24
%25 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 4
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.3, i64 0, i64 0), i8** %25
%26 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 5
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.4, i64 0, i64 0), i8** %26
%27 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 6
store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.5, i64 0, i64 0), i8** %27
%28 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 7
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i8** %28
%29 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 8
store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i8** %29
%30 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 9
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.8, i64 0, i64 0), i8** %30
%31 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 10
store i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.9, i64 0, i64 0), i8** %31
%32 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 11
store i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.10, i64 0, i64 0), i8** %32
%33 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 12
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.11, i64 0, i64 0), i8** %33
%34 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 13
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0), i8** %34
%35 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 14
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.13, i64 0, i64 0), i8** %35
%36 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 15
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.14, i64 0, i64 0), i8** %36
%37 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 16
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0), i8** %37
%38 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 17
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.16, i64 0, i64 0), i8** %38
%39 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 18
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.17, i64 0, i64 0), i8** %39
%40 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 19
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.18, i64 0, i64 0), i8** %40
%41 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 20
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.19, i64 0, i64 0), i8** %41
%42 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 21
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.20, i64 0, i64 0), i8** %42
%43 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 22
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %43
%44 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 23
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %44
%45 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 24
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %45
%46 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %46
%47 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 2
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0), i8** %47
%48 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 3
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %48
%49 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 4
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i8** %49
%50 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 5
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0), i8** %50
%51 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 6
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %51
%52 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 7
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8** %52
%53 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 8
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i8** %53
%54 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 9
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0), i8** %54
%55 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 10
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %55
%56 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 11
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0), i8** %56
%57 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 12
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %57
%58 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.31, i64 0, i64 0), i8** %58
%59 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 14
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0), i8** %59
%60 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 15
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0), i8** %60
%61 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 16
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.34, i64 0, i64 0), i8** %61
%62 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 17
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %62
%63 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 18
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %63
%64 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 19
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.35, i64 0, i64 0), i8** %64
%65 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 20
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0), i8** %65
%66 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 21
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %66
%67 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 22
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %67
%68 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 23
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %68
%69 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 24
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %69
%70 = load i32, i32* %3
%71 = icmp slt i32 %70, 2
br i1 %71, label %72, label %83
72: ; preds = %2
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.37, i64 0, i64 0))
%74 = load i8**, i8*** %4
%75 = getelementptr inbounds i8*, i8** %74, i64 0
%76 = load i8*, i8** %75
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.38, i64 0, i64 0), i8* %76)
%78 = load i8**, i8*** %4
%79 = getelementptr inbounds i8*, i8** %78, i64 0
%80 = load i8*, i8** %79
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.39, i64 0, i64 0), i8* %80)
%82 = call i32 @exit(i32 0)
unreachable
83: ; preds = %2
%84 = load i32, i32* %3
%85 = icmp sgt i32 %84, 2
br i1 %85, label %86, label %94
86: ; preds = %83
%87 = load i8**, i8*** %4
%88 = getelementptr inbounds i8*, i8** %87, i64 2
%89 = load i8*, i8** %88
%90 = call i8* @strstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8* %89)
%91 = icmp ne i8* %90, null
br i1 %91, label %92, label %93
92: ; preds = %86
store i32 1, i32* %6
br label %93
93: ; preds = %92, %86
br label %94
94: ; preds = %93, %83
%95 = load i8**, i8*** %4
%96 = getelementptr inbounds i8*, i8** %95, i64 1
%97 = load i8*, i8** %96
%98 = call %struct.hostent* @gethostbyname(i8* %97)
store %struct.hostent* %98, %struct.hostent** %9
%99 = icmp eq %struct.hostent* %98, null
br i1 %99, label %100, label %103
100: ; preds = %94
%101 = call i32 @herror(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.41, i64 0, i64 0))
%102 = call i32 @exit(i32 0)
unreachable
103: ; preds = %94
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.42, i64 0, i64 0))
%105 = load i8**, i8*** %4
%106 = getelementptr inbounds i8*, i8** %105, i64 1
%107 = load i8*, i8** %106
%108 = call i64 @inet_addr(i8* %107)
store i64 %108, i64* %10
%109 = load i64, i64* %10
%110 = call i64 @ntohl(i64 %109)
store i64 %110, i64* %12
%111 = load i8*, i8** @AF_INET
%112 = load i32, i32* @SOCK_STREAM
%113 = call i32 @socket(i8* %111, i32 %112, i32 0)
store i32 %113, i32* %5
%114 = load %struct.hostent*, %struct.hostent** %9
%115 = getelementptr inbounds %struct.hostent, %struct.hostent* %114, i32 0, i32 1
%116 = load i32, i32* %115
%117 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 2
%118 = bitcast i32* %117 to i8*
%119 = load %struct.hostent*, %struct.hostent** %9
%120 = getelementptr inbounds %struct.hostent, %struct.hostent* %119, i32 0, i32 0
%121 = load i32, i32* %120
%122 = call i32 @bcopy(i32 %116, i8* %118, i32 %121)
%123 = load i8*, i8** @AF_INET
%124 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 1
store i8* %123, i8** %124
%125 = call i8* @htons(i32 80)
%126 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 0
store i8* %125, i8** %126
%127 = load i32, i32* %5
%128 = bitcast %struct.sockaddr_in* %8 to %struct.sockaddr*
%129 = call i64 @connect(i32 %127, %struct.sockaddr* %128, i32 24)
%130 = icmp ne i64 %129, 0
br i1 %130, label %131, label %133
131: ; preds = %103
%132 = call i32 @perror(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0))
br label %133
133: ; preds = %131, %103
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.44, i64 0, i64 0))
%135 = call i32 (...) @getchar()
%136 = load i32, i32* %5
%137 = call i32 @send(i32 %136, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.45, i64 0, i64 0), i32 17, i32 0)
%138 = load i32, i32* %5
%139 = getelementptr inbounds [2048 x i8], [2048 x i8]* %15, i64 0, i64 0
%140 = call i32 @recv(i32 %138, i8* %139, i32 2048, i32 0)
%141 = getelementptr inbounds [2048 x i8], [2048 x i8]* %15, i64 0, i64 0
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %141)
%143 = load i32, i32* %5
%144 = call i32 @close(i32 %143)
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.47, i64 0, i64 0))
%146 = call i32 (...) @getchar()
br label %147
147: ; preds = %222, %133
%148 = load i32, i32* %16
%149 = add nsw i32 %148, 1
store i32 %149, i32* %16
%150 = icmp slt i32 %148, 21
br i1 %150, label %151, label %225
151: ; preds = %147
%152 = load i8*, i8** @AF_INET
%153 = load i32, i32* @SOCK_STREAM
%154 = call i32 @socket(i8* %152, i32 %153, i32 0)
store i32 %154, i32* %5
%155 = load %struct.hostent*, %struct.hostent** %9
%156 = getelementptr inbounds %struct.hostent, %struct.hostent* %155, i32 0, i32 1
%157 = load i32, i32* %156
%158 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 2
%159 = bitcast i32* %158 to i8*
%160 = load %struct.hostent*, %struct.hostent** %9
%161 = getelementptr inbounds %struct.hostent, %struct.hostent* %160, i32 0, i32 0
%162 = load i32, i32* %161
%163 = call i32 @bcopy(i32 %157, i8* %159, i32 %162)
%164 = load i8*, i8** @AF_INET
%165 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 1
store i8* %164, i8** %165
%166 = call i8* @htons(i32 80)
%167 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %8, i32 0, i32 0
store i8* %166, i8** %167
%168 = load i32, i32* %5
%169 = bitcast %struct.sockaddr_in* %8 to %struct.sockaddr*
%170 = call i64 @connect(i32 %168, %struct.sockaddr* %169, i32 24)
%171 = icmp ne i64 %170, 0
br i1 %171, label %172, label %174
172: ; preds = %151
%173 = call i32 @perror(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0))
br label %174
174: ; preds = %172, %151
%175 = load i32, i32* %16
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [100 x i8*], [100 x i8*]* %20, i64 0, i64 %176
%178 = load i8*, i8** %177
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.48, i64 0, i64 0), i8* %178)
store i32 0, i32* %17
br label %180
180: ; preds = %187, %174
%181 = load i32, i32* %17
%182 = icmp slt i32 %181, 2048
br i1 %182, label %183, label %190
183: ; preds = %180
%184 = load i32, i32* %17
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [2048 x i8], [2048 x i8]* %18, i64 0, i64 %185
store i8 0, i8* %186
br label %187
187: ; preds = %183
%188 = load i32, i32* %17
%189 = add nsw i32 %188, 1
store i32 %189, i32* %17
br label %180
190: ; preds = %180
%191 = load i32, i32* %5
%192 = load i32, i32* %16
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 %193
%195 = load i8*, i8** %194
%196 = load i32, i32* %16
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds [100 x i8*], [100 x i8*]* %19, i64 0, i64 %197
%199 = load i8*, i8** %198
%200 = call i32 @strlen(i8* %199)
%201 = call i32 @send(i32 %191, i8* %195, i32 %200, i32 0)
%202 = load i32, i32* %5
%203 = getelementptr inbounds [2048 x i8], [2048 x i8]* %18, i64 0, i64 0
%204 = call i32 @recv(i32 %202, i8* %203, i32 2048, i32 0)
%205 = getelementptr inbounds [2048 x i8], [2048 x i8]* %18, i64 0, i64 0
%206 = getelementptr inbounds [4 x i8], [4 x i8]* %13, i64 0, i64 0
%207 = call i8* @strstr(i8* %205, i8* %206)
store i8* %207, i8** %14
%208 = load i8*, i8** %14
%209 = icmp ne i8* %208, null
br i1 %209, label %210, label %212
210: ; preds = %190
%211 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.49, i64 0, i64 0))
br label %214
212: ; preds = %190
%213 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.50, i64 0, i64 0))
br label %214
214: ; preds = %212, %210
%215 = load i32, i32* %6
%216 = icmp eq i32 %215, 1
br i1 %216, label %217, label %222
217: ; preds = %214
%218 = getelementptr inbounds [2048 x i8], [2048 x i8]* %18, i64 0, i64 0
%219 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.51, i64 0, i64 0), i8* %218)
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.52, i64 0, i64 0))
%221 = call i32 (...) @getchar()
br label %222
222: ; preds = %217, %214
%223 = load i32, i32* %5
%224 = call i32 @close(i32 %223)
br label %147
225: ; preds = %147
%226 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.53, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
%struct.sockaddr_in = type { i8*, i8*, i32 }
%struct.hostent = type { i32, i32 }
%struct.sockaddr = type { i32 }
@__const.main.foundmsg = [4 x i8] c"200\00"
@.str = [31 x i8] c"GET /cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.1 = [37 x i8] c"GET /helps/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.2 = [36 x i8] c"GET /cp.php?letter=login HTTP/1.0\0A\0A\00"
@.str.3 = [31 x i8] c"GET /pony/admin.php HTTP/1.0\0A\0A\00"
@.str.4 = [34 x i8] c"GET /admin.php?do=auth HTTP/1.0\0A\0A\00"
@.str.5 = [35 x i8] c"GET /panelnew/admin.php HTTP/1.0\0A\0A\00"
@.str.6 = [32 x i8] c"GET /new/1/admin.php HTTP/1.0\0A\0A\00"
@.str.7 = [42 x i8] c"GET /web/adm/index.php?m=login HTTP/1.0\0A\0A\00"
@.str.8 = [23 x i8] c"GET /Panel/ HTTP/1.0\0A\0A\00"
@.str.9 = [41 x i8] c"GET /serverphp/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.10 = [50 x i8] c"GET /wp-admin/includes/saltonindex.php HTTP/1.0\0A\0A\00"
@.str.11 = [39 x i8] c"GET /modules/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.12 = [26 x i8] c"GET /login.php HTTP/1.0\0A\0A\00"
@.str.13 = [39 x i8] c"GET /solar/index.php?login HTTP/1.0\0A\0A\00"
@.str.14 = [33 x i8] c"GET /panel/login.php HTTP/1.0\0A\0A\00"
@.str.15 = [37 x i8] c"GET /panel/cp.php?m=login HTTP/1.0\0A\0A\00"
@.str.16 = [36 x i8] c"GET /adm/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.17 = [39 x i8] c"GET /admin/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.18 = [20 x i8] c"GET /lc/ HTTP/1.0\0A\0A\00"
@.str.19 = [39 x i8] c"GET /panel/index.php?login HTTP/1.0\0A\0A\00"
@.str.20 = [37 x i8] c"GET /pony/Panel/admin.php HTTP/1.0\0A\0A\00"
@.str.21 = [16 x i8] c"GET HTTP/1.0\0A\0A\00"
@.str.22 = [6 x i8] c"Zeus \00"
@.str.23 = [10 x i8] c"Citadel \00"
@.str.24 = [12 x i8] c"Pony \00"
@.str.25 = [13 x i8] c"H1N1 loader \00"
@.str.26 = [6 x i8] c"Pony \00"
@.str.27 = [6 x i8] c"PONY \00"
@.str.28 = [7 x i8] c"IceIX \00"
@.str.29 = [21 x i8] c"i think its Gorynych\00"
@.str.30 = [8 x i8] c"Mailer \00"
@.str.31 = [19 x i8] c"might be Enslaver \00"
@.str.32 = [7 x i8] c"Solar \00"
@.str.33 = [17 x i8] c"might be kraken \00"
@.str.34 = [9 x i8] c"Citadel \00"
@.str.35 = [20 x i8] c"might be WebInject \00"
@.str.36 = [2 x i8] c" \00"
@.str.37 = [28 x i8] c"\0A Nohidy botnet scan in c#\00"
@.str.38 = [29 x i8] c"\0Ausage : %s just enter host \00"
@.str.39 = [39 x i8] c"\0A Or : %s host -d for debug mode\0A\0A\00"
@.str.40 = [3 x i8] c"-d\00"
@.str.41 = [14 x i8] c"gethostbyname\00"
@.str.42 = [39 x i8] c"\0A\0A\09 Nohidy botnet scan , scans Port 80\00"
@AF_INET = global i8* null
@SOCK_STREAM = global i32 0
@.str.43 = [8 x i8] c"connect\00"
@.str.45 = [18 x i8] c"HEAD / HTTP/1.0\0A\0A\00"
@.str.46 = [3 x i8] c"%s\00"
@.str.47 = [29 x i8] c"\0A\09 [ Press any key to search\00"
@.str.48 = [20 x i8] c"Searching for %s : \00"
@.str.51 = [60 x i8] c"\0A\0A ------------------------\0A %s \0A ------------------------\0A\00"
@str = [56 x i8] c"\0A\0A\09 [ Press any key to check out the httpd version bro \00"
@str.54 = [11 x i8] c"take care \00"
@str.55 = [82 x i8] c"error could not find it , try changing host or the botnet is not in Nohidy syntax\00"
@str.56 = [30 x i8] c"Press any key to continue....\00"
@str.57 = [20 x i8] c"bingo i found it ;)\00"
define void @main(i32 %0, i8** nocapture %1) {
%3 = alloca %struct.sockaddr_in
%4 = alloca [2048 x i8]
%5 = alloca [2048 x i8]
%6 = getelementptr inbounds [2048 x i8], [2048 x i8]* %5, i64 0, i64 0
%7 = alloca [100 x i8*]
%8 = alloca [100 x i8*]
%9 = bitcast %struct.sockaddr_in* %3 to i8*
%10 = getelementptr inbounds [2048 x i8], [2048 x i8]* %4, i64 0, i64 0
%11 = getelementptr inbounds [2048 x i8], [2048 x i8]* %5, i64 0, i64 0
%12 = bitcast [100 x i8*]* %7 to i8*
%13 = bitcast [100 x i8*]* %8 to i8*
%14 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 1
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i8** %14
%15 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 2
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i8** %15
%16 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 3
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.2, i64 0, i64 0), i8** %16
%17 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 4
store i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.3, i64 0, i64 0), i8** %17
%18 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 5
store i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.4, i64 0, i64 0), i8** %18
%19 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 6
store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.5, i64 0, i64 0), i8** %19
%20 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 7
store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0), i8** %20
%21 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 8
store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i8** %21
%22 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 9
store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.8, i64 0, i64 0), i8** %22
%23 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 10
store i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.9, i64 0, i64 0), i8** %23
%24 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 11
store i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.10, i64 0, i64 0), i8** %24
%25 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 12
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.11, i64 0, i64 0), i8** %25
%26 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 13
store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0), i8** %26
%27 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 14
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.13, i64 0, i64 0), i8** %27
%28 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 15
store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.14, i64 0, i64 0), i8** %28
%29 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 16
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0), i8** %29
%30 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 17
store i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.16, i64 0, i64 0), i8** %30
%31 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 18
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.17, i64 0, i64 0), i8** %31
%32 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 19
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.18, i64 0, i64 0), i8** %32
%33 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 20
store i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.19, i64 0, i64 0), i8** %33
%34 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 21
store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.20, i64 0, i64 0), i8** %34
%35 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 22
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %35
%36 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 23
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %36
%37 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 24
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), i8** %37
%38 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 1
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %38
%39 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 2
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0), i8** %39
%40 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 3
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %40
%41 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 4
store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i8** %41
%42 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 5
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0), i8** %42
%43 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 6
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %43
%44 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 7
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8** %44
%45 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 8
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i8** %45
%46 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 9
store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0), i8** %46
%47 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 10
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %47
%48 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 11
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0), i8** %48
%49 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 12
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8** %49
%50 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 13
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.31, i64 0, i64 0), i8** %50
%51 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 14
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0), i8** %51
%52 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 15
store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.33, i64 0, i64 0), i8** %52
%53 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 16
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.34, i64 0, i64 0), i8** %53
%54 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 17
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %54
%55 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 18
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %55
%56 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 19
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.35, i64 0, i64 0), i8** %56
%57 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 20
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0), i8** %57
%58 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 21
store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i8** %58
%59 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 22
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %59
%60 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 23
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %60
%61 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 24
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8** %61
%62 = icmp slt i32 %0, 2
br i1 %62, label %63, label %70
63: ; preds = %2
%64 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.37, i64 0, i64 0))
%65 = load i8*, i8** %1
%66 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.38, i64 0, i64 0), i8* %65)
%67 = load i8*, i8** %1
%68 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.39, i64 0, i64 0), i8* %67)
%69 = tail call i32 @exit(i32 0)
unreachable
70: ; preds = %2
%71 = icmp eq i32 %0, 2
br i1 %71, label %77, label %72
72: ; preds = %70
%73 = getelementptr inbounds i8*, i8** %1, i64 2
%74 = load i8*, i8** %73
%75 = tail call i8* @strstr(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8* dereferenceable(1) %74)
%76 = icmp ne i8* %75, null
br label %77
77: ; preds = %72, %70
%78 = phi i1 [ false, %70 ], [ %76, %72 ]
%79 = getelementptr inbounds i8*, i8** %1, i64 1
%80 = load i8*, i8** %79
%81 = tail call %struct.hostent* @gethostbyname(i8* %80)
%82 = icmp eq %struct.hostent* %81, null
br i1 %82, label %83, label %86
83: ; preds = %77
%84 = tail call i32 @herror(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.41, i64 0, i64 0))
%85 = tail call i32 @exit(i32 0)
unreachable
86: ; preds = %77
%87 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.42, i64 0, i64 0))
%88 = load i8*, i8** %79
%89 = tail call i64 @inet_addr(i8* %88)
%90 = tail call i64 @ntohl(i64 %89)
%91 = load i8*, i8** @AF_INET
%92 = load i32, i32* @SOCK_STREAM
%93 = tail call i32 @socket(i8* %91, i32 %92, i32 0)
%94 = getelementptr inbounds %struct.hostent, %struct.hostent* %81, i64 0, i32 1
%95 = load i32, i32* %94
%96 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %3, i64 0, i32 2
%97 = bitcast i32* %96 to i8*
%98 = getelementptr inbounds %struct.hostent, %struct.hostent* %81, i64 0, i32 0
%99 = load i32, i32* %98
%100 = call i32 @bcopy(i32 %95, i8* %97, i32 %99)
%101 = load i8*, i8** @AF_INET
%102 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %3, i64 0, i32 1
store i8* %101, i8** %102
%103 = call i8* @htons(i32 80)
%104 = getelementptr inbounds %struct.sockaddr_in, %struct.sockaddr_in* %3, i64 0, i32 0
store i8* %103, i8** %104
%105 = bitcast %struct.sockaddr_in* %3 to %struct.sockaddr*
%106 = call i64 @connect(i32 %93, %struct.sockaddr* %105, i32 24)
%107 = icmp eq i64 %106, 0
br i1 %107, label %110, label %108
108: ; preds = %86
%109 = call i32 @perror(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0))
br label %110
110: ; preds = %108, %86
%111 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str, i64 0, i64 0))
%112 = call i32 (...) @getchar()
%113 = call i32 @send(i32 %93, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.45, i64 0, i64 0), i32 17, i32 0)
%114 = call i32 @recv(i32 %93, i8* %10, i32 2048, i32 0)
%115 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %10)
%116 = call i32 @close(i32 %93)
%117 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.47, i64 0, i64 0))
%118 = call i32 (...) @getchar()
br label %119
119: ; preds = %110, %150
%120 = phi i64 [ 1, %110 ], [ %152, %150 ]
%121 = load i8*, i8** @AF_INET
%122 = load i32, i32* @SOCK_STREAM
%123 = call i32 @socket(i8* %121, i32 %122, i32 0)
%124 = load i32, i32* %94
%125 = load i32, i32* %98
%126 = call i32 @bcopy(i32 %124, i8* %97, i32 %125)
%127 = load i8*, i8** @AF_INET
store i8* %127, i8** %102
%128 = call i8* @htons(i32 80)
store i8* %128, i8** %104
%129 = call i64 @connect(i32 %123, %struct.sockaddr* %105, i32 24)
%130 = icmp eq i64 %129, 0
br i1 %130, label %133, label %131
131: ; preds = %119
%132 = call i32 @perror(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i64 0, i64 0))
br label %133
133: ; preds = %131, %119
%134 = getelementptr inbounds [100 x i8*], [100 x i8*]* %8, i64 0, i64 %120
%135 = load i8*, i8** %134
%136 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.48, i64 0, i64 0), i8* %135)
%137 = getelementptr inbounds [100 x i8*], [100 x i8*]* %7, i64 0, i64 %120
%138 = load i8*, i8** %137
%139 = call i32 @strlen(i8* %138)
%140 = call i32 @send(i32 %123, i8* %138, i32 %139, i32 0)
%141 = call i32 @recv(i32 %123, i8* %11, i32 2048, i32 0)
%142 = call i8* @strstr(i8* %11, i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @__const.main.foundmsg, i64 0, i64 0))
%143 = icmp eq i8* %142, null
%144 = select i1 %143, i8* getelementptr inbounds ([82 x i8], [82 x i8]* @str.55, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @str.57, i64 0, i64 0)
%145 = call i32 @puts(i8* dereferenceable(1) %144)
br i1 %78, label %146, label %150
146: ; preds = %133
%147 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.51, i64 0, i64 0), i8* %11)
%148 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.56, i64 0, i64 0))
%149 = call i32 (...) @getchar()
br label %150
150: ; preds = %146, %133
%151 = call i32 @close(i32 %123)
%152 = add nuw nsw i64 %120, 1
%153 = icmp eq i64 %152, 22
br i1 %153, label %154, label %119
154: ; preds = %150
%155 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.54, i64 0, i64 0))
ret void
}