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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ str;

/* Variables and functions */
scalar_t__ isdigit(char);
scalar_t__ islower(char);
scalar_t__ isupper(char);
int /*<<< orphan*/ memset(char *, int /*<<< orphan*/, int);
scalar_t__ strcmp(char *, char *);
scalar_t__ strncasecmp(char *, char *, int);
char tolower(char);
int __get_str2int(char *buf, int value[]) {
  char *src;
  char ch;
  unsigned int temp;
  int sign;
  int i;
  int idx;
  char str[128];
  src = buf;
  if (strncasecmp(src, "port:p", 6) == 0) {
    src += 6;
    if (strncasecmp(src, "ower", 4) == 0) {
      value[0] = 0xffff;
      src += 4;
    } else {
      ch = *src++;
      if (islower(ch))
        value[0] = ch - 'a' + 1;
      else if (isupper(ch))
        value[0] = ch - 'A' + 1;
      else
        return -1;
    }
    temp = 0;
    ch = *src++;
    while (ch != '<') {
      if (isdigit(ch)) {
        temp = temp * 10 + (ch - '0');
        ch = *src++;
      } else if (ch == '\0') {
        src--;
        break;
      } else {
        return -1;
      }
    }
    value[1] = temp;
    idx = 2;
    ch = *src++;
    while (ch != '\0') {
      i = 0;
      memset(str, 0, sizeof(str));
      while (ch != '>') {
        if (isupper(ch))
          ch = tolower(ch);
        str[i++] = ch;
        ch = *src++;
      }
      if (strcmp(str, "default") == 0 || strcmp(str, "none") == 0 ||
          strcmp(str, "null") == 0 || strcmp(str, "-1") == 0) {
        value[idx] = -1;
      } else {
        i = 0;
        ch = str[i++];
        temp = 0;
        if (ch == '-') {
          sign = -1;
          ch = str[i++];
        } else {
          sign = 1;
        }
        while (ch != '\0') {
          if (isdigit(ch))
            temp = temp * 10 + (ch - '0');
          else
            return -1;
          ch = str[i++];
        }
        value[idx] = temp * sign;
      }
      idx++;
      ch = *src++;
      if (ch == '<') {
        ch = *src++;
      } else if (ch == '\0') {
        ;
      } else {
        return -1;
      }
    }
    switch (idx) {
    case 3:
      value[3] = -1;
    case 4:
      value[4] = -1;
    case 5:
      value[5] = -1;
    case 6:
      break;
    default:
      return -1;
    }
    return 4;
  } else if (strncasecmp(src, "string:", 7) == 0) {
    src += 7;
    idx = 0;
    while (src[idx] != '\0') {
      idx++;
      if (idx > 127)
        break;
    }
    if (idx & 0x03)
      idx = (idx & (~0x03)) + 4;
    value[0] = idx >> 2;
    value[1] = 1;
    return 2;
  } else if (src[0] == '"') {
    src += 1;
    idx = 0;
    while (src[idx] != '"') {
      idx++;
      if (idx > 127)
        break;
    }
    src[idx] = '\0';
    if (idx & 0x03)
      idx = (idx & (~0x03)) + 4;
    value[0] = idx >> 2;
    value[1] = 2;
    return 2;
  } else if (isdigit(src[0]) && (src[1] == 'x' || src[2] == 'X')) {
    temp = 0;
    ch = *src++;
    while (ch != '\0') {
      if (isdigit(ch)) {
        temp = temp * 16 + (ch - '0');
        ch = *src++;
      } else if (isupper(ch)) {
        temp = temp * 16 + (ch - 'A' + 10);
        ch = *src++;
      } else if (islower(ch)) {
        temp = temp * 16 + (ch - 'a' + 10);
        ch = *src++;
      } else {
        break;
      }
    }
    value[0] = temp;
    return 1;
  } else if (isdigit(src[0]) || (isdigit(src[1]) && src[0] == '-')) {
    if (src[0] == '-') {
      sign = -1;
      ch = *src++;
    } else {
      sign = 1;
    }
    temp = 0;
    ch = *src++;
    while (ch != '\0') {
      if (isdigit(ch)) {
        temp = temp * 10 + (ch - '0');
        ch = *src++;
      } else {
        break;
      }
    }
    value[0] = temp * sign;
    return 1;
  } else {
    idx = 0;
    while (src[idx] != '\0') {
      idx++;
      if (idx > 127)
        break;
    }
    if (idx & 0x03)
      idx = (idx & (~0x03)) + 4;
    value[0] = idx >> 2;
    return 2;
  }
}


x86 assembly (clang, -O0):
<__get_str2int>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xe7a(%rip),%rsi
mov    $0x6,%edx
call   1080 <strncasecmp@plt>
cmp    $0x0,%rax
jne    15d5 <__get_str2int+0x465>
mov    -0x20(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xe56(%rip),%rsi
mov    $0x4,%edx
call   1080 <strncasecmp@plt>
cmp    $0x0,%rax
jne    11f0 <__get_str2int+0x80>
mov    -0x18(%rbp),%rax
movl   $0xffff,(%rax)
mov    -0x20(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x20(%rbp)
jmp    126a <__get_str2int+0xfa>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%edi
call   1040 <islower@plt>
cmp    $0x0,%rax
je     122c <__get_str2int+0xbc>
movsbl -0x21(%rbp),%ecx
sub    $0x61,%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1265 <__get_str2int+0xf5>
movsbl -0x21(%rbp),%edi
call   1090 <isupper@plt>
cmp    $0x0,%rax
je     1254 <__get_str2int+0xe4>
movsbl -0x21(%rbp),%ecx
sub    $0x41,%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1260 <__get_str2int+0xf0>
movl   $0xffffffff,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
jmp    1265 <__get_str2int+0xf5>
jmp    126a <__get_str2int+0xfa>
movl   $0x0,-0x28(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x3c,%eax
je     12fd <__get_str2int+0x18d>
movsbl -0x21(%rbp),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     12ce <__get_str2int+0x15e>
imul   $0xa,-0x28(%rbp),%eax
movsbl -0x21(%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,-0x21(%rbp)
jmp    12f8 <__get_str2int+0x188>
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jne    12ec <__get_str2int+0x17c>
mov    -0x20(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
jmp    12fd <__get_str2int+0x18d>
movl   $0xffffffff,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
jmp    1285 <__get_str2int+0x115>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,0x4(%rax)
movl   $0x2,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     1568 <__get_str2int+0x3f8>
movl   $0x0,-0x30(%rbp)
lea    -0xc0(%rbp),%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1050 <memset@plt>
movsbl -0x21(%rbp),%eax
cmp    $0x3e,%eax
je     13a5 <__get_str2int+0x235>
movsbl -0x21(%rbp),%edi
call   1090 <isupper@plt>
cmp    $0x0,%rax
je     1375 <__get_str2int+0x205>
movsbl -0x21(%rbp),%edi
call   1070 <tolower@plt>
mov    %al,-0x21(%rbp)
mov    -0x21(%rbp),%cl
mov    -0x30(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x30(%rbp)
cltq
mov    %cl,-0xc0(%rbp,%rax,1)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
jmp    1349 <__get_str2int+0x1d9>
lea    -0xc0(%rbp),%rdi
lea    0xc69(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1419 <__get_str2int+0x2a9>
lea    -0xc0(%rbp),%rdi
lea    0xc54(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1419 <__get_str2int+0x2a9>
lea    -0xc0(%rbp),%rdi
lea    0xc3c(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1419 <__get_str2int+0x2a9>
lea    -0xc0(%rbp),%rdi
lea    0xc24(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    142d <__get_str2int+0x2bd>
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    14fd <__get_str2int+0x38d>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xc0(%rbp,%rax,1),%al
mov    %al,-0x21(%rbp)
movl   $0x0,-0x28(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x2d,%eax
jne    1482 <__get_str2int+0x312>
movl   $0xffffffff,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xc0(%rbp,%rax,1),%al
mov    %al,-0x21(%rbp)
jmp    1489 <__get_str2int+0x319>
movl   $0x1,-0x2c(%rbp)
jmp    148e <__get_str2int+0x31e>
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     14eb <__get_str2int+0x37b>
movsbl -0x21(%rbp),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     14c3 <__get_str2int+0x353>
imul   $0xa,-0x28(%rbp),%eax
movsbl -0x21(%rbp),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x28(%rbp)
jmp    14cf <__get_str2int+0x35f>
movl   $0xffffffff,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
mov    -0x30(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x30(%rbp)
cltq
mov    -0xc0(%rbp,%rax,1),%al
mov    %al,-0x21(%rbp)
jmp    148e <__get_str2int+0x31e>
mov    -0x28(%rbp),%edx
imul   -0x2c(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x3c,%eax
jne    1540 <__get_str2int+0x3d0>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
jmp    1563 <__get_str2int+0x3f3>
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
jne    1552 <__get_str2int+0x3e2>
jmp    155e <__get_str2int+0x3ee>
movl   $0xffffffff,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
jmp    1563 <__get_str2int+0x3f3>
jmp    1322 <__get_str2int+0x1b2>
mov    -0x34(%rbp),%eax
add    $0xfffffffd,%eax
mov    %eax,%ecx
mov    %rcx,-0xc8(%rbp)
sub    $0x3,%eax
ja     15bd <__get_str2int+0x44d>
mov    -0xc8(%rbp),%rax
lea    0xa72(%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    15c9 <__get_str2int+0x459>
movl   $0xffffffff,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
movl   $0x4,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
mov    -0x20(%rbp),%rdi
lea    0xa51(%rip),%rsi
mov    $0x7,%edx
call   1080 <strncasecmp@plt>
cmp    $0x0,%rax
jne    1677 <__get_str2int+0x507>
mov    -0x20(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1639 <__get_str2int+0x4c9>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x7f,-0x34(%rbp)
jle    1634 <__get_str2int+0x4c4>
jmp    1639 <__get_str2int+0x4c9>
jmp    1607 <__get_str2int+0x497>
mov    -0x34(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
je     1654 <__get_str2int+0x4e4>
mov    -0x34(%rbp),%eax
and    $0xfffffffc,%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%ecx
sar    $0x2,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x1,0x4(%rax)
movl   $0x2,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1716 <__get_str2int+0x5a6>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
je     16cc <__get_str2int+0x55c>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x7f,-0x34(%rbp)
jle    16c7 <__get_str2int+0x557>
jmp    16cc <__get_str2int+0x55c>
jmp    169a <__get_str2int+0x52a>
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x34(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
je     16f3 <__get_str2int+0x583>
mov    -0x34(%rbp),%eax
and    $0xfffffffc,%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%ecx
sar    $0x2,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x2,0x4(%rax)
movl   $0x2,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     185f <__get_str2int+0x6ef>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x78,%eax
je     174e <__get_str2int+0x5de>
mov    -0x20(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x58,%eax
jne    185f <__get_str2int+0x6ef>
movl   $0x0,-0x28(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     184a <__get_str2int+0x6da>
movsbl -0x21(%rbp),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     17b4 <__get_str2int+0x644>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
movsbl -0x21(%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,-0x21(%rbp)
jmp    1845 <__get_str2int+0x6d5>
movsbl -0x21(%rbp),%edi
call   1090 <isupper@plt>
cmp    $0x0,%rax
je     17f5 <__get_str2int+0x685>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
movsbl -0x21(%rbp),%ecx
sub    $0x41,%ecx
add    $0xa,%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,-0x21(%rbp)
jmp    1840 <__get_str2int+0x6d0>
movsbl -0x21(%rbp),%edi
call   1040 <islower@plt>
cmp    $0x0,%rax
je     1836 <__get_str2int+0x6c6>
mov    -0x28(%rbp),%eax
shl    $0x4,%eax
movsbl -0x21(%rbp),%ecx
sub    $0x61,%ecx
add    $0xa,%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,-0x21(%rbp)
jmp    183b <__get_str2int+0x6cb>
jmp    184a <__get_str2int+0x6da>
jmp    1840 <__get_str2int+0x6d0>
jmp    1845 <__get_str2int+0x6d5>
jmp    1769 <__get_str2int+0x5f9>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
jne    189c <__get_str2int+0x72c>
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     195a <__get_str2int+0x7ea>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    195a <__get_str2int+0x7ea>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    18cc <__get_str2int+0x75c>
movl   $0xffffffff,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
jmp    18d3 <__get_str2int+0x763>
movl   $0x1,-0x2c(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     1941 <__get_str2int+0x7d1>
movsbl -0x21(%rbp),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1937 <__get_str2int+0x7c7>
imul   $0xa,-0x28(%rbp),%eax
movsbl -0x21(%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,-0x21(%rbp)
jmp    193c <__get_str2int+0x7cc>
jmp    1941 <__get_str2int+0x7d1>
jmp    18ee <__get_str2int+0x77e>
mov    -0x28(%rbp),%ecx
imul   -0x2c(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    19c1 <__get_str2int+0x851>
movl   $0x0,-0x34(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1993 <__get_str2int+0x823>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x7f,-0x34(%rbp)
jle    198e <__get_str2int+0x81e>
jmp    1993 <__get_str2int+0x823>
jmp    1961 <__get_str2int+0x7f1>
mov    -0x34(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
je     19ae <__get_str2int+0x83e>
mov    -0x34(%rbp),%eax
and    $0xfffffffc,%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%ecx
sar    $0x2,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x2,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<__get_str2int>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %rsi,%r12
mov    %rdi,%rbx
lea    0xe82(%rip),%rsi
mov    $0x6,%edx
call   1080 <strncasecmp@plt>
test   %rax,%rax
je     1212 <__get_str2int+0xa2>
lea    0xe8d(%rip),%rsi
mov    %rbx,%rdi
mov    $0x7,%edx
call   1080 <strncasecmp@plt>
test   %rax,%rax
je     1250 <__get_str2int+0xe0>
mov    (%rbx),%al
cmp    $0x22,%al
jne    12a2 <__get_str2int+0x132>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
cmpb   $0x22,0x1(%rbx,%rax,1)
je     16a8 <__get_str2int+0x538>
cmpb   $0x22,0x2(%rbx,%rax,1)
je     163f <__get_str2int+0x4cf>
cmpb   $0x22,0x3(%rbx,%rax,1)
je     1645 <__get_str2int+0x4d5>
cmpb   $0x22,0x4(%rbx,%rax,1)
je     16a4 <__get_str2int+0x534>
add    $0x4,%rax
cmp    $0x80,%rax
jne    11d0 <__get_str2int+0x60>
mov    $0x80,%eax
jmp    16a8 <__get_str2int+0x538>
lea    0x6(%rbx),%rdi
lea    0xdfa(%rip),%rsi
mov    $0x4,%edx
call   1080 <strncasecmp@plt>
test   %rax,%rax
je     1336 <__get_str2int+0x1c6>
movsbl 0x6(%rbx),%ebp
add    $0x7,%rbx
mov    %ebp,%edi
call   1040 <islower@plt>
test   %rax,%rax
je     13b0 <__get_str2int+0x240>
add    $0xffffffa0,%ebp
jmp    13c3 <__get_str2int+0x253>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpb   $0x0,0x7(%rbx,%rax,1)
je     1622 <__get_str2int+0x4b2>
cmpb   $0x0,0x8(%rbx,%rax,1)
je     1612 <__get_str2int+0x4a2>
cmpb   $0x0,0x9(%rbx,%rax,1)
je     1618 <__get_str2int+0x4a8>
cmpb   $0x0,0xa(%rbx,%rax,1)
je     161e <__get_str2int+0x4ae>
add    $0x4,%rax
cmp    $0x80,%rax
jne    1260 <__get_str2int+0xf0>
mov    $0x80,%eax
jmp    1622 <__get_str2int+0x4b2>
movsbl %al,%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     1347 <__get_str2int+0x1d7>
cmpb   $0x78,0x1(%rbx)
je     12c3 <__get_str2int+0x153>
cmpb   $0x58,0x2(%rbx)
jne    1347 <__get_str2int+0x1d7>
mov    (%rbx),%al
test   %al,%al
je     16de <__get_str2int+0x56e>
add    $0x1,%rbx
xor    %ebp,%ebp
jmp    12f7 <__get_str2int+0x187>
cs nopw 0x0(%rax,%rax,1)
nop
shl    $0x4,%ebp
add    %ecx,%ebp
add    %r15d,%ebp
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
je     16e0 <__get_str2int+0x570>
movsbl %al,%r15d
mov    %r15d,%edi
call   1030 <isdigit@plt>
mov    $0xffffffd0,%ecx
test   %rax,%rax
jne    12e0 <__get_str2int+0x170>
mov    %r15d,%edi
call   1090 <isupper@plt>
mov    $0xffffffc9,%ecx
test   %rax,%rax
jne    12e0 <__get_str2int+0x170>
mov    %r15d,%edi
call   1040 <islower@plt>
mov    $0xffffffa9,%ecx
test   %rax,%rax
jne    12e0 <__get_str2int+0x170>
jmp    16e0 <__get_str2int+0x570>
movl   $0xffff,(%r12)
add    $0xa,%rbx
jmp    13c7 <__get_str2int+0x257>
movsbl (%rbx),%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     164b <__get_str2int+0x4db>
cmpb   $0x2d,(%rbx)
sete   %al
movzbl %al,%r15d
mov    (%rbx,%r15,1),%al
test   %al,%al
je     16eb <__get_str2int+0x57b>
lea    (%r15,%rbx,1),%rbp
add    $0x1,%rbp
xor    %r14d,%r14d
nopl   0x0(%rax)
movsbl %al,%ebx
mov    %ebx,%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     16ee <__get_str2int+0x57e>
lea    (%r14,%r14,4),%eax
lea    (%rbx,%rax,2),%r14d
add    $0xffffffd0,%r14d
movzbl 0x0(%rbp),%eax
add    $0x1,%rbp
test   %al,%al
jne    1380 <__get_str2int+0x210>
jmp    16ee <__get_str2int+0x57e>
mov    %ebp,%edi
call   1090 <isupper@plt>
test   %rax,%rax
je     1608 <__get_str2int+0x498>
add    $0xffffffc0,%ebp
mov    %ebp,(%r12)
mov    (%rbx),%r15b
cmp    $0x3c,%r15b
jne    13d8 <__get_str2int+0x268>
add    $0x1,%rbx
xor    %ebp,%ebp
jmp    1431 <__get_str2int+0x2c1>
movsbl %r15b,%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     1421 <__get_str2int+0x2b1>
add    $0x2,%rbx
xor    %ebp,%ebp
nopl   0x0(%rax)
movsbl %r15b,%eax
lea    0x0(%rbp,%rbp,4),%ecx
lea    (%rax,%rcx,2),%ebp
add    $0xffffffd0,%ebp
movzbl -0x1(%rbx),%r15d
cmp    $0x3c,%r15b
je     1431 <__get_str2int+0x2c1>
movsbl %r15b,%edi
call   1030 <isdigit@plt>
add    $0x1,%rbx
test   %rax,%rax
jne    13f0 <__get_str2int+0x280>
add    $0xfffffffffffffffe,%rbx
jmp    1423 <__get_str2int+0x2b3>
xor    %ebp,%ebp
mov    $0xffffffff,%eax
test   %r15b,%r15b
jne    16cc <__get_str2int+0x55c>
mov    %ebp,0x4(%r12)
mov    (%rbx),%bpl
test   %bpl,%bpl
je     1608 <__get_str2int+0x498>
mov    %r12,0x8(%rsp)
add    $0x1,%rbx
mov    $0x2,%r12d
lea    0x10(%rsp),%r14
cs nopw 0x0(%rax,%rax,1)
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1050 <memset@plt>
cmp    $0x3e,%bpl
jne    1540 <__get_str2int+0x3d0>
mov    %r14,%rdi
lea    0xb99(%rip),%rsi
call   1060 <strcmp@plt>
mov    $0xffffffff,%ebp
test   %rax,%rax
je     15a0 <__get_str2int+0x430>
mov    %r14,%rdi
lea    0xb84(%rip),%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
je     15a0 <__get_str2int+0x430>
mov    %r14,%rdi
lea    0xb71(%rip),%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
je     15a0 <__get_str2int+0x430>
mov    %r14,%rdi
lea    0xb5e(%rip),%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
je     15a0 <__get_str2int+0x430>
mov    0x10(%rsp),%edx
cmp    $0x2d,%dl
movzbl 0x11(%rsp),%eax
cmovne %edx,%eax
test   %al,%al
mov    %edx,0x4(%rsp)
je     1585 <__get_str2int+0x415>
xor    %ecx,%ecx
cmp    $0x2d,%dl
sete   %cl
lea    (%rcx,%r14,1),%r13
add    $0x1,%r13
xor    %r15d,%r15d
nopl   0x0(%rax)
movsbl %al,%ebp
mov    %ebp,%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     1608 <__get_str2int+0x498>
lea    (%r15,%r15,4),%eax
lea    -0x30(%rbp,%rax,2),%r15d
movzbl 0x0(%r13),%eax
add    $0x1,%r13
test   %al,%al
jne    1510 <__get_str2int+0x3a0>
jmp    1588 <__get_str2int+0x418>
nopl   0x0(%rax,%rax,1)
mov    %r14,%r15
jmp    1568 <__get_str2int+0x3f8>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %bpl,(%r15)
movzbl (%rbx),%ebp
add    $0x1,%rbx
add    $0x1,%r15
cmp    $0x3e,%bpl
je     1479 <__get_str2int+0x309>
movsbl %bpl,%r13d
mov    %r13d,%edi
call   1090 <isupper@plt>
test   %rax,%rax
je     1550 <__get_str2int+0x3e0>
mov    %r13d,%edi
call   1070 <tolower@plt>
mov    %eax,%ebp
jmp    1550 <__get_str2int+0x3e0>
xor    %r15d,%r15d
mov    %r15d,%ebp
neg    %ebp
cmpb   $0x2d,0x4(%rsp)
cmovne %r15d,%ebp
cs nopw 0x0(%rax,%rax,1)
mov    0x8(%rsp),%rax
mov    %ebp,(%rax,%r12,4)
add    $0x1,%r12
mov    (%rbx),%al
cmp    $0x3c,%al
jne    15c6 <__get_str2int+0x456>
mov    0x1(%rbx),%bpl
add    $0x2,%rbx
test   %bpl,%bpl
jne    1460 <__get_str2int+0x2f0>
jmp    15ca <__get_str2int+0x45a>
test   %al,%al
jne    1608 <__get_str2int+0x498>
add    $0xfffffffd,%r12d
cmp    $0x3,%r12d
ja     1608 <__get_str2int+0x498>
lea    0xa25(%rip),%rax
movslq (%rax,%r12,4),%rcx
add    %rax,%rcx
mov    0x8(%rsp),%rax
jmp    *%rcx
movl   $0xffffffff,0xc(%rax)
movl   $0xffffffff,0x10(%rax)
movl   $0xffffffff,0x14(%rax)
mov    $0x4,%eax
jmp    16cc <__get_str2int+0x55c>
mov    $0xffffffff,%eax
jmp    16cc <__get_str2int+0x55c>
add    $0x1,%rax
jmp    1622 <__get_str2int+0x4b2>
add    $0x2,%rax
jmp    1622 <__get_str2int+0x4b2>
add    $0x3,%rax
lea    0x4(%rax),%ecx
test   $0x3,%al
cmove  %eax,%ecx
sar    $0x2,%ecx
mov    %ecx,(%r12)
movl   $0x1,0x4(%r12)
jmp    16c7 <__get_str2int+0x557>
add    $0x1,%rax
jmp    16a8 <__get_str2int+0x538>
add    $0x2,%rax
jmp    16a8 <__get_str2int+0x538>
movsbl 0x1(%rbx),%edi
call   1030 <isdigit@plt>
test   %rax,%rax
je     1664 <__get_str2int+0x4f4>
mov    $0x1,%al
cmpb   $0x2d,(%rbx)
je     135e <__get_str2int+0x1ee>
xor    %eax,%eax
cmpb   $0x0,(%rbx,%rax,1)
je     1715 <__get_str2int+0x5a5>
cmpb   $0x0,0x1(%rbx,%rax,1)
je     1705 <__get_str2int+0x595>
cmpb   $0x0,0x2(%rbx,%rax,1)
je     170b <__get_str2int+0x59b>
cmpb   $0x0,0x3(%rbx,%rax,1)
je     1711 <__get_str2int+0x5a1>
add    $0x4,%rax
cmp    $0x80,%rax
jne    1666 <__get_str2int+0x4f6>
mov    $0x80,%eax
jmp    1715 <__get_str2int+0x5a5>
add    $0x3,%rax
cltq
movb   $0x0,0x1(%rbx,%rax,1)
lea    0x4(%rax),%ecx
test   $0x3,%al
cmove  %eax,%ecx
sar    $0x2,%ecx
mov    %ecx,(%r12)
movl   $0x2,0x4(%r12)
mov    $0x2,%eax
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ebp,%ebp
mov    %ebp,(%r12)
mov    $0x1,%eax
jmp    16cc <__get_str2int+0x55c>
xor    %r14d,%r14d
mov    %r14d,%eax
neg    %eax
test   %r15,%r15
cmove  %r14d,%eax
mov    %eax,(%r12)
mov    $0x1,%eax
jmp    16cc <__get_str2int+0x55c>
add    $0x1,%rax
jmp    1715 <__get_str2int+0x5a5>
add    $0x2,%rax
jmp    1715 <__get_str2int+0x5a5>
add    $0x3,%rax
lea    0x4(%rax),%ecx
test   $0x3,%al
cmove  %eax,%ecx
sar    $0x2,%ecx
mov    %ecx,(%r12)
jmp    16c7 <__get_str2int+0x557>

LLVM IR (-O0):
@.str = [7 x i8] c"port:p\00"
@.str.1 = [5 x i8] c"ower\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"
@.str.6 = [8 x i8] c"string:\00"
define i32 @__get_str2int(i8* %0, i32* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i32*
%6 = alloca i8*
%7 = alloca i8
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca [128 x i8]
store i8* %0, i8** %4
store i32* %1, i32** %5
%13 = load i8*, i8** %4
store i8* %13, i8** %6
%14 = load i8*, i8** %6
%15 = call i64 @strncasecmp(i8* %14, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 6)
%16 = icmp eq i64 %15, 0
br i1 %16, label %17, label %224
17: ; preds = %2
%18 = load i8*, i8** %6
%19 = getelementptr inbounds i8, i8* %18, i64 6
store i8* %19, i8** %6
%20 = load i8*, i8** %6
%21 = call i64 @strncasecmp(i8* %20, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 4)
%22 = icmp eq i64 %21, 0
br i1 %22, label %23, label %28
23: ; preds = %17
%24 = load i32*, i32** %5
%25 = getelementptr inbounds i32, i32* %24, i64 0
store i32 65535, i32* %25
%26 = load i8*, i8** %6
%27 = getelementptr inbounds i8, i8* %26, i64 4
store i8* %27, i8** %6
br label %56
28: ; preds = %17
%29 = load i8*, i8** %6
%30 = getelementptr inbounds i8, i8* %29, i32 1
store i8* %30, i8** %6
%31 = load i8, i8* %29
store i8 %31, i8* %7
%32 = load i8, i8* %7
%33 = call i64 @islower(i8 signext %32)
%34 = icmp ne i64 %33, 0
br i1 %34, label %35, label %42
35: ; preds = %28
%36 = load i8, i8* %7
%37 = sext i8 %36 to i32
%38 = sub nsw i32 %37, 97
%39 = add nsw i32 %38, 1
%40 = load i32*, i32** %5
%41 = getelementptr inbounds i32, i32* %40, i64 0
store i32 %39, i32* %41
br label %55
42: ; preds = %28
%43 = load i8, i8* %7
%44 = call i64 @isupper(i8 signext %43)
%45 = icmp ne i64 %44, 0
br i1 %45, label %46, label %53
46: ; preds = %42
%47 = load i8, i8* %7
%48 = sext i8 %47 to i32
%49 = sub nsw i32 %48, 65
%50 = add nsw i32 %49, 1
%51 = load i32*, i32** %5
%52 = getelementptr inbounds i32, i32* %51, i64 0
store i32 %50, i32* %52
br label %54
53: ; preds = %42
store i32 -1, i32* %3
br label %470
54: ; preds = %46
br label %55
55: ; preds = %54, %35
br label %56
56: ; preds = %55, %23
store i32 0, i32* %8
%57 = load i8*, i8** %6
%58 = getelementptr inbounds i8, i8* %57, i32 1
store i8* %58, i8** %6
%59 = load i8, i8* %57
store i8 %59, i8* %7
br label %60
60: ; preds = %86, %56
%61 = load i8, i8* %7
%62 = sext i8 %61 to i32
%63 = icmp ne i32 %62, 60
br i1 %63, label %64, label %87
64: ; preds = %60
%65 = load i8, i8* %7
%66 = call i64 @isdigit(i8 signext %65)
%67 = icmp ne i64 %66, 0
br i1 %67, label %68, label %78
68: ; preds = %64
%69 = load i32, i32* %8
%70 = mul i32 %69, 10
%71 = load i8, i8* %7
%72 = sext i8 %71 to i32
%73 = sub nsw i32 %72, 48
%74 = add i32 %70, %73
store i32 %74, i32* %8
%75 = load i8*, i8** %6
%76 = getelementptr inbounds i8, i8* %75, i32 1
store i8* %76, i8** %6
%77 = load i8, i8* %75
store i8 %77, i8* %7
br label %86
78: ; preds = %64
%79 = load i8, i8* %7
%80 = sext i8 %79 to i32
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %85
82: ; preds = %78
%83 = load i8*, i8** %6
%84 = getelementptr inbounds i8, i8* %83, i32 -1
store i8* %84, i8** %6
br label %87
85: ; preds = %78
store i32 -1, i32* %3
br label %470
86: ; preds = %68
br label %60
87: ; preds = %82, %60
%88 = load i32, i32* %8
%89 = load i32*, i32** %5
%90 = getelementptr inbounds i32, i32* %89, i64 1
store i32 %88, i32* %90
store i32 2, i32* %11
%91 = load i8*, i8** %6
%92 = getelementptr inbounds i8, i8* %91, i32 1
store i8* %92, i8** %6
%93 = load i8, i8* %91
store i8 %93, i8* %7
br label %94
94: ; preds = %209, %87
%95 = load i8, i8* %7
%96 = sext i8 %95 to i32
%97 = icmp ne i32 %96, 0
br i1 %97, label %98, label %210
98: ; preds = %94
store i32 0, i32* %10
%99 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 0
%100 = call i32 @memset(i8* %99, i32 0, i32 128)
br label %101
101: ; preds = %112, %98
%102 = load i8, i8* %7
%103 = sext i8 %102 to i32
%104 = icmp ne i32 %103, 62
br i1 %104, label %105, label %121
105: ; preds = %101
%106 = load i8, i8* %7
%107 = call i64 @isupper(i8 signext %106)
%108 = icmp ne i64 %107, 0
br i1 %108, label %109, label %112
109: ; preds = %105
%110 = load i8, i8* %7
%111 = call signext i8 @tolower(i8 signext %110)
store i8 %111, i8* %7
br label %112
112: ; preds = %109, %105
%113 = load i8, i8* %7
%114 = load i32, i32* %10
%115 = add nsw i32 %114, 1
store i32 %115, i32* %10
%116 = sext i32 %114 to i64
%117 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 %116
store i8 %113, i8* %117
%118 = load i8*, i8** %6
%119 = getelementptr inbounds i8, i8* %118, i32 1
store i8* %119, i8** %6
%120 = load i8, i8* %118
store i8 %120, i8* %7
br label %101
121: ; preds = %101
%122 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 0
%123 = call i64 @strcmp(i8* %122, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
%124 = icmp eq i64 %123, 0
br i1 %124, label %137, label %125
125: ; preds = %121
%126 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 0
%127 = call i64 @strcmp(i8* %126, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%128 = icmp eq i64 %127, 0
br i1 %128, label %137, label %129
129: ; preds = %125
%130 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 0
%131 = call i64 @strcmp(i8* %130, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%132 = icmp eq i64 %131, 0
br i1 %132, label %137, label %133
133: ; preds = %129
%134 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 0
%135 = call i64 @strcmp(i8* %134, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%136 = icmp eq i64 %135, 0
br i1 %136, label %137, label %142
137: ; preds = %133, %129, %125, %121
%138 = load i32*, i32** %5
%139 = load i32, i32* %11
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds i32, i32* %138, i64 %140
store i32 -1, i32* %141
br label %189
142: ; preds = %133
store i32 0, i32* %10
%143 = load i32, i32* %10
%144 = add nsw i32 %143, 1
store i32 %144, i32* %10
%145 = sext i32 %143 to i64
%146 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 %145
%147 = load i8, i8* %146
store i8 %147, i8* %7
store i32 0, i32* %8
%148 = load i8, i8* %7
%149 = sext i8 %148 to i32
%150 = icmp eq i32 %149, 45
br i1 %150, label %151, label %157
151: ; preds = %142
store i32 -1, i32* %9
%152 = load i32, i32* %10
%153 = add nsw i32 %152, 1
store i32 %153, i32* %10
%154 = sext i32 %152 to i64
%155 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 %154
%156 = load i8, i8* %155
store i8 %156, i8* %7
br label %158
157: ; preds = %142
store i32 1, i32* %9
br label %158
158: ; preds = %157, %151
br label %159
159: ; preds = %175, %158
%160 = load i8, i8* %7
%161 = sext i8 %160 to i32
%162 = icmp ne i32 %161, 0
br i1 %162, label %163, label %181
163: ; preds = %159
%164 = load i8, i8* %7
%165 = call i64 @isdigit(i8 signext %164)
%166 = icmp ne i64 %165, 0
br i1 %166, label %167, label %174
167: ; preds = %163
%168 = load i32, i32* %8
%169 = mul i32 %168, 10
%170 = load i8, i8* %7
%171 = sext i8 %170 to i32
%172 = sub nsw i32 %171, 48
%173 = add i32 %169, %172
store i32 %173, i32* %8
br label %175
174: ; preds = %163
store i32 -1, i32* %3
br label %470
175: ; preds = %167
%176 = load i32, i32* %10
%177 = add nsw i32 %176, 1
store i32 %177, i32* %10
%178 = sext i32 %176 to i64
%179 = getelementptr inbounds [128 x i8], [128 x i8]* %12, i64 0, i64 %178
%180 = load i8, i8* %179
store i8 %180, i8* %7
br label %159
181: ; preds = %159
%182 = load i32, i32* %8
%183 = load i32, i32* %9
%184 = mul i32 %182, %183
%185 = load i32*, i32** %5
%186 = load i32, i32* %11
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds i32, i32* %185, i64 %187
store i32 %184, i32* %188
br label %189
189: ; preds = %181, %137
%190 = load i32, i32* %11
%191 = add nsw i32 %190, 1
store i32 %191, i32* %11
%192 = load i8*, i8** %6
%193 = getelementptr inbounds i8, i8* %192, i32 1
store i8* %193, i8** %6
%194 = load i8, i8* %192
store i8 %194, i8* %7
%195 = load i8, i8* %7
%196 = sext i8 %195 to i32
%197 = icmp eq i32 %196, 60
br i1 %197, label %198, label %202
198: ; preds = %189
%199 = load i8*, i8** %6
%200 = getelementptr inbounds i8, i8* %199, i32 1
store i8* %200, i8** %6
%201 = load i8, i8* %199
store i8 %201, i8* %7
br label %209
202: ; preds = %189
%203 = load i8, i8* %7
%204 = sext i8 %203 to i32
%205 = icmp eq i32 %204, 0
br i1 %205, label %206, label %207
206: ; preds = %202
br label %208
207: ; preds = %202
store i32 -1, i32* %3
br label %470
208: ; preds = %206
br label %209
209: ; preds = %208, %198
br label %94
210: ; preds = %94
%211 = load i32, i32* %11
switch i32 %211, label %222 [
i32 3, label %212
i32 4, label %215
i32 5, label %218
i32 6, label %221
]
212: ; preds = %210
%213 = load i32*, i32** %5
%214 = getelementptr inbounds i32, i32* %213, i64 3
store i32 -1, i32* %214
br label %215
215: ; preds = %210, %212
%216 = load i32*, i32** %5
%217 = getelementptr inbounds i32, i32* %216, i64 4
store i32 -1, i32* %217
br label %218
218: ; preds = %210, %215
%219 = load i32*, i32** %5
%220 = getelementptr inbounds i32, i32* %219, i64 5
store i32 -1, i32* %220
br label %221
221: ; preds = %210, %218
br label %223
222: ; preds = %210
store i32 -1, i32* %3
br label %470
223: ; preds = %221
store i32 4, i32* %3
br label %470
224: ; preds = %2
%225 = load i8*, i8** %6
%226 = call i64 @strncasecmp(i8* %225, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 7)
%227 = icmp eq i64 %226, 0
br i1 %227, label %228, label %261
228: ; preds = %224
%229 = load i8*, i8** %6
%230 = getelementptr inbounds i8, i8* %229, i64 7
store i8* %230, i8** %6
store i32 0, i32* %11
br label %231
231: ; preds = %245, %228
%232 = load i8*, i8** %6
%233 = load i32, i32* %11
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i8, i8* %232, i64 %234
%236 = load i8, i8* %235
%237 = sext i8 %236 to i32
%238 = icmp ne i32 %237, 0
br i1 %238, label %239, label %246
239: ; preds = %231
%240 = load i32, i32* %11
%241 = add nsw i32 %240, 1
store i32 %241, i32* %11
%242 = load i32, i32* %11
%243 = icmp sgt i32 %242, 127
br i1 %243, label %244, label %245
244: ; preds = %239
br label %246
245: ; preds = %239
br label %231
246: ; preds = %244, %231
%247 = load i32, i32* %11
%248 = and i32 %247, 3
%249 = icmp ne i32 %248, 0
br i1 %249, label %250, label %254
250: ; preds = %246
%251 = load i32, i32* %11
%252 = and i32 %251, -4
%253 = add nsw i32 %252, 4
store i32 %253, i32* %11
br label %254
254: ; preds = %250, %246
%255 = load i32, i32* %11
%256 = ashr i32 %255, 2
%257 = load i32*, i32** %5
%258 = getelementptr inbounds i32, i32* %257, i64 0
store i32 %256, i32* %258
%259 = load i32*, i32** %5
%260 = getelementptr inbounds i32, i32* %259, i64 1
store i32 1, i32* %260
store i32 2, i32* %3
br label %470
261: ; preds = %224
%262 = load i8*, i8** %6
%263 = getelementptr inbounds i8, i8* %262, i64 0
%264 = load i8, i8* %263
%265 = sext i8 %264 to i32
%266 = icmp eq i32 %265, 34
br i1 %266, label %267, label %304
267: ; preds = %261
%268 = load i8*, i8** %6
%269 = getelementptr inbounds i8, i8* %268, i64 1
store i8* %269, i8** %6
store i32 0, i32* %11
br label %270
270: ; preds = %284, %267
%271 = load i8*, i8** %6
%272 = load i32, i32* %11
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds i8, i8* %271, i64 %273
%275 = load i8, i8* %274
%276 = sext i8 %275 to i32
%277 = icmp ne i32 %276, 34
br i1 %277, label %278, label %285
278: ; preds = %270
%279 = load i32, i32* %11
%280 = add nsw i32 %279, 1
store i32 %280, i32* %11
%281 = load i32, i32* %11
%282 = icmp sgt i32 %281, 127
br i1 %282, label %283, label %284
283: ; preds = %278
br label %285
284: ; preds = %278
br label %270
285: ; preds = %283, %270
%286 = load i8*, i8** %6
%287 = load i32, i32* %11
%288 = sext i32 %287 to i64
%289 = getelementptr inbounds i8, i8* %286, i64 %288
store i8 0, i8* %289
%290 = load i32, i32* %11
%291 = and i32 %290, 3
%292 = icmp ne i32 %291, 0
br i1 %292, label %293, label %297
293: ; preds = %285
%294 = load i32, i32* %11
%295 = and i32 %294, -4
%296 = add nsw i32 %295, 4
store i32 %296, i32* %11
br label %297
297: ; preds = %293, %285
%298 = load i32, i32* %11
%299 = ashr i32 %298, 2
%300 = load i32*, i32** %5
%301 = getelementptr inbounds i32, i32* %300, i64 0
store i32 %299, i32* %301
%302 = load i32*, i32** %5
%303 = getelementptr inbounds i32, i32* %302, i64 1
store i32 2, i32* %303
store i32 2, i32* %3
br label %470
304: ; preds = %261
%305 = load i8*, i8** %6
%306 = getelementptr inbounds i8, i8* %305, i64 0
%307 = load i8, i8* %306
%308 = call i64 @isdigit(i8 signext %307)
%309 = icmp ne i64 %308, 0
br i1 %309, label %310, label %382
310: ; preds = %304
%311 = load i8*, i8** %6
%312 = getelementptr inbounds i8, i8* %311, i64 1
%313 = load i8, i8* %312
%314 = sext i8 %313 to i32
%315 = icmp eq i32 %314, 120
br i1 %315, label %322, label %316
316: ; preds = %310
%317 = load i8*, i8** %6
%318 = getelementptr inbounds i8, i8* %317, i64 2
%319 = load i8, i8* %318
%320 = sext i8 %319 to i32
%321 = icmp eq i32 %320, 88
br i1 %321, label %322, label %382
322: ; preds = %316, %310
store i32 0, i32* %8
%323 = load i8*, i8** %6
%324 = getelementptr inbounds i8, i8* %323, i32 1
store i8* %324, i8** %6
%325 = load i8, i8* %323
store i8 %325, i8* %7
br label %326
326: ; preds = %377, %322
%327 = load i8, i8* %7
%328 = sext i8 %327 to i32
%329 = icmp ne i32 %328, 0
br i1 %329, label %330, label %378
330: ; preds = %326
%331 = load i8, i8* %7
%332 = call i64 @isdigit(i8 signext %331)
%333 = icmp ne i64 %332, 0
br i1 %333, label %334, label %344
334: ; preds = %330
%335 = load i32, i32* %8
%336 = mul i32 %335, 16
%337 = load i8, i8* %7
%338 = sext i8 %337 to i32
%339 = sub nsw i32 %338, 48
%340 = add i32 %336, %339
store i32 %340, i32* %8
%341 = load i8*, i8** %6
%342 = getelementptr inbounds i8, i8* %341, i32 1
store i8* %342, i8** %6
%343 = load i8, i8* %341
store i8 %343, i8* %7
br label %377
344: ; preds = %330
%345 = load i8, i8* %7
%346 = call i64 @isupper(i8 signext %345)
%347 = icmp ne i64 %346, 0
br i1 %347, label %348, label %359
348: ; preds = %344
%349 = load i32, i32* %8
%350 = mul i32 %349, 16
%351 = load i8, i8* %7
%352 = sext i8 %351 to i32
%353 = sub nsw i32 %352, 65
%354 = add nsw i32 %353, 10
%355 = add i32 %350, %354
store i32 %355, i32* %8
%356 = load i8*, i8** %6
%357 = getelementptr inbounds i8, i8* %356, i32 1
store i8* %357, i8** %6
%358 = load i8, i8* %356
store i8 %358, i8* %7
br label %376
359: ; preds = %344
%360 = load i8, i8* %7
%361 = call i64 @islower(i8 signext %360)
%362 = icmp ne i64 %361, 0
br i1 %362, label %363, label %374
363: ; preds = %359
%364 = load i32, i32* %8
%365 = mul i32 %364, 16
%366 = load i8, i8* %7
%367 = sext i8 %366 to i32
%368 = sub nsw i32 %367, 97
%369 = add nsw i32 %368, 10
%370 = add i32 %365, %369
store i32 %370, i32* %8
%371 = load i8*, i8** %6
%372 = getelementptr inbounds i8, i8* %371, i32 1
store i8* %372, i8** %6
%373 = load i8, i8* %371
store i8 %373, i8* %7
br label %375
374: ; preds = %359
br label %378
375: ; preds = %363
br label %376
376: ; preds = %375, %348
br label %377
377: ; preds = %376, %334
br label %326
378: ; preds = %374, %326
%379 = load i32, i32* %8
%380 = load i32*, i32** %5
%381 = getelementptr inbounds i32, i32* %380, i64 0
store i32 %379, i32* %381
store i32 1, i32* %3
br label %470
382: ; preds = %316, %304
%383 = load i8*, i8** %6
%384 = getelementptr inbounds i8, i8* %383, i64 0
%385 = load i8, i8* %384
%386 = call i64 @isdigit(i8 signext %385)
%387 = icmp ne i64 %386, 0
br i1 %387, label %400, label %388
388: ; preds = %382
%389 = load i8*, i8** %6
%390 = getelementptr inbounds i8, i8* %389, i64 1
%391 = load i8, i8* %390
%392 = call i64 @isdigit(i8 signext %391)
%393 = icmp ne i64 %392, 0
br i1 %393, label %394, label %441
394: ; preds = %388
%395 = load i8*, i8** %6
%396 = getelementptr inbounds i8, i8* %395, i64 0
%397 = load i8, i8* %396
%398 = sext i8 %397 to i32
%399 = icmp eq i32 %398, 45
br i1 %399, label %400, label %441
400: ; preds = %394, %382
%401 = load i8*, i8** %6
%402 = getelementptr inbounds i8, i8* %401, i64 0
%403 = load i8, i8* %402
%404 = sext i8 %403 to i32
%405 = icmp eq i32 %404, 45
br i1 %405, label %406, label %410
406: ; preds = %400
store i32 -1, i32* %9
%407 = load i8*, i8** %6
%408 = getelementptr inbounds i8, i8* %407, i32 1
store i8* %408, i8** %6
%409 = load i8, i8* %407
store i8 %409, i8* %7
br label %411
410: ; preds = %400
store i32 1, i32* %9
br label %411
411: ; preds = %410, %406
store i32 0, i32* %8
%412 = load i8*, i8** %6
%413 = getelementptr inbounds i8, i8* %412, i32 1
store i8* %413, i8** %6
%414 = load i8, i8* %412
store i8 %414, i8* %7
br label %415
415: ; preds = %434, %411
%416 = load i8, i8* %7
%417 = sext i8 %416 to i32
%418 = icmp ne i32 %417, 0
br i1 %418, label %419, label %435
419: ; preds = %415
%420 = load i8, i8* %7
%421 = call i64 @isdigit(i8 signext %420)
%422 = icmp ne i64 %421, 0
br i1 %422, label %423, label %433
423: ; preds = %419
%424 = load i32, i32* %8
%425 = mul i32 %424, 10
%426 = load i8, i8* %7
%427 = sext i8 %426 to i32
%428 = sub nsw i32 %427, 48
%429 = add i32 %425, %428
store i32 %429, i32* %8
%430 = load i8*, i8** %6
%431 = getelementptr inbounds i8, i8* %430, i32 1
store i8* %431, i8** %6
%432 = load i8, i8* %430
store i8 %432, i8* %7
br label %434
433: ; preds = %419
br label %435
434: ; preds = %423
br label %415
435: ; preds = %433, %415
%436 = load i32, i32* %8
%437 = load i32, i32* %9
%438 = mul i32 %436, %437
%439 = load i32*, i32** %5
%440 = getelementptr inbounds i32, i32* %439, i64 0
store i32 %438, i32* %440
store i32 1, i32* %3
br label %470
441: ; preds = %394, %388
store i32 0, i32* %11
br label %442
442: ; preds = %456, %441
%443 = load i8*, i8** %6
%444 = load i32, i32* %11
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds i8, i8* %443, i64 %445
%447 = load i8, i8* %446
%448 = sext i8 %447 to i32
%449 = icmp ne i32 %448, 0
br i1 %449, label %450, label %457
450: ; preds = %442
%451 = load i32, i32* %11
%452 = add nsw i32 %451, 1
store i32 %452, i32* %11
%453 = load i32, i32* %11
%454 = icmp sgt i32 %453, 127
br i1 %454, label %455, label %456
455: ; preds = %450
br label %457
456: ; preds = %450
br label %442
457: ; preds = %455, %442
%458 = load i32, i32* %11
%459 = and i32 %458, 3
%460 = icmp ne i32 %459, 0
br i1 %460, label %461, label %465
461: ; preds = %457
%462 = load i32, i32* %11
%463 = and i32 %462, -4
%464 = add nsw i32 %463, 4
store i32 %464, i32* %11
br label %465
465: ; preds = %461, %457
%466 = load i32, i32* %11
%467 = ashr i32 %466, 2
%468 = load i32*, i32** %5
%469 = getelementptr inbounds i32, i32* %468, i64 0
store i32 %467, i32* %469
store i32 2, i32* %3
br label %470
470: ; preds = %465, %435, %378, %297, %254, %223, %222, %207, %174, %85, %53
%471 = load i32, i32* %3
ret i32 %471
}

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