int AnalyzeUDPString(char *st, int *netcom, char *remote, char *command,
                     char *ccf, int *netmask, int *bus, int *led, int *port) {
  int i, p, v;
  *netcom = 0;
  ccf[0] = remote[0] = command[0] = 0;
  *bus = *led = 0;
  *netmask = 0;
  *port = 21000;
  i = 3;
  if (!strncmp(st, "sndccfr", 7) || !strncmp(st, "Sndccfr", 7) ||
      !strncmp(st, "SNDCCFR", 7)) {
    i = 7;
    *netcom = 5;
  } else if (!strncmp(st, "sndccf", 6) || !strncmp(st, "Sndccf", 6) ||
             !strncmp(st, "SNDCCF", 6)) {
    i = 6;
    *netcom = 4;
  } else if (!strncmp(st, "snd", 3) || !strncmp(st, "Snd", 3) ||
             !strncmp(st, "SND", 3))
    *netcom = 1;
  else if (!strncmp(st, "lrn", 3) || !strncmp(st, "Lrn", 3) ||
           !strncmp(st, "LRN", 3))
    *netcom = 2;
  else if (!strncmp(st, "ping", 4) || !strncmp(st, "Ping", 4) ||
           !strncmp(st, "PING", 4)) {
    *netcom = 3;
    i = 4;
    while (st[i] == ' ')
      i++;
    p = i;
    while (st[i] && st[i] != ',')
      i++;
    st[i++] = 0;
    if (st[p] == 'p' || st[p] == 'P')
      *port = atoi(st + p + 1);
    return (0);
  } else
    return 37;
  while (st[i] == ' ')
    i++;
  if (*netcom == 4 || *netcom == 5) {
    p = i;
    while (st[i] && st[i] != ',')
      i++;
    v = st[i];
    st[i++] = 0;
    strcpy(ccf, st + p);
  } else {
    p = i;
    while (st[i] && st[i] != ',')
      i++;
    if (!st[i])
      return 37;
    st[i++] = 0;
    strncpy(remote, st + p, 80);
    p = i;
    while (st[i] && st[i] != ',')
      i++;
    v = st[i];
    st[i++] = 0;
    strncpy(command, st + p, 20);
  }
  while (v) {
    p = i;
    while (st[i] && st[i] != ',' && st[i] != ' ')
      i++;
    v = st[i];
    st[i++] = 0;
    if (st[p] == 'l' || st[p] == 'L') {
      p++;
      if (st[p] == 'i' || st[p] == 'I')
        *led = 1;
      else if (st[p] == 'e' || st[p] == 'E')
        *led = 2;
      else if (st[p] == 'b' || st[p] == 'B')
        *led = 3;
      else if (st[p] == '1')
        *led = 4;
      else if (st[p] == '2')
        *led = 5;
      else if (st[p] == '3')
        *led = 6;
      else if (st[p] == '4')
        *led = 7;
      else if (st[p] == '5')
        *led = 8;
      else if (st[p] == '6')
        *led = 9;
      else if (st[p] == '7')
        *led = 10;
      else if (st[p] == '8')
        *led = 11;
      else
        return 37;
    } else if (st[p] == 'b' || st[p] == 'B') {
      p++;
      *bus = atoi(st + p);
      if (*bus > 255)
        return 37;
    } else if (st[p] == 'm' || st[p] == 'M') {
      p++;
      *netmask = atoi(st + p);
    } else if (st[p] == 'p' || st[p] == 'P') {
      p++;
      *port = atoi(st + p);
    } else
      return 37;
  }
  return (0);
}


x86 assembly (clang, -O0):
<AnalyzeUDPString>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x28(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movb   $0x0,(%rax)
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x38(%rbp),%rax
movl   $0x0,(%rax)
mov    0x20(%rbp),%rax
movl   $0x5208,(%rax)
movl   $0x3,-0x3c(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xe3b(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     1214 <AnalyzeUDPString+0xd4>
mov    -0x10(%rbp),%rdi
lea    0xe25(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     1214 <AnalyzeUDPString+0xd4>
mov    -0x10(%rbp),%rdi
lea    0xe0f(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
jne    122a <AnalyzeUDPString+0xea>
movl   $0x7,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x5,(%rax)
jmp    14d2 <AnalyzeUDPString+0x392>
mov    -0x10(%rbp),%rdi
lea    0xde3(%rip),%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     1284 <AnalyzeUDPString+0x144>
mov    -0x10(%rbp),%rdi
lea    0xdcc(%rip),%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     1284 <AnalyzeUDPString+0x144>
mov    -0x10(%rbp),%rdi
lea    0xdb5(%rip),%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
jne    129a <AnalyzeUDPString+0x15a>
movl   $0x6,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x4,(%rax)
jmp    14cd <AnalyzeUDPString+0x38d>
mov    -0x10(%rbp),%rdi
lea    0xd88(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     12f4 <AnalyzeUDPString+0x1b4>
mov    -0x10(%rbp),%rdi
lea    0xd6e(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     12f4 <AnalyzeUDPString+0x1b4>
mov    -0x10(%rbp),%rdi
lea    0xd54(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
jne    1303 <AnalyzeUDPString+0x1c3>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    14c8 <AnalyzeUDPString+0x388>
mov    -0x10(%rbp),%rdi
lea    0xd2b(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     135d <AnalyzeUDPString+0x21d>
mov    -0x10(%rbp),%rdi
lea    0xd11(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     135d <AnalyzeUDPString+0x21d>
mov    -0x10(%rbp),%rdi
lea    0xcf7(%rip),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
jne    136c <AnalyzeUDPString+0x22c>
mov    -0x18(%rbp),%rax
movl   $0x2,(%rax)
jmp    14c3 <AnalyzeUDPString+0x383>
mov    -0x10(%rbp),%rdi
lea    0xcce(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     13c6 <AnalyzeUDPString+0x286>
mov    -0x10(%rbp),%rdi
lea    0xcb5(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
je     13c6 <AnalyzeUDPString+0x286>
mov    -0x10(%rbp),%rdi
lea    0xc9c(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%eax
jne    14b7 <AnalyzeUDPString+0x377>
mov    -0x18(%rbp),%rax
movl   $0x3,(%rax)
movl   $0x4,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    13fa <AnalyzeUDPString+0x2ba>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    13d7 <AnalyzeUDPString+0x297>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x45(%rbp)
je     142f <AnalyzeUDPString+0x2ef>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
setne  %al
mov    %al,-0x45(%rbp)
mov    -0x45(%rbp),%al
test   $0x1,%al
jne    143f <AnalyzeUDPString+0x2ff>
jmp    144d <AnalyzeUDPString+0x30d>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1400 <AnalyzeUDPString+0x2c0>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x3c(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     148d <AnalyzeUDPString+0x34d>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x50,%eax
jne    14ab <AnalyzeUDPString+0x36b>
mov    -0x10(%rbp),%rdi
movslq -0x40(%rbp),%rax
add    %rax,%rdi
add    $0x1,%rdi
mov    $0x0,%al
call   1060 <atoi@plt>
mov    %eax,%ecx
mov    0x20(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
movl   $0x25,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
jmp    14c8 <AnalyzeUDPString+0x388>
jmp    14cd <AnalyzeUDPString+0x38d>
jmp    14d2 <AnalyzeUDPString+0x392>
jmp    14d7 <AnalyzeUDPString+0x397>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    14fa <AnalyzeUDPString+0x3ba>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    14d7 <AnalyzeUDPString+0x397>
mov    -0x18(%rbp),%rax
cmpl   $0x4,(%rax)
je     1514 <AnalyzeUDPString+0x3d4>
mov    -0x18(%rbp),%rax
cmpl   $0x5,(%rax)
jne    15a5 <AnalyzeUDPString+0x465>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x46(%rbp)
je     1549 <AnalyzeUDPString+0x409>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
setne  %al
mov    %al,-0x46(%rbp)
mov    -0x46(%rbp),%al
test   $0x1,%al
jne    1559 <AnalyzeUDPString+0x419>
jmp    1567 <AnalyzeUDPString+0x427>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    151a <AnalyzeUDPString+0x3da>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x3c(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x30(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x40(%rbp),%rax
add    %rax,%rsi
call   1050 <strcpy@plt>
jmp    16d6 <AnalyzeUDPString+0x596>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x47(%rbp)
je     15da <AnalyzeUDPString+0x49a>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
setne  %al
mov    %al,-0x47(%rbp)
mov    -0x47(%rbp),%al
test   $0x1,%al
jne    15ea <AnalyzeUDPString+0x4aa>
jmp    15f8 <AnalyzeUDPString+0x4b8>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    15ab <AnalyzeUDPString+0x46b>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
jne    1616 <AnalyzeUDPString+0x4d6>
movl   $0x25,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x3c(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x20(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x40(%rbp),%rax
add    %rax,%rsi
mov    $0x50,%edx
call   1030 <strncpy@plt>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x48(%rbp)
je     167a <AnalyzeUDPString+0x53a>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
setne  %al
mov    %al,-0x48(%rbp)
mov    -0x48(%rbp),%al
test   $0x1,%al
jne    168a <AnalyzeUDPString+0x54a>
jmp    1698 <AnalyzeUDPString+0x558>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    164b <AnalyzeUDPString+0x50b>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x3c(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x28(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x40(%rbp),%rax
add    %rax,%rsi
mov    $0x14,%edx
call   1030 <strncpy@plt>
jmp    16db <AnalyzeUDPString+0x59b>
cmpl   $0x0,-0x44(%rbp)
je     1aea <AnalyzeUDPString+0x9aa>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x49(%rbp)
je     1734 <AnalyzeUDPString+0x5f4>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x2c,%ecx
mov    %al,-0x49(%rbp)
je     1734 <AnalyzeUDPString+0x5f4>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
setne  %al
mov    %al,-0x49(%rbp)
mov    -0x49(%rbp),%al
test   $0x1,%al
jne    1744 <AnalyzeUDPString+0x604>
jmp    1752 <AnalyzeUDPString+0x612>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    16eb <AnalyzeUDPString+0x5ab>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x3c(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
je     17a1 <AnalyzeUDPString+0x661>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4c,%eax
jne    19b8 <AnalyzeUDPString+0x878>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x69,%eax
je     17d4 <AnalyzeUDPString+0x694>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    17e3 <AnalyzeUDPString+0x6a3>
mov    0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    19b3 <AnalyzeUDPString+0x873>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x65,%eax
je     180d <AnalyzeUDPString+0x6cd>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x45,%eax
jne    181c <AnalyzeUDPString+0x6dc>
mov    0x18(%rbp),%rax
movl   $0x2,(%rax)
jmp    19ae <AnalyzeUDPString+0x86e>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1846 <AnalyzeUDPString+0x706>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x42,%eax
jne    1855 <AnalyzeUDPString+0x715>
mov    0x18(%rbp),%rax
movl   $0x3,(%rax)
jmp    19a9 <AnalyzeUDPString+0x869>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1879 <AnalyzeUDPString+0x739>
mov    0x18(%rbp),%rax
movl   $0x4,(%rax)
jmp    19a4 <AnalyzeUDPString+0x864>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    189d <AnalyzeUDPString+0x75d>
mov    0x18(%rbp),%rax
movl   $0x5,(%rax)
jmp    199f <AnalyzeUDPString+0x85f>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x33,%eax
jne    18c1 <AnalyzeUDPString+0x781>
mov    0x18(%rbp),%rax
movl   $0x6,(%rax)
jmp    199a <AnalyzeUDPString+0x85a>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x34,%eax
jne    18e5 <AnalyzeUDPString+0x7a5>
mov    0x18(%rbp),%rax
movl   $0x7,(%rax)
jmp    1995 <AnalyzeUDPString+0x855>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x35,%eax
jne    1909 <AnalyzeUDPString+0x7c9>
mov    0x18(%rbp),%rax
movl   $0x8,(%rax)
jmp    1990 <AnalyzeUDPString+0x850>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x36,%eax
jne    192d <AnalyzeUDPString+0x7ed>
mov    0x18(%rbp),%rax
movl   $0x9,(%rax)
jmp    198b <AnalyzeUDPString+0x84b>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x37,%eax
jne    1951 <AnalyzeUDPString+0x811>
mov    0x18(%rbp),%rax
movl   $0xa,(%rax)
jmp    1986 <AnalyzeUDPString+0x846>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x38,%eax
jne    1975 <AnalyzeUDPString+0x835>
mov    0x18(%rbp),%rax
movl   $0xb,(%rax)
jmp    1981 <AnalyzeUDPString+0x841>
movl   $0x25,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
jmp    1986 <AnalyzeUDPString+0x846>
jmp    198b <AnalyzeUDPString+0x84b>
jmp    1990 <AnalyzeUDPString+0x850>
jmp    1995 <AnalyzeUDPString+0x855>
jmp    199a <AnalyzeUDPString+0x85a>
jmp    199f <AnalyzeUDPString+0x85f>
jmp    19a4 <AnalyzeUDPString+0x864>
jmp    19a9 <AnalyzeUDPString+0x869>
jmp    19ae <AnalyzeUDPString+0x86e>
jmp    19b3 <AnalyzeUDPString+0x873>
jmp    1ae5 <AnalyzeUDPString+0x9a5>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     19e2 <AnalyzeUDPString+0x8a2>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x42,%eax
jne    1a26 <AnalyzeUDPString+0x8e6>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
movslq -0x40(%rbp),%rax
add    %rax,%rdi
mov    $0x0,%al
call   1060 <atoi@plt>
mov    %eax,%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    0x10(%rbp),%rax
cmpl   $0xff,(%rax)
jle    1a21 <AnalyzeUDPString+0x8e1>
movl   $0x25,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
jmp    1ae0 <AnalyzeUDPString+0x9a0>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     1a50 <AnalyzeUDPString+0x910>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
jne    1a78 <AnalyzeUDPString+0x938>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
movslq -0x40(%rbp),%rax
add    %rax,%rdi
mov    $0x0,%al
call   1060 <atoi@plt>
mov    %eax,%ecx
mov    -0x38(%rbp),%rax
mov    %ecx,(%rax)
jmp    1adb <AnalyzeUDPString+0x99b>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1aa2 <AnalyzeUDPString+0x962>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x50,%eax
jne    1aca <AnalyzeUDPString+0x98a>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
movslq -0x40(%rbp),%rax
add    %rax,%rdi
mov    $0x0,%al
call   1060 <atoi@plt>
mov    %eax,%ecx
mov    0x20(%rbp),%rax
mov    %ecx,(%rax)
jmp    1ad6 <AnalyzeUDPString+0x996>
movl   $0x25,-0x4(%rbp)
jmp    1af1 <AnalyzeUDPString+0x9b1>
jmp    1adb <AnalyzeUDPString+0x99b>
jmp    1ae0 <AnalyzeUDPString+0x9a0>
jmp    1ae5 <AnalyzeUDPString+0x9a5>
jmp    16db <AnalyzeUDPString+0x59b>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<AnalyzeUDPString>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r8,%r13
mov    %rsi,%r15
mov    %rdi,%r14
mov    0x60(%rsp),%rax
mov    0x58(%rsp),%rsi
mov    0x50(%rsp),%rdi
movl   $0x0,(%r15)
mov    %rcx,0x8(%rsp)
movb   $0x0,(%rcx)
mov    %rdx,(%rsp)
movb   $0x0,(%rdx)
movb   $0x0,(%r8)
movl   $0x0,(%rsi)
movl   $0x0,(%rdi)
mov    %r9,0x10(%rsp)
movl   $0x0,(%r9)
movl   $0x5208,(%rax)
lea    0xffb(%rip),%rsi
mov    $0x7,%ebp
mov    $0x7,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
mov    $0x1,%bl
mov    $0x5,%r12d
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xfda(%rip),%rsi
mov    $0x7,%ebp
mov    $0x7,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xfc1(%rip),%rsi
mov    $0x7,%ebp
mov    $0x7,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xfa8(%rip),%rsi
mov    $0x6,%ebp
mov    $0x6,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
mov    $0x4,%r12d
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xf88(%rip),%rsi
mov    $0x6,%ebp
mov    $0x6,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xf6e(%rip),%rsi
mov    $0x6,%ebp
mov    $0x6,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d2 <AnalyzeUDPString+0x292>
lea    0xf54(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
mov    $0x1,%r12d
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xf31(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xf14(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xef7(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
mov    $0x2,%r12d
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xed4(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xeb7(%rip),%rsi
mov    $0x3,%ebp
mov    $0x3,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     13d0 <AnalyzeUDPString+0x290>
lea    0xe9a(%rip),%rsi
mov    $0x4,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     1396 <AnalyzeUDPString+0x256>
lea    0xe87(%rip),%rsi
mov    $0x4,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
test   %eax,%eax
je     1396 <AnalyzeUDPString+0x256>
lea    0xe74(%rip),%rsi
mov    $0x4,%edx
mov    %r14,%rdi
call   1040 <strncmp@plt>
mov    $0x25,%r12d
test   %eax,%eax
jne    16d2 <AnalyzeUDPString+0x592>
movl   $0x3,(%r15)
mov    $0x3,%eax
cmpb   $0x20,0x1(%r14,%rax,1)
lea    0x1(%rax),%rax
je     13a2 <AnalyzeUDPString+0x262>
mov    %eax,%eax
lea    (%r14,%rax,1),%rdi
movzbl (%r14,%rax,1),%ecx
test   %cl,%cl
je     16a9 <AnalyzeUDPString+0x569>
cmp    $0x2c,%cl
je     16a9 <AnalyzeUDPString+0x569>
add    $0x1,%rax
jmp    13b4 <AnalyzeUDPString+0x274>
xor    %ebx,%ebx
mov    %r12d,(%r15)
add    $0xffffffffffffffff,%rbp
nopl   0x0(%rax)
cmpb   $0x20,0x1(%r14,%rbp,1)
lea    0x1(%rbp),%rbp
je     13e0 <AnalyzeUDPString+0x2a0>
mov    %ebp,%ebp
lea    (%r14,%rbp,1),%rsi
test   %bl,%bl
je     1420 <AnalyzeUDPString+0x2e0>
cs nopw 0x0(%rax,%rax,1)
movzbl (%r14,%rbp,1),%ebx
test   %bl,%bl
je     1433 <AnalyzeUDPString+0x2f3>
cmp    $0x2c,%bl
je     1433 <AnalyzeUDPString+0x2f3>
add    $0x1,%rbp
jmp    1400 <AnalyzeUDPString+0x2c0>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%r14,%rbp,1),%eax
test   %al,%al
je     144b <AnalyzeUDPString+0x30b>
cmp    $0x2c,%al
je     1456 <AnalyzeUDPString+0x316>
add    $0x1,%rbp
jmp    1420 <AnalyzeUDPString+0x2e0>
mov    %ebp,%eax
movb   $0x0,(%r14,%rax,1)
mov    %r13,%rdi
call   1050 <strcpy@plt>
test   %bl,%bl
jne    14b8 <AnalyzeUDPString+0x378>
jmp    16cf <AnalyzeUDPString+0x58f>
mov    $0x25,%r12d
jmp    16d2 <AnalyzeUDPString+0x592>
mov    %ebp,%eax
mov    %ebp,%r15d
add    $0x1,%r15d
movb   $0x0,(%r14,%rax,1)
mov    $0x50,%edx
mov    (%rsp),%rdi
call   1030 <strncpy@plt>
mov    %r15,%rbp
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r14,%rbp,1),%ebx
test   %bl,%bl
je     1494 <AnalyzeUDPString+0x354>
cmp    $0x2c,%bl
je     1494 <AnalyzeUDPString+0x354>
add    $0x1,%rbp
jmp    1480 <AnalyzeUDPString+0x340>
mov    %ebp,%eax
movb   $0x0,(%r14,%rax,1)
add    %r14,%r15
mov    $0x14,%edx
mov    0x8(%rsp),%rdi
mov    %r15,%rsi
call   1030 <strncpy@plt>
test   %bl,%bl
je     16cf <AnalyzeUDPString+0x58f>
movabs $0x100100000001,%r13
lea    0xb37(%rip),%rbx
mov    $0x25,%r12d
jmp    150f <AnalyzeUDPString+0x3cf>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
shl    $0x20,%rdi
movabs $0x200000000,%rax
add    %rax,%rdi
sar    $0x20,%rdi
add    %r14,%rdi
xor    %eax,%eax
call   1060 <atoi@plt>
mov    0x60(%rsp),%rcx
mov    %eax,(%rcx)
test   %r15b,%r15b
je     16cf <AnalyzeUDPString+0x58f>
mov    %rbp,%rdi
lea    0x1(%rbp),%eax
cltq
mov    %rax,%rbp
jmp    1524 <AnalyzeUDPString+0x3e4>
nopl   0x0(%rax)
add    $0x1,%rbp
movzbl (%r14,%rbp,1),%r15d
cmp    $0x2c,%r15
ja     1520 <AnalyzeUDPString+0x3e0>
bt     %r15,%r13
jae    1520 <AnalyzeUDPString+0x3e0>
movb   $0x0,(%r14,%rbp,1)
mov    (%r14,%rax,1),%al
add    $0xbe,%al
cmp    $0x2e,%al
ja     16d2 <AnalyzeUDPString+0x592>
movzbl %al,%eax
movslq (%rbx,%rax,4),%rax
add    %rbx,%rax
jmp    *%rax
shl    $0x20,%rdi
movabs $0x200000000,%rax
add    %rax,%rdi
sar    $0x20,%rdi
add    %r14,%rdi
xor    %eax,%eax
call   1060 <atoi@plt>
mov    0x50(%rsp),%rcx
mov    %eax,(%rcx)
cmp    $0xff,%eax
jle    1506 <AnalyzeUDPString+0x3c6>
jmp    16d2 <AnalyzeUDPString+0x592>
cs nopw 0x0(%rax,%rax,1)
shl    $0x20,%rdi
movabs $0x200000000,%rax
add    %rax,%rdi
sar    $0x20,%rdi
mov    (%r14,%rdi,1),%al
add    $0xcf,%al
cmp    $0x38,%al
ja     16d2 <AnalyzeUDPString+0x592>
movzbl %al,%eax
lea    0xaff(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x58(%rsp),%rax
movl   $0x3,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
cs nopw 0x0(%rax,%rax,1)
shl    $0x20,%rdi
movabs $0x200000000,%rax
add    %rax,%rdi
sar    $0x20,%rdi
add    %r14,%rdi
xor    %eax,%eax
call   1060 <atoi@plt>
mov    0x10(%rsp),%rcx
jmp    1504 <AnalyzeUDPString+0x3c4>
mov    0x58(%rsp),%rax
movl   $0x2,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x1,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x4,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x5,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x6,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x7,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x8,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0x9,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0xa,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    0x58(%rsp),%rax
movl   $0xb,(%rax)
jmp    1506 <AnalyzeUDPString+0x3c6>
mov    %eax,%eax
movb   $0x0,(%r14,%rax,1)
mov    (%rdi),%al
or     $0x20,%al
cmp    $0x70,%al
jne    16cf <AnalyzeUDPString+0x58f>
add    $0x1,%rdi
xor    %r12d,%r12d
xor    %eax,%eax
call   1060 <atoi@plt>
mov    0x60(%rsp),%rcx
mov    %eax,(%rcx)
jmp    16d2 <AnalyzeUDPString+0x592>
xor    %r12d,%r12d
mov    %r12d,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [8 x i8] c"sndccfr\00"
@.str.1 = [8 x i8] c"Sndccfr\00"
@.str.2 = [8 x i8] c"SNDCCFR\00"
@.str.3 = [7 x i8] c"sndccf\00"
@.str.4 = [7 x i8] c"Sndccf\00"
@.str.5 = [7 x i8] c"SNDCCF\00"
@.str.6 = [4 x i8] c"snd\00"
@.str.7 = [4 x i8] c"Snd\00"
@.str.8 = [4 x i8] c"SND\00"
@.str.9 = [4 x i8] c"lrn\00"
@.str.10 = [4 x i8] c"Lrn\00"
@.str.11 = [4 x i8] c"LRN\00"
@.str.12 = [5 x i8] c"ping\00"
@.str.13 = [5 x i8] c"Ping\00"
@.str.14 = [5 x i8] c"PING\00"
define i32 @AnalyzeUDPString(i8* %0, i32* %1, i8* %2, i8* %3, i8* %4, i32* %5, i32* %6, i32* %7, i32* %8) {
%10 = alloca i32
%11 = alloca i8*
%12 = alloca i32*
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i32*
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
store i8* %0, i8** %11
store i32* %1, i32** %12
store i8* %2, i8** %13
store i8* %3, i8** %14
store i8* %4, i8** %15
store i32* %5, i32** %16
store i32* %6, i32** %17
store i32* %7, i32** %18
store i32* %8, i32** %19
%23 = load i32*, i32** %12
store i32 0, i32* %23
%24 = load i8*, i8** %14
%25 = getelementptr inbounds i8, i8* %24, i64 0
store i8 0, i8* %25
%26 = load i8*, i8** %13
%27 = getelementptr inbounds i8, i8* %26, i64 0
store i8 0, i8* %27
%28 = load i8*, i8** %15
%29 = getelementptr inbounds i8, i8* %28, i64 0
store i8 0, i8* %29
%30 = load i32*, i32** %18
store i32 0, i32* %30
%31 = load i32*, i32** %17
store i32 0, i32* %31
%32 = load i32*, i32** %16
store i32 0, i32* %32
%33 = load i32*, i32** %19
store i32 21000, i32* %33
store i32 3, i32* %20
%34 = load i8*, i8** %11
%35 = call i32 @strncmp(i8* %34, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i64 7)
%36 = icmp ne i32 %35, 0
br i1 %36, label %37, label %45
37: ; preds = %9
%38 = load i8*, i8** %11
%39 = call i32 @strncmp(i8* %38, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i64 7)
%40 = icmp ne i32 %39, 0
br i1 %40, label %41, label %45
41: ; preds = %37
%42 = load i8*, i8** %11
%43 = call i32 @strncmp(i8* %42, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i64 7)
%44 = icmp ne i32 %43, 0
br i1 %44, label %47, label %45
45: ; preds = %41, %37, %9
store i32 7, i32* %20
%46 = load i32*, i32** %12
store i32 5, i32* %46
br label %171
47: ; preds = %41
%48 = load i8*, i8** %11
%49 = call i32 @strncmp(i8* %48, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i64 6)
%50 = icmp ne i32 %49, 0
br i1 %50, label %51, label %59
51: ; preds = %47
%52 = load i8*, i8** %11
%53 = call i32 @strncmp(i8* %52, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i64 6)
%54 = icmp ne i32 %53, 0
br i1 %54, label %55, label %59
55: ; preds = %51
%56 = load i8*, i8** %11
%57 = call i32 @strncmp(i8* %56, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i64 6)
%58 = icmp ne i32 %57, 0
br i1 %58, label %61, label %59
59: ; preds = %55, %51, %47
store i32 6, i32* %20
%60 = load i32*, i32** %12
store i32 4, i32* %60
br label %170
61: ; preds = %55
%62 = load i8*, i8** %11
%63 = call i32 @strncmp(i8* %62, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i64 3)
%64 = icmp ne i32 %63, 0
br i1 %64, label %65, label %73
65: ; preds = %61
%66 = load i8*, i8** %11
%67 = call i32 @strncmp(i8* %66, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i64 3)
%68 = icmp ne i32 %67, 0
br i1 %68, label %69, label %73
69: ; preds = %65
%70 = load i8*, i8** %11
%71 = call i32 @strncmp(i8* %70, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i64 3)
%72 = icmp ne i32 %71, 0
br i1 %72, label %75, label %73
73: ; preds = %69, %65, %61
%74 = load i32*, i32** %12
store i32 1, i32* %74
br label %169
75: ; preds = %69
%76 = load i8*, i8** %11
%77 = call i32 @strncmp(i8* %76, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i64 3)
%78 = icmp ne i32 %77, 0
br i1 %78, label %79, label %87
79: ; preds = %75
%80 = load i8*, i8** %11
%81 = call i32 @strncmp(i8* %80, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i64 3)
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %87
83: ; preds = %79
%84 = load i8*, i8** %11
%85 = call i32 @strncmp(i8* %84, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i64 3)
%86 = icmp ne i32 %85, 0
br i1 %86, label %89, label %87
87: ; preds = %83, %79, %75
%88 = load i32*, i32** %12
store i32 2, i32* %88
br label %168
89: ; preds = %83
%90 = load i8*, i8** %11
%91 = call i32 @strncmp(i8* %90, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i64 4)
%92 = icmp ne i32 %91, 0
br i1 %92, label %93, label %101
93: ; preds = %89
%94 = load i8*, i8** %11
%95 = call i32 @strncmp(i8* %94, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i64 4)
%96 = icmp ne i32 %95, 0
br i1 %96, label %97, label %101
97: ; preds = %93
%98 = load i8*, i8** %11
%99 = call i32 @strncmp(i8* %98, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i64 4)
%100 = icmp ne i32 %99, 0
br i1 %100, label %167, label %101
101: ; preds = %97, %93, %89
%102 = load i32*, i32** %12
store i32 3, i32* %102
store i32 4, i32* %20
br label %103
103: ; preds = %111, %101
%104 = load i8*, i8** %11
%105 = load i32, i32* %20
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i8, i8* %104, i64 %106
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp eq i32 %109, 32
br i1 %110, label %111, label %114
111: ; preds = %103
%112 = load i32, i32* %20
%113 = add nsw i32 %112, 1
store i32 %113, i32* %20
br label %103
114: ; preds = %103
%115 = load i32, i32* %20
store i32 %115, i32* %21
br label %116
116: ; preds = %134, %114
%117 = load i8*, i8** %11
%118 = load i32, i32* %20
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %117, i64 %119
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp ne i32 %122, 0
br i1 %123, label %124, label %132
124: ; preds = %116
%125 = load i8*, i8** %11
%126 = load i32, i32* %20
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %125, i64 %127
%129 = load i8, i8* %128
%130 = sext i8 %129 to i32
%131 = icmp ne i32 %130, 44
br label %132
132: ; preds = %124, %116
%133 = phi i1 [ false, %116 ], [ %131, %124 ]
br i1 %133, label %134, label %137
134: ; preds = %132
%135 = load i32, i32* %20
%136 = add nsw i32 %135, 1
store i32 %136, i32* %20
br label %116
137: ; preds = %132
%138 = load i8*, i8** %11
%139 = load i32, i32* %20
%140 = add nsw i32 %139, 1
store i32 %140, i32* %20
%141 = sext i32 %139 to i64
%142 = getelementptr inbounds i8, i8* %138, i64 %141
store i8 0, i8* %142
%143 = load i8*, i8** %11
%144 = load i32, i32* %21
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds i8, i8* %143, i64 %145
%147 = load i8, i8* %146
%148 = sext i8 %147 to i32
%149 = icmp eq i32 %148, 112
br i1 %149, label %158, label %150
150: ; preds = %137
%151 = load i8*, i8** %11
%152 = load i32, i32* %21
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds i8, i8* %151, i64 %153
%155 = load i8, i8* %154
%156 = sext i8 %155 to i32
%157 = icmp eq i32 %156, 80
br i1 %157, label %158, label %166
158: ; preds = %150, %137
%159 = load i8*, i8** %11
%160 = load i32, i32* %21
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds i8, i8* %159, i64 %161
%163 = getelementptr inbounds i8, i8* %162, i64 1
%164 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %163)
%165 = load i32*, i32** %19
store i32 %164, i32* %165
br label %166
166: ; preds = %158, %150
store i32 0, i32* %10
br label %611
167: ; preds = %97
store i32 37, i32* %10
br label %611
168: ; preds = %87
br label %169
169: ; preds = %168, %73
br label %170
170: ; preds = %169, %59
br label %171
171: ; preds = %170, %45
br label %172
172: ; preds = %180, %171
%173 = load i8*, i8** %11
%174 = load i32, i32* %20
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds i8, i8* %173, i64 %175
%177 = load i8, i8* %176
%178 = sext i8 %177 to i32
%179 = icmp eq i32 %178, 32
br i1 %179, label %180, label %183
180: ; preds = %172
%181 = load i32, i32* %20
%182 = add nsw i32 %181, 1
store i32 %182, i32* %20
br label %172
183: ; preds = %172
%184 = load i32*, i32** %12
%185 = load i32, i32* %184
%186 = icmp eq i32 %185, 4
br i1 %186, label %191, label %187
187: ; preds = %183
%188 = load i32*, i32** %12
%189 = load i32, i32* %188
%190 = icmp eq i32 %189, 5
br i1 %190, label %191, label %232
191: ; preds = %187, %183
%192 = load i32, i32* %20
store i32 %192, i32* %21
br label %193
193: ; preds = %211, %191
%194 = load i8*, i8** %11
%195 = load i32, i32* %20
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds i8, i8* %194, i64 %196
%198 = load i8, i8* %197
%199 = sext i8 %198 to i32
%200 = icmp ne i32 %199, 0
br i1 %200, label %201, label %209
201: ; preds = %193
%202 = load i8*, i8** %11
%203 = load i32, i32* %20
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i8, i8* %202, i64 %204
%206 = load i8, i8* %205
%207 = sext i8 %206 to i32
%208 = icmp ne i32 %207, 44
br label %209
209: ; preds = %201, %193
%210 = phi i1 [ false, %193 ], [ %208, %201 ]
br i1 %210, label %211, label %214
211: ; preds = %209
%212 = load i32, i32* %20
%213 = add nsw i32 %212, 1
store i32 %213, i32* %20
br label %193
214: ; preds = %209
%215 = load i8*, i8** %11
%216 = load i32, i32* %20
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds i8, i8* %215, i64 %217
%219 = load i8, i8* %218
%220 = sext i8 %219 to i32
store i32 %220, i32* %22
%221 = load i8*, i8** %11
%222 = load i32, i32* %20
%223 = add nsw i32 %222, 1
store i32 %223, i32* %20
%224 = sext i32 %222 to i64
%225 = getelementptr inbounds i8, i8* %221, i64 %224
store i8 0, i8* %225
%226 = load i8*, i8** %15
%227 = load i8*, i8** %11
%228 = load i32, i32* %21
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds i8, i8* %227, i64 %229
%231 = call i8* @strcpy(i8* %226, i8* %230)
br label %315
232: ; preds = %187
%233 = load i32, i32* %20
store i32 %233, i32* %21
br label %234
234: ; preds = %252, %232
%235 = load i8*, i8** %11
%236 = load i32, i32* %20
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds i8, i8* %235, i64 %237
%239 = load i8, i8* %238
%240 = sext i8 %239 to i32
%241 = icmp ne i32 %240, 0
br i1 %241, label %242, label %250
242: ; preds = %234
%243 = load i8*, i8** %11
%244 = load i32, i32* %20
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds i8, i8* %243, i64 %245
%247 = load i8, i8* %246
%248 = sext i8 %247 to i32
%249 = icmp ne i32 %248, 44
br label %250
250: ; preds = %242, %234
%251 = phi i1 [ false, %234 ], [ %249, %242 ]
br i1 %251, label %252, label %255
252: ; preds = %250
%253 = load i32, i32* %20
%254 = add nsw i32 %253, 1
store i32 %254, i32* %20
br label %234
255: ; preds = %250
%256 = load i8*, i8** %11
%257 = load i32, i32* %20
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds i8, i8* %256, i64 %258
%260 = load i8, i8* %259
%261 = icmp ne i8 %260, 0
br i1 %261, label %263, label %262
262: ; preds = %255
store i32 37, i32* %10
br label %611
263: ; preds = %255
%264 = load i8*, i8** %11
%265 = load i32, i32* %20
%266 = add nsw i32 %265, 1
store i32 %266, i32* %20
%267 = sext i32 %265 to i64
%268 = getelementptr inbounds i8, i8* %264, i64 %267
store i8 0, i8* %268
%269 = load i8*, i8** %13
%270 = load i8*, i8** %11
%271 = load i32, i32* %21
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds i8, i8* %270, i64 %272
%274 = call i8* @strncpy(i8* %269, i8* %273, i64 80)
%275 = load i32, i32* %20
store i32 %275, i32* %21
br label %276
276: ; preds = %294, %263
%277 = load i8*, i8** %11
%278 = load i32, i32* %20
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds i8, i8* %277, i64 %279
%281 = load i8, i8* %280
%282 = sext i8 %281 to i32
%283 = icmp ne i32 %282, 0
br i1 %283, label %284, label %292
284: ; preds = %276
%285 = load i8*, i8** %11
%286 = load i32, i32* %20
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds i8, i8* %285, i64 %287
%289 = load i8, i8* %288
%290 = sext i8 %289 to i32
%291 = icmp ne i32 %290, 44
br label %292
292: ; preds = %284, %276
%293 = phi i1 [ false, %276 ], [ %291, %284 ]
br i1 %293, label %294, label %297
294: ; preds = %292
%295 = load i32, i32* %20
%296 = add nsw i32 %295, 1
store i32 %296, i32* %20
br label %276
297: ; preds = %292
%298 = load i8*, i8** %11
%299 = load i32, i32* %20
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds i8, i8* %298, i64 %300
%302 = load i8, i8* %301
%303 = sext i8 %302 to i32
store i32 %303, i32* %22
%304 = load i8*, i8** %11
%305 = load i32, i32* %20
%306 = add nsw i32 %305, 1
store i32 %306, i32* %20
%307 = sext i32 %305 to i64
%308 = getelementptr inbounds i8, i8* %304, i64 %307
store i8 0, i8* %308
%309 = load i8*, i8** %14
%310 = load i8*, i8** %11
%311 = load i32, i32* %21
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds i8, i8* %310, i64 %312
%314 = call i8* @strncpy(i8* %309, i8* %313, i64 20)
br label %315
315: ; preds = %297, %214
br label %316
316: ; preds = %609, %315
%317 = load i32, i32* %22
%318 = icmp ne i32 %317, 0
br i1 %318, label %319, label %610
319: ; preds = %316
%320 = load i32, i32* %20
store i32 %320, i32* %21
br label %321
321: ; preds = %347, %319
%322 = load i8*, i8** %11
%323 = load i32, i32* %20
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds i8, i8* %322, i64 %324
%326 = load i8, i8* %325
%327 = sext i8 %326 to i32
%328 = icmp ne i32 %327, 0
br i1 %328, label %329, label %345
329: ; preds = %321
%330 = load i8*, i8** %11
%331 = load i32, i32* %20
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds i8, i8* %330, i64 %332
%334 = load i8, i8* %333
%335 = sext i8 %334 to i32
%336 = icmp ne i32 %335, 44
br i1 %336, label %337, label %345
337: ; preds = %329
%338 = load i8*, i8** %11
%339 = load i32, i32* %20
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds i8, i8* %338, i64 %340
%342 = load i8, i8* %341
%343 = sext i8 %342 to i32
%344 = icmp ne i32 %343, 32
br label %345
345: ; preds = %337, %329, %321
%346 = phi i1 [ false, %329 ], [ false, %321 ], [ %344, %337 ]
br i1 %346, label %347, label %350
347: ; preds = %345
%348 = load i32, i32* %20
%349 = add nsw i32 %348, 1
store i32 %349, i32* %20
br label %321
350: ; preds = %345
%351 = load i8*, i8** %11
%352 = load i32, i32* %20
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds i8, i8* %351, i64 %353
%355 = load i8, i8* %354
%356 = sext i8 %355 to i32
store i32 %356, i32* %22
%357 = load i8*, i8** %11
%358 = load i32, i32* %20
%359 = add nsw i32 %358, 1
store i32 %359, i32* %20
%360 = sext i32 %358 to i64
%361 = getelementptr inbounds i8, i8* %357, i64 %360
store i8 0, i8* %361
%362 = load i8*, i8** %11
%363 = load i32, i32* %21
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds i8, i8* %362, i64 %364
%366 = load i8, i8* %365
%367 = sext i8 %366 to i32
%368 = icmp eq i32 %367, 108
br i1 %368, label %377, label %369
369: ; preds = %350
%370 = load i8*, i8** %11
%371 = load i32, i32* %21
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds i8, i8* %370, i64 %372
%374 = load i8, i8* %373
%375 = sext i8 %374 to i32
%376 = icmp eq i32 %375, 76
br i1 %376, label %377, label %525
377: ; preds = %369, %350
%378 = load i32, i32* %21
%379 = add nsw i32 %378, 1
store i32 %379, i32* %21
%380 = load i8*, i8** %11
%381 = load i32, i32* %21
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds i8, i8* %380, i64 %382
%384 = load i8, i8* %383
%385 = sext i8 %384 to i32
%386 = icmp eq i32 %385, 105
br i1 %386, label %395, label %387
387: ; preds = %377
%388 = load i8*, i8** %11
%389 = load i32, i32* %21
%390 = sext i32 %389 to i64
%391 = getelementptr inbounds i8, i8* %388, i64 %390
%392 = load i8, i8* %391
%393 = sext i8 %392 to i32
%394 = icmp eq i32 %393, 73
br i1 %394, label %395, label %397
395: ; preds = %387, %377
%396 = load i32*, i32** %18
store i32 1, i32* %396
br label %524
397: ; preds = %387
%398 = load i8*, i8** %11
%399 = load i32, i32* %21
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds i8, i8* %398, i64 %400
%402 = load i8, i8* %401
%403 = sext i8 %402 to i32
%404 = icmp eq i32 %403, 101
br i1 %404, label %413, label %405
405: ; preds = %397
%406 = load i8*, i8** %11
%407 = load i32, i32* %21
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds i8, i8* %406, i64 %408
%410 = load i8, i8* %409
%411 = sext i8 %410 to i32
%412 = icmp eq i32 %411, 69
br i1 %412, label %413, label %415
413: ; preds = %405, %397
%414 = load i32*, i32** %18
store i32 2, i32* %414
br label %523
415: ; preds = %405
%416 = load i8*, i8** %11
%417 = load i32, i32* %21
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds i8, i8* %416, i64 %418
%420 = load i8, i8* %419
%421 = sext i8 %420 to i32
%422 = icmp eq i32 %421, 98
br i1 %422, label %431, label %423
423: ; preds = %415
%424 = load i8*, i8** %11
%425 = load i32, i32* %21
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds i8, i8* %424, i64 %426
%428 = load i8, i8* %427
%429 = sext i8 %428 to i32
%430 = icmp eq i32 %429, 66
br i1 %430, label %431, label %433
431: ; preds = %423, %415
%432 = load i32*, i32** %18
store i32 3, i32* %432
br label %522
433: ; preds = %423
%434 = load i8*, i8** %11
%435 = load i32, i32* %21
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds i8, i8* %434, i64 %436
%438 = load i8, i8* %437
%439 = sext i8 %438 to i32
%440 = icmp eq i32 %439, 49
br i1 %440, label %441, label %443
441: ; preds = %433
%442 = load i32*, i32** %18
store i32 4, i32* %442
br label %521
443: ; preds = %433
%444 = load i8*, i8** %11
%445 = load i32, i32* %21
%446 = sext i32 %445 to i64
%447 = getelementptr inbounds i8, i8* %444, i64 %446
%448 = load i8, i8* %447
%449 = sext i8 %448 to i32
%450 = icmp eq i32 %449, 50
br i1 %450, label %451, label %453
451: ; preds = %443
%452 = load i32*, i32** %18
store i32 5, i32* %452
br label %520
453: ; preds = %443
%454 = load i8*, i8** %11
%455 = load i32, i32* %21
%456 = sext i32 %455 to i64
%457 = getelementptr inbounds i8, i8* %454, i64 %456
%458 = load i8, i8* %457
%459 = sext i8 %458 to i32
%460 = icmp eq i32 %459, 51
br i1 %460, label %461, label %463
461: ; preds = %453
%462 = load i32*, i32** %18
store i32 6, i32* %462
br label %519
463: ; preds = %453
%464 = load i8*, i8** %11
%465 = load i32, i32* %21
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds i8, i8* %464, i64 %466
%468 = load i8, i8* %467
%469 = sext i8 %468 to i32
%470 = icmp eq i32 %469, 52
br i1 %470, label %471, label %473
471: ; preds = %463
%472 = load i32*, i32** %18
store i32 7, i32* %472
br label %518
473: ; preds = %463
%474 = load i8*, i8** %11
%475 = load i32, i32* %21
%476 = sext i32 %475 to i64
%477 = getelementptr inbounds i8, i8* %474, i64 %476
%478 = load i8, i8* %477
%479 = sext i8 %478 to i32
%480 = icmp eq i32 %479, 53
br i1 %480, label %481, label %483
481: ; preds = %473
%482 = load i32*, i32** %18
store i32 8, i32* %482
br label %517
483: ; preds = %473
%484 = load i8*, i8** %11
%485 = load i32, i32* %21
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds i8, i8* %484, i64 %486
%488 = load i8, i8* %487
%489 = sext i8 %488 to i32
%490 = icmp eq i32 %489, 54
br i1 %490, label %491, label %493
491: ; preds = %483
%492 = load i32*, i32** %18
store i32 9, i32* %492
br label %516
493: ; preds = %483
%494 = load i8*, i8** %11
%495 = load i32, i32* %21
%496 = sext i32 %495 to i64
%497 = getelementptr inbounds i8, i8* %494, i64 %496
%498 = load i8, i8* %497
%499 = sext i8 %498 to i32
%500 = icmp eq i32 %499, 55
br i1 %500, label %501, label %503
501: ; preds = %493
%502 = load i32*, i32** %18
store i32 10, i32* %502
br label %515
503: ; preds = %493
%504 = load i8*, i8** %11
%505 = load i32, i32* %21
%506 = sext i32 %505 to i64
%507 = getelementptr inbounds i8, i8* %504, i64 %506
%508 = load i8, i8* %507
%509 = sext i8 %508 to i32
%510 = icmp eq i32 %509, 56
br i1 %510, label %511, label %513
511: ; preds = %503
%512 = load i32*, i32** %18
store i32 11, i32* %512
br label %514
513: ; preds = %503
store i32 37, i32* %10
br label %611
514: ; preds = %511
br label %515
515: ; preds = %514, %501
br label %516
516: ; preds = %515, %491
br label %517
517: ; preds = %516, %481
br label %518
518: ; preds = %517, %471
br label %519
519: ; preds = %518, %461
br label %520
520: ; preds = %519, %451
br label %521
521: ; preds = %520, %441
br label %522
522: ; preds = %521, %431
br label %523
523: ; preds = %522, %413
br label %524
524: ; preds = %523, %395
br label %609
525: ; preds = %369
%526 = load i8*, i8** %11
%527 = load i32, i32* %21
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds i8, i8* %526, i64 %528
%530 = load i8, i8* %529
%531 = sext i8 %530 to i32
%532 = icmp eq i32 %531, 98
br i1 %532, label %541, label %533
533: ; preds = %525
%534 = load i8*, i8** %11
%535 = load i32, i32* %21
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds i8, i8* %534, i64 %536
%538 = load i8, i8* %537
%539 = sext i8 %538 to i32
%540 = icmp eq i32 %539, 66
br i1 %540, label %541, label %555
541: ; preds = %533, %525
%542 = load i32, i32* %21
%543 = add nsw i32 %542, 1
store i32 %543, i32* %21
%544 = load i8*, i8** %11
%545 = load i32, i32* %21
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds i8, i8* %544, i64 %546
%548 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %547)
%549 = load i32*, i32** %17
store i32 %548, i32* %549
%550 = load i32*, i32** %17
%551 = load i32, i32* %550
%552 = icmp sgt i32 %551, 255
br i1 %552, label %553, label %554
553: ; preds = %541
store i32 37, i32* %10
br label %611
554: ; preds = %541
br label %608
555: ; preds = %533
%556 = load i8*, i8** %11
%557 = load i32, i32* %21
%558 = sext i32 %557 to i64
%559 = getelementptr inbounds i8, i8* %556, i64 %558
%560 = load i8, i8* %559
%561 = sext i8 %560 to i32
%562 = icmp eq i32 %561, 109
br i1 %562, label %571, label %563
563: ; preds = %555
%564 = load i8*, i8** %11
%565 = load i32, i32* %21
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds i8, i8* %564, i64 %566
%568 = load i8, i8* %567
%569 = sext i8 %568 to i32
%570 = icmp eq i32 %569, 77
br i1 %570, label %571, label %580
571: ; preds = %563, %555
%572 = load i32, i32* %21
%573 = add nsw i32 %572, 1
store i32 %573, i32* %21
%574 = load i8*, i8** %11
%575 = load i32, i32* %21
%576 = sext i32 %575 to i64
%577 = getelementptr inbounds i8, i8* %574, i64 %576
%578 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %577)
%579 = load i32*, i32** %16
store i32 %578, i32* %579
br label %607
580: ; preds = %563
%581 = load i8*, i8** %11
%582 = load i32, i32* %21
%583 = sext i32 %582 to i64
%584 = getelementptr inbounds i8, i8* %581, i64 %583
%585 = load i8, i8* %584
%586 = sext i8 %585 to i32
%587 = icmp eq i32 %586, 112
br i1 %587, label %596, label %588
588: ; preds = %580
%589 = load i8*, i8** %11
%590 = load i32, i32* %21
%591 = sext i32 %590 to i64
%592 = getelementptr inbounds i8, i8* %589, i64 %591
%593 = load i8, i8* %592
%594 = sext i8 %593 to i32
%595 = icmp eq i32 %594, 80
br i1 %595, label %596, label %605
596: ; preds = %588, %580
%597 = load i32, i32* %21
%598 = add nsw i32 %597, 1
store i32 %598, i32* %21
%599 = load i8*, i8** %11
%600 = load i32, i32* %21
%601 = sext i32 %600 to i64
%602 = getelementptr inbounds i8, i8* %599, i64 %601
%603 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %602)
%604 = load i32*, i32** %19
store i32 %603, i32* %604
br label %606
605: ; preds = %588
store i32 37, i32* %10
br label %611
606: ; preds = %596
br label %607
607: ; preds = %606, %571
br label %608
608: ; preds = %607, %554
br label %609
609: ; preds = %608, %524
br label %316
610: ; preds = %316
store i32 0, i32* %10
br label %611
611: ; preds = %610, %605, %553, %513, %262, %167, %166
%612 = load i32, i32* %10
ret i32 %612
}

LLVM IR (-O2):
@.str = [8 x i8] c"sndccfr\00"
@.str.1 = [8 x i8] c"Sndccfr\00"
@.str.2 = [8 x i8] c"SNDCCFR\00"
@.str.3 = [7 x i8] c"sndccf\00"
@.str.4 = [7 x i8] c"Sndccf\00"
@.str.5 = [7 x i8] c"SNDCCF\00"
@.str.6 = [4 x i8] c"snd\00"
@.str.7 = [4 x i8] c"Snd\00"
@.str.8 = [4 x i8] c"SND\00"
@.str.9 = [4 x i8] c"lrn\00"
@.str.10 = [4 x i8] c"Lrn\00"
@.str.11 = [4 x i8] c"LRN\00"
@.str.12 = [5 x i8] c"ping\00"
@.str.13 = [5 x i8] c"Ping\00"
@.str.14 = [5 x i8] c"PING\00"
define i32 @AnalyzeUDPString(i8* %0, i32* nocapture %1, i8* %2, i8* %3, i8* %4, i32* nocapture writeonly %5, i32* nocapture writeonly %6, i32* nocapture writeonly %7, i32* nocapture writeonly %8) {
store i32 0, i32* %1
store i8 0, i8* %3
store i8 0, i8* %2
store i8 0, i8* %4
store i32 0, i32* %7
store i32 0, i32* %6
store i32 0, i32* %5
store i32 21000, i32* %8
%10 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i64 7)
%11 = icmp eq i32 %10, 0
br i1 %11, label %77, label %12
12: ; preds = %9
%13 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i64 7)
%14 = icmp eq i32 %13, 0
br i1 %14, label %77, label %15
15: ; preds = %12
%16 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i64 7)
%17 = icmp eq i32 %16, 0
br i1 %17, label %77, label %18
18: ; preds = %15
%19 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i64 6)
%20 = icmp eq i32 %19, 0
br i1 %20, label %77, label %21
21: ; preds = %18
%22 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i64 6)
%23 = icmp eq i32 %22, 0
br i1 %23, label %77, label %24
24: ; preds = %21
%25 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i64 6)
%26 = icmp eq i32 %25, 0
br i1 %26, label %77, label %27
27: ; preds = %24
%28 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i64 3)
%29 = icmp eq i32 %28, 0
br i1 %29, label %77, label %30
30: ; preds = %27
%31 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i64 3)
%32 = icmp eq i32 %31, 0
br i1 %32, label %77, label %33
33: ; preds = %30
%34 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i64 3)
%35 = icmp eq i32 %34, 0
br i1 %35, label %77, label %36
36: ; preds = %33
%37 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i64 3)
%38 = icmp eq i32 %37, 0
br i1 %38, label %77, label %39
39: ; preds = %36
%40 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i64 3)
%41 = icmp eq i32 %40, 0
br i1 %41, label %77, label %42
42: ; preds = %39
%43 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i64 3)
%44 = icmp eq i32 %43, 0
br i1 %44, label %77, label %45
45: ; preds = %42
%46 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i64 4)
%47 = icmp eq i32 %46, 0
br i1 %47, label %54, label %48
48: ; preds = %45
%49 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i64 4)
%50 = icmp eq i32 %49, 0
br i1 %50, label %54, label %51
51: ; preds = %48
%52 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i64 4)
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %180
54: ; preds = %51, %48, %45
store i32 3, i32* %1
br label %55
55: ; preds = %55, %54
%56 = phi i64 [ %60, %55 ], [ 4, %54 ]
%57 = getelementptr inbounds i8, i8* %0, i64 %56
%58 = load i8, i8* %57
%59 = icmp eq i8 %58, 32
%60 = add nuw i64 %56, 1
br i1 %59, label %55, label %61
61: ; preds = %55
%62 = and i64 %56, 4294967295
%63 = getelementptr inbounds i8, i8* %0, i64 %62
br label %64
64: ; preds = %61, %68
%65 = phi i64 [ %62, %61 ], [ %69, %68 ]
%66 = getelementptr inbounds i8, i8* %0, i64 %65
%67 = load i8, i8* %66
switch i8 %67, label %68 [
i8 0, label %70
i8 44, label %70
]
68: ; preds = %64
%69 = add nuw i64 %65, 1
br label %64
70: ; preds = %64, %64
%71 = and i64 %65, 4294967295
%72 = getelementptr inbounds i8, i8* %0, i64 %71
store i8 0, i8* %72
%73 = load i8, i8* %63
switch i8 %73, label %180 [
i8 112, label %74
i8 80, label %74
]
74: ; preds = %70, %70
%75 = getelementptr inbounds i8, i8* %63, i64 1
%76 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %75)
store i32 %76, i32* %8
br label %180
77: ; preds = %36, %39, %42, %27, %30, %33, %18, %21, %24, %9, %12, %15
%78 = phi i32 [ 5, %15 ], [ 5, %12 ], [ 5, %9 ], [ 4, %24 ], [ 4, %21 ], [ 4, %18 ], [ 1, %33 ], [ 1, %30 ], [ 1, %27 ], [ 2, %42 ], [ 2, %39 ], [ 2, %36 ]
%79 = phi i1 [ true, %15 ], [ true, %12 ], [ true, %9 ], [ true, %24 ], [ true, %21 ], [ true, %18 ], [ false, %33 ], [ false, %30 ], [ false, %27 ], [ false, %42 ], [ false, %39 ], [ false, %36 ]
%80 = phi i64 [ 7, %15 ], [ 7, %12 ], [ 7, %9 ], [ 6, %24 ], [ 6, %21 ], [ 6, %18 ], [ 3, %33 ], [ 3, %30 ], [ 3, %27 ], [ 3, %42 ], [ 3, %39 ], [ 3, %36 ]
store i32 %78, i32* %1
br label %81
81: ; preds = %81, %77
%82 = phi i64 [ %86, %81 ], [ %80, %77 ]
%83 = getelementptr inbounds i8, i8* %0, i64 %82
%84 = load i8, i8* %83
%85 = icmp eq i8 %84, 32
%86 = add nuw i64 %82, 1
br i1 %85, label %81, label %87
87: ; preds = %81
%88 = and i64 %82, 4294967295
%89 = getelementptr inbounds i8, i8* %0, i64 %88
br i1 %79, label %90, label %100
90: ; preds = %87, %94
%91 = phi i64 [ %95, %94 ], [ %88, %87 ]
%92 = getelementptr inbounds i8, i8* %0, i64 %91
%93 = load i8, i8* %92
switch i8 %93, label %94 [
i8 0, label %96
i8 44, label %96
]
94: ; preds = %90
%95 = add nuw i64 %91, 1
br label %90
96: ; preds = %90, %90
%97 = and i64 %91, 4294967295
%98 = getelementptr inbounds i8, i8* %0, i64 %97
store i8 0, i8* %98
%99 = tail call i8* @strcpy(i8* %4, i8* %89)
br label %123
100: ; preds = %87, %104
%101 = phi i64 [ %105, %104 ], [ %88, %87 ]
%102 = getelementptr inbounds i8, i8* %0, i64 %101
%103 = load i8, i8* %102
switch i8 %103, label %104 [
i8 0, label %180
i8 44, label %106
]
104: ; preds = %100
%105 = add nuw i64 %101, 1
br label %100
106: ; preds = %100
%107 = and i64 %101, 4294967295
%108 = getelementptr inbounds i8, i8* %0, i64 %107
%109 = add i64 %101, 1
store i8 0, i8* %108
%110 = tail call i8* @strncpy(i8* %2, i8* %89, i64 80)
%111 = and i64 %109, 4294967295
br label %112
112: ; preds = %116, %106
%113 = phi i64 [ %117, %116 ], [ %111, %106 ]
%114 = getelementptr inbounds i8, i8* %0, i64 %113
%115 = load i8, i8* %114
switch i8 %115, label %116 [
i8 0, label %118
i8 44, label %118
]
116: ; preds = %112
%117 = add nuw i64 %113, 1
br label %112
118: ; preds = %112, %112
%119 = and i64 %113, 4294967295
%120 = getelementptr inbounds i8, i8* %0, i64 %119
store i8 0, i8* %120
%121 = getelementptr inbounds i8, i8* %0, i64 %111
%122 = tail call i8* @strncpy(i8* %3, i8* dereferenceable(1) %121, i64 20)
br label %123
123: ; preds = %118, %96
%124 = phi i64 [ %91, %96 ], [ %113, %118 ]
%125 = phi i8 [ %93, %96 ], [ %115, %118 ]
%126 = icmp eq i8 %125, 0
br i1 %126, label %180, label %127
127: ; preds = %123, %178
%128 = phi i64 [ %133, %178 ], [ %124, %123 ]
%129 = shl i64 %128, 32
%130 = add i64 %129, 4294967296
%131 = ashr exact i64 %130, 32
br label %132
132: ; preds = %127, %136
%133 = phi i64 [ %131, %127 ], [ %137, %136 ]
%134 = getelementptr inbounds i8, i8* %0, i64 %133
%135 = load i8, i8* %134
switch i8 %135, label %136 [
i8 0, label %138
i8 44, label %138
i8 32, label %138
]
136: ; preds = %132
%137 = add i64 %133, 1
br label %132
138: ; preds = %132, %132, %132
%139 = getelementptr inbounds i8, i8* %0, i64 %133
store i8 0, i8* %139
%140 = getelementptr inbounds i8, i8* %0, i64 %131
%141 = load i8, i8* %140
switch i8 %141, label %180 [
i8 108, label %142
i8 76, label %142
i8 98, label %159
i8 66, label %159
i8 109, label %166
i8 77, label %166
i8 112, label %172
i8 80, label %172
]
142: ; preds = %138, %138
%143 = shl i64 %128, 32
%144 = add i64 %143, 8589934592
%145 = ashr exact i64 %144, 32
%146 = getelementptr inbounds i8, i8* %0, i64 %145
%147 = load i8, i8* %146
switch i8 %147, label %180 [
i8 105, label %148
i8 73, label %148
i8 101, label %149
i8 69, label %149
i8 98, label %150
i8 66, label %150
i8 49, label %151
i8 50, label %152
i8 51, label %153
i8 52, label %154
i8 53, label %155
i8 54, label %156
i8 55, label %157
i8 56, label %158
]
148: ; preds = %142, %142
store i32 1, i32* %7
br label %178
149: ; preds = %142, %142
store i32 2, i32* %7
br label %178
150: ; preds = %142, %142
store i32 3, i32* %7
br label %178
151: ; preds = %142
store i32 4, i32* %7
br label %178
152: ; preds = %142
store i32 5, i32* %7
br label %178
153: ; preds = %142
store i32 6, i32* %7
br label %178
154: ; preds = %142
store i32 7, i32* %7
br label %178
155: ; preds = %142
store i32 8, i32* %7
br label %178
156: ; preds = %142
store i32 9, i32* %7
br label %178
157: ; preds = %142
store i32 10, i32* %7
br label %178
158: ; preds = %142
store i32 11, i32* %7
br label %178
159: ; preds = %138, %138
%160 = shl i64 %128, 32
%161 = add i64 %160, 8589934592
%162 = ashr exact i64 %161, 32
%163 = getelementptr inbounds i8, i8* %0, i64 %162
%164 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %163)
store i32 %164, i32* %6
%165 = icmp sgt i32 %164, 255
br i1 %165, label %180, label %178
166: ; preds = %138, %138
%167 = shl i64 %128, 32
%168 = add i64 %167, 8589934592
%169 = ashr exact i64 %168, 32
%170 = getelementptr inbounds i8, i8* %0, i64 %169
%171 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %170)
store i32 %171, i32* %5
br label %178
172: ; preds = %138, %138
%173 = shl i64 %128, 32
%174 = add i64 %173, 8589934592
%175 = ashr exact i64 %174, 32
%176 = getelementptr inbounds i8, i8* %0, i64 %175
%177 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %176)
store i32 %177, i32* %8
br label %178
178: ; preds = %159, %172, %166, %148, %150, %152, %154, %156, %158, %157, %155, %153, %151, %149
%179 = icmp eq i8 %135, 0
br i1 %179, label %180, label %127
180: ; preds = %100, %142, %159, %138, %178, %123, %51, %74, %70
%181 = phi i32 [ 0, %70 ], [ 0, %74 ], [ 37, %51 ], [ 0, %123 ], [ 37, %142 ], [ 37, %159 ], [ 37, %138 ], [ 0, %178 ], [ 37, %100 ]
ret i32 %181
}