int iniparser_get_str2int(char *saddr, int value[]) {
  char *src;
  char off, ch;
  unsigned int tmp_value = 0;
  int data_count, i;
  char tmp_str[128];
  int sign = 1;
  data_count = 2;
  src = saddr;
  off = 0;
  if (!strncmp(src, "port:", 5)) {
    if ((src[5] == 'P') || (src[5] == 'p')) {
      off = 3;
      src += 6;
    }
  } else if (!strncmp(src, "string:", 7)) {
    off = 0;
    src += 7;
  } else if (src[0] == '"') {
    off = 5;
    src += 1;
  } else if ((src[0] == '0') && ((src[1] == 'x') || (src[1] == 'X'))) {
    src += 2;
    off = 2;
  } else if ((src[0] >= '0') && (src[0] <= '9')) {
    off = 1;
  } else if (((src[1] >= '0') && (src[1] <= '9')) && (src[0] == '-')) {
    src++;
    off = 1;
    sign = -1;
  } else if (src[0] == '\0') {
    src++;
    off = 4;
  }
  if (off == 0) {
    data_count = 0;
    while (src[data_count] != '\0') {
      data_count++;
      if (data_count > 127) {
        break;
      }
    }
    if (data_count & 0x03) {
      data_count = (data_count & (~0x03)) + 4;
    } else {
      data_count = data_count + 4;
    }
    value[0] = data_count >> 2;
    if (saddr != src) {
      value[1] = 0;
    } else {
      value[1] = 1;
    }
    return (3);
  } else if (off == 5) {
    data_count = 0;
    while (src[data_count] != '"') {
      data_count++;
      if (data_count > 127) {
        break;
      }
    }
    src[data_count] = '\0';
    if (data_count & 0x03) {
      data_count = (data_count & (~0x03)) + 4;
    } else {
      data_count = data_count + 4;
    }
    value[0] = data_count >> 2;
    value[1] = 5;
    return (3);
  } else if (off == 1) {
    while (*src != '\0') {
      if ((*src >= '0') && (*src <= '9')) {
        tmp_value = tmp_value * 10 + (*src - '0');
        src++;
      } else {
        return -1;
      }
    }
    value[0] = tmp_value * sign;
    return (2);
  } else if (off == 2) {
    while (*src != '\0') {
      if ((*src >= '0') && (*src <= '9')) {
        tmp_value = tmp_value * 16 + (*src - '0');
        src++;
      } else if ((*src >= 'A') && (*src <= 'F')) {
        tmp_value = tmp_value * 16 + (*src - 'A' + 10);
        src++;
      } else if ((*src >= 'a') && (*src <= 'f')) {
        tmp_value = tmp_value * 16 + (*src - 'a' + 10);
        src++;
      } else {
        return -1;
      }
    }
    value[0] = tmp_value;
    return (1);
  } else if (off == 3) {
    int tmp_flag = 0;
    ch = *src++;
    if ((ch == 'o') || (ch == 'O')) {
      ch = src[0];
      if ((ch == 'w') || (ch == 'W')) {
        ch = src[1];
        if ((ch == 'e') || (ch == 'E')) {
          ch = src[2];
          if ((ch == 'r') || (ch == 'R')) {
            value[0] = 0xffff;
            src += 3;
            tmp_flag = 1;
          }
        }
      }
    }
    if (!tmp_flag) {
      if ((ch >= 'A') && (ch <= 'Z')) {
        value[0] = ch - 'A' + 1;
      } else if ((ch >= 'a') && (ch <= 'z')) {
        value[0] = ch - 'a' + 1;
      } else {
        return -1;
      }
    }
    ch = *src++;
    tmp_value = 0;
    while (ch != '<') {
      if ((ch >= '0') && (ch <= '9')) {
        tmp_value = tmp_value * 10 + (ch - '0');
        ch = *src++;
      } else if (ch == 0) {
        src--;
        break;
      } else {
        return -1;
      }
    }
    value[1] = tmp_value;
    ch = *src++;
    while (ch != '\0') {
      i = 0;
      memset(tmp_str, 0, sizeof(tmp_str));
      while (ch != '>') {
        if ((ch >= 'A') && (ch <= 'Z')) {
          ch += 'a' - 'A';
        }
        tmp_str[i++] = ch;
        ch = *src++;
      }
      tmp_str[i] = '\0';
      if (!strcmp(tmp_str, "default")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "none")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "null")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "-1")) {
        value[data_count] = -1;
      } else {
        i = 0;
        ch = tmp_str[i++];
        tmp_value = 0;
        if (ch == '-') {
          sign = -1;
          ch = tmp_str[i++];
        }
        while (ch != '\0') {
          if ((ch >= '0') && (ch <= '9')) {
            tmp_value = tmp_value * 10 + (ch - '0');
          } else {
            return -1;
          }
          ch = tmp_str[i++];
        }
        value[data_count] = tmp_value * sign;
      }
      data_count++;
      ch = *src++;
      if (ch == '<') {
        ch = *src++;
      } else if (ch == '\0') {
        ;
      } else {
        return -1;
      }
    }
    switch (data_count) {
    case 3:
      value[3] = -1;
    case 4:
      value[4] = -1;
    case 5:
      value[5] = -1;
    case 6:
      break;
    default:
      return -1;
    }
    return (5);
  } else if (off == 4) {
    value[0] = 4 >> 2;
    return (6);
  } else {
    return -1;
  }
}


x86 assembly (clang, -O0):
<iniparser_get_str2int>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x1,-0xb4(%rbp)
movl   $0x2,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
movb   $0x0,-0x21(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xe9e(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    11bc <iniparser_get_str2int+0x8c>
mov    -0x20(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x50,%eax
je     11a7 <iniparser_get_str2int+0x77>
mov    -0x20(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x70,%eax
jne    11b7 <iniparser_get_str2int+0x87>
movb   $0x3,-0x21(%rbp)
mov    -0x20(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x20(%rbp)
jmp    1313 <iniparser_get_str2int+0x1e3>
mov    -0x20(%rbp),%rdi
lea    0xe4f(%rip),%rsi
mov    $0x7,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    11ef <iniparser_get_str2int+0xbf>
movb   $0x0,-0x21(%rbp)
mov    -0x20(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x20(%rbp)
jmp    130e <iniparser_get_str2int+0x1de>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1214 <iniparser_get_str2int+0xe4>
movb   $0x5,-0x21(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1309 <iniparser_get_str2int+0x1d9>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jne    125b <iniparser_get_str2int+0x12b>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x78,%eax
je     1246 <iniparser_get_str2int+0x116>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x58,%eax
jne    125b <iniparser_get_str2int+0x12b>
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
movb   $0x2,-0x21(%rbp)
jmp    1304 <iniparser_get_str2int+0x1d4>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     1284 <iniparser_get_str2int+0x154>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1284 <iniparser_get_str2int+0x154>
movb   $0x1,-0x21(%rbp)
jmp    12ff <iniparser_get_str2int+0x1cf>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x30,%eax
jl     12d5 <iniparser_get_str2int+0x1a5>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x39,%eax
jg     12d5 <iniparser_get_str2int+0x1a5>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    12d5 <iniparser_get_str2int+0x1a5>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
movb   $0x1,-0x21(%rbp)
movl   $0xffffffff,-0xb4(%rbp)
ff ff ff
jmp    12fa <iniparser_get_str2int+0x1ca>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    12f5 <iniparser_get_str2int+0x1c5>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
movb   $0x4,-0x21(%rbp)
jmp    12fa <iniparser_get_str2int+0x1ca>
jmp    12ff <iniparser_get_str2int+0x1cf>
jmp    1304 <iniparser_get_str2int+0x1d4>
jmp    1309 <iniparser_get_str2int+0x1d9>
jmp    130e <iniparser_get_str2int+0x1de>
jmp    1313 <iniparser_get_str2int+0x1e3>
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jne    13c3 <iniparser_get_str2int+0x293>
movl   $0x0,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1359 <iniparser_get_str2int+0x229>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x7f,-0x2c(%rbp)
jle    1354 <iniparser_get_str2int+0x224>
jmp    1359 <iniparser_get_str2int+0x229>
jmp    1327 <iniparser_get_str2int+0x1f7>
mov    -0x2c(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
je     1379 <iniparser_get_str2int+0x249>
mov    -0x2c(%rbp),%eax
and    $0xfffffffc,%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    1382 <iniparser_get_str2int+0x252>
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%ecx
sar    $0x2,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     13ac <iniparser_get_str2int+0x27c>
mov    -0x18(%rbp),%rax
movl   $0x0,0x4(%rax)
jmp    13b7 <iniparser_get_str2int+0x287>
mov    -0x18(%rbp),%rax
movl   $0x1,0x4(%rax)
movl   $0x3,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movsbl -0x21(%rbp),%eax
cmp    $0x5,%eax
jne    1461 <iniparser_get_str2int+0x331>
movl   $0x0,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
je     1409 <iniparser_get_str2int+0x2d9>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x7f,-0x2c(%rbp)
jle    1404 <iniparser_get_str2int+0x2d4>
jmp    1409 <iniparser_get_str2int+0x2d9>
jmp    13d7 <iniparser_get_str2int+0x2a7>
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
je     1435 <iniparser_get_str2int+0x305>
mov    -0x2c(%rbp),%eax
and    $0xfffffffc,%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    143e <iniparser_get_str2int+0x30e>
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%ecx
sar    $0x2,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5,0x4(%rax)
movl   $0x3,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movsbl -0x21(%rbp),%eax
cmp    $0x1,%eax
jne    14f4 <iniparser_get_str2int+0x3c4>
jmp    1473 <iniparser_get_str2int+0x343>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     14d8 <iniparser_get_str2int+0x3a8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     14c7 <iniparser_get_str2int+0x397>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     14c7 <iniparser_get_str2int+0x397>
imul   $0xa,-0x28(%rbp),%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    14d3 <iniparser_get_str2int+0x3a3>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
jmp    1473 <iniparser_get_str2int+0x343>
mov    -0x28(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movsbl -0x21(%rbp),%eax
cmp    $0x2,%eax
jne    161e <iniparser_get_str2int+0x4ee>
jmp    1506 <iniparser_get_str2int+0x3d6>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1609 <iniparser_get_str2int+0x4d9>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     155c <iniparser_get_str2int+0x42c>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     155c <iniparser_get_str2int+0x42c>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1604 <iniparser_get_str2int+0x4d4>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x41,%eax
jl     15a5 <iniparser_get_str2int+0x475>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x46,%eax
jg     15a5 <iniparser_get_str2int+0x475>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x41,%ecx
add    $0xa,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    15ff <iniparser_get_str2int+0x4cf>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jl     15ee <iniparser_get_str2int+0x4be>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x66,%eax
jg     15ee <iniparser_get_str2int+0x4be>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x61,%ecx
add    $0xa,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    15fa <iniparser_get_str2int+0x4ca>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
jmp    15ff <iniparser_get_str2int+0x4cf>
jmp    1604 <iniparser_get_str2int+0x4d4>
jmp    1506 <iniparser_get_str2int+0x3d6>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movsbl -0x21(%rbp),%eax
cmp    $0x3,%eax
jne    1b42 <iniparser_get_str2int+0xa12>
movl   $0x0,-0xb8(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x6f,%eax
je     1663 <iniparser_get_str2int+0x533>
movsbl -0x22(%rbp),%eax
cmp    $0x4f,%eax
jne    16fd <iniparser_get_str2int+0x5cd>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x77,%eax
je     1686 <iniparser_get_str2int+0x556>
movsbl -0x22(%rbp),%eax
cmp    $0x57,%eax
jne    16f8 <iniparser_get_str2int+0x5c8>
mov    -0x20(%rbp),%rax
mov    0x1(%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x65,%eax
je     16aa <iniparser_get_str2int+0x57a>
movsbl -0x22(%rbp),%eax
cmp    $0x45,%eax
jne    16f3 <iniparser_get_str2int+0x5c3>
mov    -0x20(%rbp),%rax
mov    0x2(%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x72,%eax
je     16ce <iniparser_get_str2int+0x59e>
movsbl -0x22(%rbp),%eax
cmp    $0x52,%eax
jne    16ee <iniparser_get_str2int+0x5be>
mov    -0x18(%rbp),%rax
movl   $0xffff,(%rax)
mov    -0x20(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x20(%rbp)
movl   $0x1,-0xb8(%rbp)
jmp    16f3 <iniparser_get_str2int+0x5c3>
jmp    16f8 <iniparser_get_str2int+0x5c8>
jmp    16fd <iniparser_get_str2int+0x5cd>
cmpl   $0x0,-0xb8(%rbp)
jne    177e <iniparser_get_str2int+0x64e>
movsbl -0x22(%rbp),%eax
cmp    $0x41,%eax
jl     1739 <iniparser_get_str2int+0x609>
movsbl -0x22(%rbp),%eax
cmp    $0x5a,%eax
jg     1739 <iniparser_get_str2int+0x609>
movsbl -0x22(%rbp),%ecx
sub    $0x41,%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1779 <iniparser_get_str2int+0x649>
movsbl -0x22(%rbp),%eax
cmp    $0x61,%eax
jl     1768 <iniparser_get_str2int+0x638>
movsbl -0x22(%rbp),%eax
cmp    $0x7a,%eax
jg     1768 <iniparser_get_str2int+0x638>
movsbl -0x22(%rbp),%ecx
sub    $0x61,%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1774 <iniparser_get_str2int+0x644>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
jmp    1779 <iniparser_get_str2int+0x649>
jmp    177e <iniparser_get_str2int+0x64e>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
movl   $0x0,-0x28(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x3c,%eax
je     1818 <iniparser_get_str2int+0x6e8>
movsbl -0x22(%rbp),%eax
cmp    $0x30,%eax
jl     17e9 <iniparser_get_str2int+0x6b9>
movsbl -0x22(%rbp),%eax
cmp    $0x39,%eax
jg     17e9 <iniparser_get_str2int+0x6b9>
imul   $0xa,-0x28(%rbp),%eax
movsbl -0x22(%rbp),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
jmp    1813 <iniparser_get_str2int+0x6e3>
movsbl -0x22(%rbp),%eax
cmp    $0x0,%eax
jne    1807 <iniparser_get_str2int+0x6d7>
mov    -0x20(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
jmp    1818 <iniparser_get_str2int+0x6e8>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
jmp    1799 <iniparser_get_str2int+0x669>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x0,%eax
je     1ad5 <iniparser_get_str2int+0x9a5>
movl   $0x0,-0x30(%rbp)
lea    -0xb0(%rbp),%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1040 <memset@plt>
movsbl -0x22(%rbp),%eax
cmp    $0x3e,%eax
je     18be <iniparser_get_str2int+0x78e>
movsbl -0x22(%rbp),%eax
cmp    $0x41,%eax
jl     188e <iniparser_get_str2int+0x75e>
movsbl -0x22(%rbp),%eax
cmp    $0x5a,%eax
jg     188e <iniparser_get_str2int+0x75e>
movsbl -0x22(%rbp),%eax
add    $0x20,%eax
mov    %al,-0x22(%rbp)
mov    -0x22(%rbp),%cl
mov    -0x30(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x30(%rbp)
cltq
mov    %cl,-0xb0(%rbp,%rax,1)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
jmp    185d <iniparser_get_str2int+0x72d>
movslq -0x30(%rbp),%rax
movb   $0x0,-0xb0(%rbp,%rax,1)
lea    -0xb0(%rbp),%rdi
lea    0x746(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    18fa <iniparser_get_str2int+0x7ca>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    1a6a <iniparser_get_str2int+0x93a>
lea    -0xb0(%rbp),%rdi
lea    0x71e(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    192a <iniparser_get_str2int+0x7fa>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    1a65 <iniparser_get_str2int+0x935>
lea    -0xb0(%rbp),%rdi
lea    0x6f3(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    195a <iniparser_get_str2int+0x82a>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    1a60 <iniparser_get_str2int+0x930>
lea    -0xb0(%rbp),%rdi
lea    0x6c8(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    198a <iniparser_get_str2int+0x85a>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    1a5b <iniparser_get_str2int+0x92b>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xb0(%rbp,%rax,1),%al
mov    %al,-0x22(%rbp)
movl   $0x0,-0x28(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x2d,%eax
jne    19dd <iniparser_get_str2int+0x8ad>
movl   $0xffffffff,-0xb4(%rbp)
ff ff ff
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xb0(%rbp,%rax,1),%al
mov    %al,-0x22(%rbp)
jmp    19e2 <iniparser_get_str2int+0x8b2>
movsbl -0x22(%rbp),%eax
cmp    $0x0,%eax
je     1a46 <iniparser_get_str2int+0x916>
movsbl -0x22(%rbp),%eax
cmp    $0x30,%eax
jl     1a1e <iniparser_get_str2int+0x8ee>
movsbl -0x22(%rbp),%eax
cmp    $0x39,%eax
jg     1a1e <iniparser_get_str2int+0x8ee>
imul   $0xa,-0x28(%rbp),%eax
movsbl -0x22(%rbp),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
jmp    1a2a <iniparser_get_str2int+0x8fa>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xb0(%rbp,%rax,1),%al
mov    %al,-0x22(%rbp)
jmp    19e2 <iniparser_get_str2int+0x8b2>
mov    -0x28(%rbp),%edx
imul   -0xb4(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1a60 <iniparser_get_str2int+0x930>
jmp    1a65 <iniparser_get_str2int+0x935>
jmp    1a6a <iniparser_get_str2int+0x93a>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
cmp    $0x3c,%eax
jne    1aad <iniparser_get_str2int+0x97d>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x22(%rbp)
jmp    1ad0 <iniparser_get_str2int+0x9a0>
movsbl -0x22(%rbp),%eax
cmp    $0x0,%eax
jne    1abf <iniparser_get_str2int+0x98f>
jmp    1acb <iniparser_get_str2int+0x99b>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
jmp    1ad0 <iniparser_get_str2int+0x9a0>
jmp    1836 <iniparser_get_str2int+0x706>
mov    -0x2c(%rbp),%eax
add    $0xfffffffd,%eax
mov    %eax,%ecx
mov    %rcx,-0xc0(%rbp)
sub    $0x3,%eax
ja     1b2a <iniparser_get_str2int+0x9fa>
mov    -0xc0(%rbp),%rax
lea    0x505(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x18(%rbp),%rax
movl   $0xffffffff,0xc(%rax)
mov    -0x18(%rbp),%rax
movl   $0xffffffff,0x10(%rax)
mov    -0x18(%rbp),%rax
movl   $0xffffffff,0x14(%rax)
jmp    1b36 <iniparser_get_str2int+0xa06>
movl   $0xffffffff,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movl   $0x5,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movsbl -0x21(%rbp),%eax
cmp    $0x4,%eax
jne    1b65 <iniparser_get_str2int+0xa35>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
movl   $0x6,-0x4(%rbp)
jmp    1b6c <iniparser_get_str2int+0xa3c>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<iniparser_get_str2int>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x80,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
lea    0xee4(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     11d8 <iniparser_get_str2int+0xc8>
lea    0xed1(%rip),%rsi
mov    $0x7,%edx
mov    %rbx,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
je     1230 <iniparser_get_str2int+0x120>
mov    (%rbx),%dl
cmp    $0x22,%dl
je     1291 <iniparser_get_str2int+0x181>
cmp    $0x30,%dl
jne    12e2 <iniparser_get_str2int+0x1d2>
mov    0x1(%rbx),%al
or     $0x20,%al
cmp    $0x78,%al
jne    1542 <iniparser_get_str2int+0x432>
mov    0x2(%rbx),%cl
test   %cl,%cl
je     15c2 <iniparser_get_str2int+0x4b2>
add    $0x3,%rbx
xor    %eax,%eax
jmp    11a9 <iniparser_get_str2int+0x99>
xchg   %ax,%ax
movsbl %cl,%ecx
shl    $0x4,%eax
add    %edx,%eax
add    %ecx,%eax
movzbl (%rbx),%ecx
add    $0x1,%rbx
test   %cl,%cl
je     15c4 <iniparser_get_str2int+0x4b4>
lea    -0x30(%rcx),%esi
mov    $0xffffffd0,%edx
cmp    $0xa,%sil
jb     1190 <iniparser_get_str2int+0x80>
lea    -0x41(%rcx),%esi
mov    $0xffffffc9,%edx
cmp    $0x6,%sil
jb     1190 <iniparser_get_str2int+0x80>
lea    -0x61(%rcx),%esi
mov    $0xffffffa9,%edx
cmp    $0x5,%sil
jbe    1190 <iniparser_get_str2int+0x80>
jmp    15bb <iniparser_get_str2int+0x4ab>
mov    0x5(%rbx),%cl
or     $0x20,%cl
mov    %rbx,%rax
cmp    $0x70,%cl
jne    1234 <iniparser_get_str2int+0x124>
lea    0x7(%rbx),%rcx
mov    0x6(%rbx),%dl
mov    %edx,%eax
and    $0xdf,%al
cmp    $0x4f,%al
jne    1282 <iniparser_get_str2int+0x172>
mov    (%rcx),%dl
mov    %edx,%eax
and    $0xdf,%al
cmp    $0x57,%al
jne    1282 <iniparser_get_str2int+0x172>
mov    0x8(%rbx),%dl
mov    %edx,%eax
and    $0xdf,%al
cmp    $0x45,%al
jne    1282 <iniparser_get_str2int+0x172>
mov    0x9(%rbx),%dl
mov    %edx,%eax
and    $0xdf,%al
cmp    $0x52,%al
jne    1282 <iniparser_get_str2int+0x172>
movl   $0xffff,(%r14)
add    $0xa,%rbx
mov    %rbx,%rcx
jmp    1310 <iniparser_get_str2int+0x200>
lea    0x7(%rbx),%rax
mov    $0x3,%ecx
nopl   0x0(%rax)
cmpb   $0x0,-0x3(%rax,%rcx,1)
je     14e7 <iniparser_get_str2int+0x3d7>
cmpb   $0x0,-0x2(%rax,%rcx,1)
je     14ed <iniparser_get_str2int+0x3dd>
cmpb   $0x0,-0x1(%rax,%rcx,1)
je     14f3 <iniparser_get_str2int+0x3e3>
cmpb   $0x0,(%rax,%rcx,1)
je     14f7 <iniparser_get_str2int+0x3e7>
add    $0x4,%rcx
cmp    $0x83,%rcx
jne    1240 <iniparser_get_str2int+0x130>
mov    $0x21,%ecx
jmp    14fd <iniparser_get_str2int+0x3ed>
movsbl %dl,%esi
lea    -0x41(%rsi),%eax
cmp    $0x19,%al
ja     12f9 <iniparser_get_str2int+0x1e9>
add    $0xffffffc0,%esi
jmp    130d <iniparser_get_str2int+0x1fd>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpb   $0x22,0x1(%rbx,%rax,1)
je     15f7 <iniparser_get_str2int+0x4e7>
cmpb   $0x22,0x2(%rbx,%rax,1)
je     15e7 <iniparser_get_str2int+0x4d7>
cmpb   $0x22,0x3(%rbx,%rax,1)
je     15ed <iniparser_get_str2int+0x4dd>
cmpb   $0x22,0x4(%rbx,%rax,1)
je     15f3 <iniparser_get_str2int+0x4e3>
add    $0x4,%rax
cmp    $0x80,%rax
jne    12a0 <iniparser_get_str2int+0x190>
mov    $0x80,%eax
jmp    15f7 <iniparser_get_str2int+0x4e7>
lea    -0x30(%rdx),%eax
mov    $0x1,%ecx
cmp    $0xa,%al
jae    151f <iniparser_get_str2int+0x40f>
mov    %edx,%eax
jmp    1549 <iniparser_get_str2int+0x439>
add    $0x9f,%dl
mov    $0xffffffff,%eax
cmp    $0x19,%dl
ja     1614 <iniparser_get_str2int+0x504>
add    $0xffffffa0,%esi
mov    %esi,(%r14)
mov    (%rcx),%sil
cmp    $0x3c,%sil
jne    1321 <iniparser_get_str2int+0x211>
add    $0x1,%rcx
xor    %edx,%edx
jmp    1364 <iniparser_get_str2int+0x254>
lea    -0x30(%rsi),%eax
xor    %edx,%edx
cmp    $0x9,%al
ja     1356 <iniparser_get_str2int+0x246>
add    $0x2,%rcx
xor    %edx,%edx
movzbl %sil,%eax
lea    (%rdx,%rdx,4),%edx
lea    (%rax,%rdx,2),%edx
add    $0xffffffd0,%edx
movzbl -0x1(%rcx),%esi
cmp    $0x3c,%sil
je     1364 <iniparser_get_str2int+0x254>
lea    -0x30(%rsi),%eax
add    $0x1,%rcx
cmp    $0x9,%al
jbe    1330 <iniparser_get_str2int+0x220>
add    $0xfffffffffffffffe,%rcx
mov    $0xffffffff,%eax
test   %sil,%sil
jne    1614 <iniparser_get_str2int+0x504>
mov    %edx,0x4(%r14)
mov    (%rcx),%bl
test   %bl,%bl
je     15bb <iniparser_get_str2int+0x4ab>
add    $0x1,%rcx
mov    $0x1,%r12d
mov    $0x2,%eax
xorps  %xmm0,%xmm0
movabs $0x746c7561666564,%rsi
mov    $0x656e6f6e,%r15d
mov    $0x6c6c756e,%r11d
mov    $0x312d,%r8d
mov    $0xffffffff,%r9d
mov    %rsp,%r10
nopl   0x0(%rax)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,(%rsp)
xor    %edi,%edi
cmp    $0x3e,%bl
je     1406 <iniparser_get_str2int+0x2f6>
xchg   %ax,%ax
lea    -0x41(%rbx),%ebp
lea    0x20(%rbx),%edx
cmp    $0x1a,%bpl
movzbl %bl,%ebx
movzbl %dl,%edx
cmovae %ebx,%edx
mov    %dl,(%rsp,%rdi,1)
movzbl (%rcx,%rdi,1),%ebx
add    $0x1,%rdi
cmp    $0x3e,%bl
jne    13e0 <iniparser_get_str2int+0x2d0>
add    %rdi,%rcx
mov    %edi,%edx
movb   $0x0,(%rsp,%rdx,1)
mov    (%rsp),%rdi
mov    $0xffffffff,%ebx
cmp    %rsi,%rdi
je     14c0 <iniparser_get_str2int+0x3b0>
mov    (%rsp),%edx
xor    %r15d,%edx
movzbl 0x4(%rsp),%ebp
or     %edx,%ebp
je     14c0 <iniparser_get_str2int+0x3b0>
mov    (%rsp),%edx
xor    %r11d,%edx
movzbl 0x4(%rsp),%ebp
or     %edx,%ebp
je     14c0 <iniparser_get_str2int+0x3b0>
mov    (%rsp),%edx
xor    %r8d,%edx
movzbl 0x2(%rsp),%ebp
or     %dx,%bp
je     14c0 <iniparser_get_str2int+0x3b0>
mov    %rdi,%rdx
shr    $0x8,%rdx
cmp    $0x2d,%dil
movzbl %dl,%edx
movzbl %dil,%ebp
cmove  %edx,%ebp
cmove  %r9d,%r12d
test   %bpl,%bpl
je     14b7 <iniparser_get_str2int+0x3a7>
xor    %edx,%edx
cmp    $0x2d,%dil
sete   %dl
lea    (%rdx,%r10,1),%rdi
add    $0x1,%rdi
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x30(%rbp),%edx
cmp    $0x9,%dl
ja     15bb <iniparser_get_str2int+0x4ab>
movzbl %bpl,%edx
lea    (%rbx,%rbx,4),%ebx
lea    (%rdx,%rbx,2),%ebx
add    $0xffffffd0,%ebx
movzbl (%rdi),%ebp
add    $0x1,%rdi
test   %bpl,%bpl
jne    1490 <iniparser_get_str2int+0x380>
jmp    14b9 <iniparser_get_str2int+0x3a9>
xor    %ebx,%ebx
imul   %r12d,%ebx
nopl   (%rax)
mov    %ebx,(%r14,%rax,4)
add    $0x1,%rax
mov    (%rcx),%bl
cmp    $0x3c,%bl
jne    1580 <iniparser_get_str2int+0x470>
mov    0x1(%rcx),%bl
add    $0x2,%rcx
test   %bl,%bl
jne    13b0 <iniparser_get_str2int+0x2a0>
jmp    1584 <iniparser_get_str2int+0x474>
add    $0xfffffffffffffffd,%rcx
jmp    14f7 <iniparser_get_str2int+0x3e7>
add    $0xfffffffffffffffe,%rcx
jmp    14f7 <iniparser_get_str2int+0x3e7>
add    $0xffffffffffffffff,%rcx
add    $0x4,%ecx
sar    $0x2,%ecx
mov    %ecx,(%r14)
cmp    %rbx,%rax
je     1512 <iniparser_get_str2int+0x402>
movl   $0x0,0x4(%r14)
jmp    160f <iniparser_get_str2int+0x4ff>
movl   $0x1,0x4(%r14)
jmp    160f <iniparser_get_str2int+0x4ff>
mov    0x1(%rbx),%al
lea    -0x30(%rax),%ecx
cmp    $0x9,%cl
ja     15ce <iniparser_get_str2int+0x4be>
cmp    $0x2d,%dl
jne    15ce <iniparser_get_str2int+0x4be>
add    $0x1,%rbx
mov    $0xffffffff,%ecx
jmp    1549 <iniparser_get_str2int+0x439>
mov    $0x1,%ecx
mov    $0x30,%al
add    $0x1,%rbx
xor    %edx,%edx
nop
lea    -0x30(%rax),%esi
cmp    $0x9,%sil
ja     15bb <iniparser_get_str2int+0x4ab>
movzbl %al,%eax
lea    (%rdx,%rdx,4),%edx
lea    (%rax,%rdx,2),%edx
add    $0xffffffd0,%edx
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
jne    1550 <iniparser_get_str2int+0x440>
imul   %ecx,%edx
mov    %edx,(%r14)
mov    $0x2,%eax
jmp    1614 <iniparser_get_str2int+0x504>
test   %bl,%bl
jne    15bb <iniparser_get_str2int+0x4ab>
add    $0xfffffffd,%eax
cmp    $0x3,%eax
ja     15bb <iniparser_get_str2int+0x4ab>
lea    0xa6d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xffffffff,0xc(%r14)
ff
movl   $0xffffffff,0x10(%r14)
ff
movl   $0xffffffff,0x14(%r14)
ff
mov    $0x5,%eax
jmp    1614 <iniparser_get_str2int+0x504>
mov    $0xffffffff,%eax
jmp    1614 <iniparser_get_str2int+0x504>
xor    %eax,%eax
mov    %eax,(%r14)
mov    $0x1,%eax
jmp    1614 <iniparser_get_str2int+0x504>
mov    %rbx,%rax
test   %dl,%dl
jne    1234 <iniparser_get_str2int+0x124>
movl   $0x1,(%r14)
mov    $0x6,%eax
jmp    1614 <iniparser_get_str2int+0x504>
add    $0x1,%rax
jmp    15f7 <iniparser_get_str2int+0x4e7>
add    $0x2,%rax
jmp    15f7 <iniparser_get_str2int+0x4e7>
add    $0x3,%rax
cltq
movb   $0x0,0x1(%rbx,%rax,1)
add    $0x4,%eax
sar    $0x2,%eax
mov    %eax,(%r14)
movl   $0x5,0x4(%r14)
mov    $0x3,%eax
add    $0x80,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [6 x i8] c"port:\00"
@.str.1 = [8 x i8] c"string:\00"
@.str.3 = [5 x i8] c"none\00"
@.str.4 = [5 x i8] c"null\00"
@.str.5 = [3 x i8] c"-1\00"
define i32 @iniparser_get_str2int(i8* %0, i32* nocapture writeonly %1) {
%3 = alloca [128 x i8]
%4 = getelementptr inbounds [128 x i8], [128 x i8]* %3, i64 0, i64 0
%5 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i64 5)
%6 = icmp eq i32 %5, 0
br i1 %6, label %7, label %10
7: ; preds = %2
%8 = getelementptr inbounds i8, i8* %0, i64 5
%9 = load i8, i8* %8
switch i8 %9, label %32 [
i8 80, label %150
i8 112, label %150
]
10: ; preds = %2
%11 = 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)
%12 = icmp eq i32 %11, 0
br i1 %12, label %13, label %15
13: ; preds = %10
%14 = getelementptr inbounds i8, i8* %0, i64 7
br label %32
15: ; preds = %10
%16 = load i8, i8* %0
switch i8 %16, label %20 [
i8 34, label %68
i8 48, label %17
]
17: ; preds = %15
%18 = getelementptr inbounds i8, i8* %0, i64 1
%19 = load i8, i8* %18
switch i8 %19, label %103 [
i8 120, label %123
i8 88, label %123
]
20: ; preds = %15
%21 = add i8 %16, -48
%22 = icmp ult i8 %21, 10
br i1 %22, label %103, label %23
23: ; preds = %20
%24 = getelementptr inbounds i8, i8* %0, i64 1
%25 = load i8, i8* %24
%26 = add i8 %25, -48
%27 = icmp ult i8 %26, 10
%28 = icmp eq i8 %16, 45
%29 = select i1 %27, i1 %28, i1 false
br i1 %29, label %103, label %30
30: ; preds = %23
%31 = icmp eq i8 %16, 0
br i1 %31, label %303, label %32
32: ; preds = %30, %13, %7
%33 = phi i8* [ %0, %7 ], [ %0, %30 ], [ %14, %13 ]
br label %34
34: ; preds = %54, %32
%35 = phi i64 [ 0, %32 ], [ %55, %54 ]
%36 = getelementptr inbounds i8, i8* %33, i64 %35
%37 = load i8, i8* %36
%38 = icmp eq i8 %37, 0
br i1 %38, label %57, label %39
39: ; preds = %34
%40 = or i64 %35, 1
%41 = getelementptr inbounds i8, i8* %33, i64 %40
%42 = load i8, i8* %41
%43 = icmp eq i8 %42, 0
br i1 %43, label %57, label %44
44: ; preds = %39
%45 = or i64 %35, 2
%46 = getelementptr inbounds i8, i8* %33, i64 %45
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 0
br i1 %48, label %57, label %49
49: ; preds = %44
%50 = or i64 %35, 3
%51 = getelementptr inbounds i8, i8* %33, i64 %50
%52 = load i8, i8* %51
%53 = icmp eq i8 %52, 0
br i1 %53, label %57, label %54
54: ; preds = %49
%55 = add nuw nsw i64 %35, 4
%56 = icmp eq i64 %55, 128
br i1 %56, label %62, label %34
57: ; preds = %49, %44, %39, %34
%58 = phi i64 [ %35, %34 ], [ %40, %39 ], [ %45, %44 ], [ %50, %49 ]
%59 = trunc i64 %58 to i32
%60 = add i32 %59, 4
%61 = ashr i32 %60, 2
br label %62
62: ; preds = %54, %57
%63 = phi i32 [ %61, %57 ], [ 33, %54 ]
store i32 %63, i32* %1
%64 = icmp eq i8* %33, %0
%65 = getelementptr inbounds i32, i32* %1, i64 1
br i1 %64, label %67, label %66
66: ; preds = %62
store i32 0, i32* %65
br label %304
67: ; preds = %62
store i32 1, i32* %65
br label %304
68: ; preds = %15
%69 = getelementptr inbounds i8, i8* %0, i64 1
br label %70
70: ; preds = %90, %68
%71 = phi i64 [ 0, %68 ], [ %91, %90 ]
%72 = getelementptr inbounds i8, i8* %69, i64 %71
%73 = load i8, i8* %72
%74 = icmp eq i8 %73, 34
br i1 %74, label %93, label %75
75: ; preds = %70
%76 = or i64 %71, 1
%77 = getelementptr inbounds i8, i8* %69, i64 %76
%78 = load i8, i8* %77
%79 = icmp eq i8 %78, 34
br i1 %79, label %93, label %80
80: ; preds = %75
%81 = or i64 %71, 2
%82 = getelementptr inbounds i8, i8* %69, i64 %81
%83 = load i8, i8* %82
%84 = icmp eq i8 %83, 34
br i1 %84, label %93, label %85
85: ; preds = %80
%86 = or i64 %71, 3
%87 = getelementptr inbounds i8, i8* %69, i64 %86
%88 = load i8, i8* %87
%89 = icmp eq i8 %88, 34
br i1 %89, label %93, label %90
90: ; preds = %85
%91 = add nuw nsw i64 %71, 4
%92 = icmp eq i64 %91, 128
br i1 %92, label %96, label %70
93: ; preds = %85, %80, %75, %70
%94 = phi i64 [ %71, %70 ], [ %76, %75 ], [ %81, %80 ], [ %86, %85 ]
%95 = trunc i64 %94 to i32
br label %96
96: ; preds = %90, %93
%97 = phi i32 [ %95, %93 ], [ 128, %90 ]
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds i8, i8* %69, i64 %98
store i8 0, i8* %99
%100 = add i32 %97, 4
%101 = ashr i32 %100, 2
store i32 %101, i32* %1
%102 = getelementptr inbounds i32, i32* %1, i64 1
store i32 5, i32* %102
br label %304
103: ; preds = %17, %20, %23
%104 = phi i8 [ %16, %20 ], [ %25, %23 ], [ 48, %17 ]
%105 = phi i8* [ %0, %20 ], [ %24, %23 ], [ %0, %17 ]
%106 = phi i32 [ 1, %20 ], [ -1, %23 ], [ 1, %17 ]
br label %107
107: ; preds = %103, %113
%108 = phi i8 [ %119, %113 ], [ %104, %103 ]
%109 = phi i32 [ %117, %113 ], [ 0, %103 ]
%110 = phi i8* [ %118, %113 ], [ %105, %103 ]
%111 = add i8 %108, -48
%112 = icmp ult i8 %111, 10
br i1 %112, label %113, label %304
113: ; preds = %107
%114 = zext i8 %108 to i32
%115 = mul i32 %109, 10
%116 = add i32 %115, -48
%117 = add i32 %116, %114
%118 = getelementptr inbounds i8, i8* %110, i64 1
%119 = load i8, i8* %118
%120 = icmp eq i8 %119, 0
br i1 %120, label %121, label %107
121: ; preds = %113
%122 = mul i32 %117, %106
store i32 %122, i32* %1
br label %304
123: ; preds = %17, %17
%124 = getelementptr inbounds i8, i8* %0, i64 2
%125 = load i8, i8* %124
%126 = icmp eq i8 %125, 0
br i1 %126, label %148, label %127
127: ; preds = %123, %140
%128 = phi i8 [ %146, %140 ], [ %125, %123 ]
%129 = phi i32 [ %144, %140 ], [ 0, %123 ]
%130 = phi i8* [ %145, %140 ], [ %124, %123 ]
%131 = sext i8 %128 to i32
%132 = add i8 %128, -48
%133 = icmp ult i8 %132, 10
br i1 %133, label %140, label %134
134: ; preds = %127
%135 = add i8 %128, -65
%136 = icmp ult i8 %135, 6
br i1 %136, label %140, label %137
137: ; preds = %134
%138 = add i8 %128, -97
%139 = icmp ult i8 %138, 6
br i1 %139, label %140, label %304
140: ; preds = %137, %134, %127
%141 = phi i32 [ -48, %127 ], [ -55, %134 ], [ -87, %137 ]
%142 = shl i32 %129, 4
%143 = add i32 %142, %141
%144 = add i32 %143, %131
%145 = getelementptr inbounds i8, i8* %130, i64 1
%146 = load i8, i8* %145
%147 = icmp eq i8 %146, 0
br i1 %147, label %148, label %127
148: ; preds = %140, %123
%149 = phi i32 [ 0, %123 ], [ %144, %140 ]
store i32 %149, i32* %1
br label %304
150: ; preds = %7, %7
%151 = getelementptr inbounds i8, i8* %0, i64 6
%152 = getelementptr inbounds i8, i8* %0, i64 7
%153 = load i8, i8* %151
%154 = and i8 %153, -33
%155 = icmp eq i8 %154, 79
br i1 %155, label %156, label %172
156: ; preds = %150
%157 = load i8, i8* %152
%158 = and i8 %157, -33
%159 = icmp eq i8 %158, 87
br i1 %159, label %160, label %172
160: ; preds = %156
%161 = getelementptr inbounds i8, i8* %0, i64 8
%162 = load i8, i8* %161
%163 = and i8 %162, -33
%164 = icmp eq i8 %163, 69
br i1 %164, label %165, label %172
165: ; preds = %160
%166 = getelementptr inbounds i8, i8* %0, i64 9
%167 = load i8, i8* %166
%168 = and i8 %167, -33
%169 = icmp eq i8 %168, 82
br i1 %169, label %170, label %172
170: ; preds = %165
store i32 65535, i32* %1
%171 = getelementptr inbounds i8, i8* %0, i64 10
br label %184
172: ; preds = %165, %160, %156, %150
%173 = phi i8 [ %153, %150 ], [ %157, %156 ], [ %162, %160 ], [ %167, %165 ]
%174 = sext i8 %173 to i32
%175 = add i8 %173, -65
%176 = icmp ult i8 %175, 26
br i1 %176, label %177, label %179
177: ; preds = %172
%178 = add nsw i32 %174, -64
store i32 %178, i32* %1
br label %184
179: ; preds = %172
%180 = add i8 %173, -97
%181 = icmp ult i8 %180, 26
br i1 %181, label %182, label %304
182: ; preds = %179
%183 = add nsw i32 %174, -96
store i32 %183, i32* %1
br label %184
184: ; preds = %170, %177, %182
%185 = phi i8* [ %152, %177 ], [ %152, %182 ], [ %171, %170 ]
%186 = getelementptr inbounds i8, i8* %185, i64 1
%187 = load i8, i8* %185
%188 = icmp eq i8 %187, 60
br i1 %188, label %211, label %189
189: ; preds = %184
%190 = add i8 %187, -48
%191 = icmp ult i8 %190, 10
br i1 %191, label %195, label %206
192: ; preds = %195
%193 = add i8 %204, -48
%194 = icmp ult i8 %193, 10
br i1 %194, label %195, label %206
195: ; preds = %189, %192
%196 = phi i32 [ %202, %192 ], [ 0, %189 ]
%197 = phi i8* [ %203, %192 ], [ %186, %189 ]
%198 = phi i8 [ %204, %192 ], [ %187, %189 ]
%199 = zext i8 %198 to i32
%200 = mul i32 %196, 10
%201 = add i32 %200, -48
%202 = add i32 %201, %199
%203 = getelementptr inbounds i8, i8* %197, i64 1
%204 = load i8, i8* %197
%205 = icmp eq i8 %204, 60
br i1 %205, label %211, label %192
206: ; preds = %192, %189
%207 = phi i8 [ %187, %189 ], [ %204, %192 ]
%208 = phi i32 [ 0, %189 ], [ %202, %192 ]
%209 = phi i8* [ %185, %189 ], [ %197, %192 ]
%210 = icmp eq i8 %207, 0
br i1 %210, label %211, label %304
211: ; preds = %195, %184, %206
%212 = phi i32 [ %208, %206 ], [ 0, %184 ], [ %202, %195 ]
%213 = phi i8* [ %209, %206 ], [ %186, %184 ], [ %203, %195 ]
%214 = getelementptr inbounds i32, i32* %1, i64 1
store i32 %212, i32* %214
%215 = load i8, i8* %213
%216 = icmp eq i8 %215, 0
br i1 %216, label %304, label %217
217: ; preds = %211
%218 = getelementptr inbounds i8, i8* %213, i64 1
%219 = bitcast [128 x i8]* %3 to i64*
br label %220
220: ; preds = %217, %289
%221 = phi i64 [ 2, %217 ], [ %287, %289 ]
%222 = phi i32 [ 1, %217 ], [ %285, %289 ]
%223 = phi i8 [ %215, %217 ], [ %292, %289 ]
%224 = phi i8* [ %218, %217 ], [ %291, %289 ]
%225 = icmp eq i8 %223, 62
br i1 %225, label %239, label %226
226: ; preds = %220, %226
%227 = phi i64 [ %234, %226 ], [ 0, %220 ]
%228 = phi i8 [ %237, %226 ], [ %223, %220 ]
%229 = phi i8* [ %236, %226 ], [ %224, %220 ]
%230 = add i8 %228, -65
%231 = icmp ult i8 %230, 26
%232 = add i8 %228, 32
%233 = select i1 %231, i8 %232, i8 %228
%234 = add nuw i64 %227, 1
%235 = getelementptr inbounds [128 x i8], [128 x i8]* %3, i64 0, i64 %227
store i8 %233, i8* %235
%236 = getelementptr inbounds i8, i8* %229, i64 1
%237 = load i8, i8* %229
%238 = icmp eq i8 %237, 62
br i1 %238, label %239, label %226
239: ; preds = %226, %220
%240 = phi i8* [ %224, %220 ], [ %236, %226 ]
%241 = phi i64 [ 0, %220 ], [ %234, %226 ]
%242 = and i64 %241, 4294967295
%243 = getelementptr inbounds [128 x i8], [128 x i8]* %3, i64 0, i64 %242
store i8 0, i8* %243
%244 = load i64, i64* %219
%245 = icmp eq i64 %244, 32770348699510116
%246 = trunc i64 %244 to i8
%247 = lshr i64 %244, 8
%248 = trunc i64 %247 to i8
br i1 %245, label %283, label %249
249: ; preds = %239
%250 = call i32 @bcmp(i8* dereferenceable(5) %4, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i64 5)
%251 = icmp eq i32 %250, 0
br i1 %251, label %283, label %252
252: ; preds = %249
%253 = call i32 @bcmp(i8* dereferenceable(5) %4, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i64 5)
%254 = icmp eq i32 %253, 0
br i1 %254, label %283, label %255
255: ; preds = %252
%256 = call i32 @bcmp(i8* dereferenceable(3) %4, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i64 3)
%257 = icmp eq i32 %256, 0
br i1 %257, label %283, label %258
258: ; preds = %255
%259 = icmp eq i8 %246, 45
%260 = select i1 %259, i8 %248, i8 %246
%261 = select i1 %259, i32 -1, i32 %222
%262 = icmp eq i8 %260, 0
br i1 %262, label %280, label %263
263: ; preds = %258
%264 = select i1 %259, i64 2, i64 1
br label %265
265: ; preds = %263, %271
%266 = phi i64 [ %264, %263 ], [ %276, %271 ]
%267 = phi i32 [ 0, %263 ], [ %275, %271 ]
%268 = phi i8 [ %260, %263 ], [ %278, %271 ]
%269 = add i8 %268, -48
%270 = icmp ult i8 %269, 10
br i1 %270, label %271, label %304
271: ; preds = %265
%272 = zext i8 %268 to i32
%273 = mul i32 %267, 10
%274 = add nsw i32 %272, -48
%275 = add i32 %274, %273
%276 = add nuw i64 %266, 1
%277 = getelementptr inbounds [128 x i8], [128 x i8]* %3, i64 0, i64 %266
%278 = load i8, i8* %277
%279 = icmp eq i8 %278, 0
br i1 %279, label %280, label %265
280: ; preds = %271, %258
%281 = phi i32 [ 0, %258 ], [ %275, %271 ]
%282 = mul i32 %281, %261
br label %283
283: ; preds = %255, %252, %249, %239, %280
%284 = phi i32 [ %282, %280 ], [ -1, %239 ], [ -1, %249 ], [ -1, %252 ], [ -1, %255 ]
%285 = phi i32 [ %261, %280 ], [ %222, %239 ], [ %222, %249 ], [ %222, %252 ], [ %222, %255 ]
%286 = getelementptr inbounds i32, i32* %1, i64 %221
store i32 %284, i32* %286
%287 = add nuw i64 %221, 1
%288 = load i8, i8* %240
switch i8 %288, label %304 [
i8 60, label %289
i8 0, label %294
]
289: ; preds = %283
%290 = getelementptr inbounds i8, i8* %240, i64 1
%291 = getelementptr inbounds i8, i8* %240, i64 2
%292 = load i8, i8* %290
%293 = icmp eq i8 %292, 0
br i1 %293, label %294, label %220
294: ; preds = %283, %289
%295 = trunc i64 %287 to i32
switch i32 %295, label %304 [
i32 3, label %296
i32 4, label %298
i32 5, label %300
i32 6, label %302
]
296: ; preds = %294
%297 = getelementptr inbounds i32, i32* %1, i64 3
store i32 -1, i32* %297
br label %298
298: ; preds = %294, %296
%299 = getelementptr inbounds i32, i32* %1, i64 4
store i32 -1, i32* %299
br label %300
300: ; preds = %294, %298
%301 = getelementptr inbounds i32, i32* %1, i64 5
store i32 -1, i32* %301
br label %302
302: ; preds = %300, %294
br label %304
303: ; preds = %30
store i32 1, i32* %1
br label %304
304: ; preds = %137, %107, %283, %265, %211, %302, %179, %206, %294, %66, %67, %303, %148, %121, %96
%305 = phi i32 [ 3, %96 ], [ 2, %121 ], [ 1, %148 ], [ 6, %303 ], [ 3, %67 ], [ 3, %66 ], [ 5, %302 ], [ -1, %179 ], [ -1, %206 ], [ -1, %294 ], [ -1, %211 ], [ -1, %265 ], [ -1, %283 ], [ -1, %107 ], [ -1, %137 ]
ret i32 %305
}