#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 */

/* Variables and functions */
scalar_t__ isalnum(char);
scalar_t__ isspace(char);
int strlen(char *);
int e_mk_info_button(char *str) {
  int i, bg, nd, len = strlen(str);
  if (str[0] == '\n' || str[0] == '\0')
    return (1);
  for (bg = 0; str[bg] && isspace(str[bg]); bg++)
    ;
  for (nd = bg; str[nd] && (str[nd] != ':' ||
                            (!isspace(str[nd + 1]) && (str[nd + 1] != '(') &&
                             (str[nd + 1] != ':' ||
                              (!isspace(str[nd + 2]) && str[nd + 2] != '.'))));
       nd++)
    ;
  if (!str[nd])
    return (-1);
  if (str[nd + 1] != ':') {
    for (nd++; str[nd] && isspace(str[nd]); nd++)
      ;
    if (str[nd] == '(') {
      for (i = len; i >= bg; i--)
        str[i + 1] = str[i];
      str[bg] = 3;
      str[nd + 1] = 5;
      for (nd++; str[nd] && str[nd] && str[nd] != ')'; nd++)
        ;
      if (str[nd])
        str[nd] = 5;
      return (0);
    }
    for (; str[nd] &&
           (str[nd] != '.' || (isalnum(str[nd + 1]) || (str[nd + 1]) == '_'));
         nd++)
      ;
    if (!str[nd])
      return (-1);
    for (bg = nd; str[bg] != ':' || !isspace(str[bg + 1]); bg--)
      ;
    for (bg++; isspace(str[bg]); bg++)
      ;
  }
  for (i = len; i >= nd; i--)
    str[i + 2] = str[i];
  str[nd + 1] = 5;
  for (; i >= bg; i--)
    str[i + 1] = str[i];
  str[bg] = 1;
  return (0);
}


x86 assembly (clang, -O0):
<e_mk_info_button>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1168 <e_mk_info_button+0x38>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1174 <e_mk_info_button+0x44>
movl   $0x1,-0x4(%rbp)
jmp    1692 <e_mk_info_button+0x562>
movl   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x21(%rbp)
je     11b0 <e_mk_info_button+0x80>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x21(%rbp)
mov    -0x21(%rbp),%al
test   $0x1,%al
jne    11c0 <e_mk_info_button+0x90>
jmp    11d3 <e_mk_info_button+0xa3>
jmp    11c5 <e_mk_info_button+0x95>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    117b <e_mk_info_button+0x4b>
mov    -0x18(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x22(%rbp)
je     12cd <e_mk_info_button+0x19d>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x3a,%ecx
mov    %al,-0x23(%rbp)
jne    12c7 <e_mk_info_button+0x197>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x24(%rbp)
jne    12c1 <e_mk_info_button+0x191>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x28,%ecx
mov    %al,-0x24(%rbp)
je     12c1 <e_mk_info_button+0x191>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x3a,%ecx
mov    %al,-0x25(%rbp)
jne    12bb <e_mk_info_button+0x18b>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x26(%rbp)
jne    12b5 <e_mk_info_button+0x185>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
setne  %al
mov    %al,-0x26(%rbp)
mov    -0x26(%rbp),%al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
mov    %al,-0x24(%rbp)
mov    -0x24(%rbp),%al
mov    %al,-0x23(%rbp)
mov    -0x23(%rbp),%al
mov    %al,-0x22(%rbp)
mov    -0x22(%rbp),%al
test   $0x1,%al
jne    12dd <e_mk_info_button+0x1ad>
jmp    12f0 <e_mk_info_button+0x1c0>
jmp    12e2 <e_mk_info_button+0x1b2>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11d9 <e_mk_info_button+0xa9>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
jne    130e <e_mk_info_button+0x1de>
movl   $0xffffffff,-0x4(%rbp)
jmp    1692 <e_mk_info_button+0x562>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
je     15fe <e_mk_info_button+0x4ce>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x27(%rbp)
je     1366 <e_mk_info_button+0x236>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x27(%rbp)
mov    -0x27(%rbp),%al
test   $0x1,%al
jne    1376 <e_mk_info_button+0x246>
jmp    1389 <e_mk_info_button+0x259>
jmp    137b <e_mk_info_button+0x24b>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1331 <e_mk_info_button+0x201>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x28,%eax
jne    1495 <e_mk_info_button+0x365>
mov    -0x20(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jl     13d9 <e_mk_info_button+0x2a9>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    13a4 <e_mk_info_button+0x274>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movb   $0x3,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x5,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x28(%rbp)
je     1448 <e_mk_info_button+0x318>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x28(%rbp)
je     1448 <e_mk_info_button+0x318>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x29,%eax
setne  %al
mov    %al,-0x28(%rbp)
mov    -0x28(%rbp),%al
test   $0x1,%al
jne    1458 <e_mk_info_button+0x328>
jmp    146b <e_mk_info_button+0x33b>
jmp    145d <e_mk_info_button+0x32d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    13ff <e_mk_info_button+0x2cf>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
je     1489 <e_mk_info_button+0x359>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x5,(%rax,%rcx,1)
movl   $0x0,-0x4(%rbp)
jmp    1692 <e_mk_info_button+0x562>
jmp    149a <e_mk_info_button+0x36a>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x29(%rbp)
je     151c <e_mk_info_button+0x3ec>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x2e,%ecx
mov    %al,-0x2a(%rbp)
jne    1516 <e_mk_info_button+0x3e6>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isalnum@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x2b(%rbp)
jne    1510 <e_mk_info_button+0x3e0>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5f,%eax
sete   %al
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    152c <e_mk_info_button+0x3fc>
jmp    153f <e_mk_info_button+0x40f>
jmp    1531 <e_mk_info_button+0x401>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    149a <e_mk_info_button+0x36a>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
jne    155d <e_mk_info_button+0x42d>
movl   $0xffffffff,-0x4(%rbp)
jmp    1692 <e_mk_info_button+0x562>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x3a,%ecx
mov    %al,-0x2c(%rbp)
jne    159f <e_mk_info_button+0x46f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0x2c(%rbp)
mov    -0x2c(%rbp),%al
test   $0x1,%al
jne    15af <e_mk_info_button+0x47f>
jmp    15c2 <e_mk_info_button+0x492>
jmp    15b4 <e_mk_info_button+0x484>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1563 <e_mk_info_button+0x433>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <isspace@plt>
cmp    $0x0,%rax
je     15f9 <e_mk_info_button+0x4c9>
jmp    15eb <e_mk_info_button+0x4bb>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    15cb <e_mk_info_button+0x49b>
jmp    15fe <e_mk_info_button+0x4ce>
mov    -0x20(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     1639 <e_mk_info_button+0x509>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    1604 <e_mk_info_button+0x4d4>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x5,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jl     167f <e_mk_info_button+0x54f>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    164a <e_mk_info_button+0x51a>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movb   $0x1,(%rax,%rcx,1)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<e_mk_info_button>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r12
call   1030 <strlen@plt>
mov    %eax,%r14d
mov    (%r12),%al
mov    $0x1,%r15d
test   %al,%al
je     14fa <e_mk_info_button+0x3ca>
cmp    $0xa,%al
je     14fa <e_mk_info_button+0x3ca>
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsbl %al,%edi
call   1050 <isspace@plt>
test   %rax,%rax
je     118b <e_mk_info_button+0x5b>
movzbl 0x1(%r12,%rbx,1),%eax
add    $0x1,%rbx
test   %al,%al
jne    1170 <e_mk_info_button+0x40>
mov    %ebx,%r15d
mov    %r15,%rbp
jmp    11a4 <e_mk_info_button+0x74>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x28,%al
je     1205 <e_mk_info_button+0xd5>
mov    %rbp,%r13
movzbl (%r12,%rbp,1),%eax
cmp    $0x3a,%al
je     11d0 <e_mk_info_button+0xa0>
test   %al,%al
je     1263 <e_mk_info_button+0x133>
add    $0x1,%r13
mov    %r13,%rbp
jmp    11a4 <e_mk_info_button+0x74>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsbl 0x1(%r12,%r13,1),%edi
call   1050 <isspace@plt>
test   %rax,%rax
jne    1205 <e_mk_info_button+0xd5>
lea    0x1(%r13),%rbp
movzbl (%r12,%rbp,1),%eax
cmp    $0x3a,%al
jne    11a0 <e_mk_info_button+0x70>
movsbl 0x2(%r13,%r12,1),%edi
call   1050 <isspace@plt>
test   %rax,%rax
jne    1205 <e_mk_info_button+0xd5>
cmpb   $0x2e,0x2(%r12,%r13,1)
jne    11a4 <e_mk_info_button+0x74>
mov    %r15,(%rsp)
mov    %r13d,%eax
mov    $0xffffffff,%r15d
cmpb   $0x0,(%r12,%rax,1)
je     14fa <e_mk_info_button+0x3ca>
lea    0x1(%r13),%ebp
mov    (%r12,%rbp,1),%al
test   %al,%al
je     1309 <e_mk_info_button+0x1d9>
cmp    $0x3a,%al
je     13a5 <e_mk_info_button+0x275>
add    $0x1,%rbp
mov    %rbp,%r13
nopl   0x0(%rax)
movsbl %al,%edi
call   1050 <isspace@plt>
test   %rax,%rax
je     126e <e_mk_info_button+0x13e>
movzbl (%r12,%r13,1),%eax
add    $0x1,%r13
test   %al,%al
jne    1240 <e_mk_info_button+0x110>
add    $0xffffffff,%r13d
jmp    1306 <e_mk_info_button+0x1d6>
mov    $0xffffffff,%r15d
jmp    14fa <e_mk_info_button+0x3ca>
lea    -0x1(%r13),%ebp
cmpb   $0x28,(%r12,%rbp,1)
jne    1309 <e_mk_info_button+0x1d9>
mov    %r14d,%edx
sub    %ebx,%edx
mov    (%rsp),%rdi
jl     12ce <e_mk_info_button+0x19e>
movslq %r14d,%rax
movslq %ebx,%rcx
add    $0x1,%edx
mov    %rax,%rsi
sub    %rcx,%rsi
and    $0x3,%rdx
je     12b1 <e_mk_info_button+0x181>
movzbl (%r12,%rax,1),%ebx
mov    %bl,0x1(%r12,%rax,1)
add    $0xffffffffffffffff,%rax
add    $0xffffffffffffffff,%rdx
jne    129d <e_mk_info_button+0x16d>
cmp    $0x3,%rsi
jb     12ce <e_mk_info_button+0x19e>
add    $0x1,%rax
mov    -0x4(%r12,%rax,1),%edx
mov    %edx,-0x3(%r12,%rax,1)
add    $0xfffffffffffffffc,%rax
cmp    %rcx,%rax
jg     12bb <e_mk_info_button+0x18b>
movb   $0x3,(%r12,%rdi,1)
mov    %r13d,%eax
movb   $0x5,(%r12,%rax,1)
mov    $0x5,%cl
test   %cl,%cl
je     14f7 <e_mk_info_button+0x3c7>
cmp    $0x29,%cl
je     12fd <e_mk_info_button+0x1cd>
movzbl 0x1(%r12,%rax,1),%ecx
add    $0x1,%rax
test   %cl,%cl
jne    12e5 <e_mk_info_button+0x1b5>
jmp    14f7 <e_mk_info_button+0x3c7>
mov    %eax,%eax
mov    $0x5,%dl
jmp    14f3 <e_mk_info_button+0x3c3>
mov    %r13,%rbp
mov    %rbp,%r13
movzbl (%r12,%rbp,1),%eax
cmp    $0x2e,%al
jne    134e <e_mk_info_button+0x21e>
lea    0x1(%r13),%rbp
movsbl 0x1(%r12,%r13,1),%edi
call   1040 <isalnum@plt>
test   %rax,%rax
jne    1309 <e_mk_info_button+0x1d9>
cmpb   $0x5f,(%r12,%rbp,1)
je     1309 <e_mk_info_button+0x1d9>
mov    %r13d,%eax
cmpb   $0x0,(%r12,%rax,1)
je     14fa <e_mk_info_button+0x3ca>
movslq %r13d,%rax
lea    (%r12,%rax,1),%rbp
add    $0x1,%rbp
mov    %r13d,%ebx
jmp    1367 <e_mk_info_button+0x237>
test   %al,%al
je     14fa <e_mk_info_button+0x3ca>
add    $0x1,%r13
jmp    1306 <e_mk_info_button+0x1d6>
nopl   0x0(%rax)
add    $0xffffffff,%ebx
add    $0xffffffffffffffff,%rbp
cmpb   $0x3a,-0x1(%rbp)
jne    1360 <e_mk_info_button+0x230>
movsbl 0x0(%rbp),%edi
call   1050 <isspace@plt>
test   %rax,%rax
je     1360 <e_mk_info_button+0x230>
lea    0x1(%rbx),%eax
movslq %eax,%rbp
add    %r12,%rbp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsbl 0x0(%rbp),%edi
call   1050 <isspace@plt>
add    $0x1,%ebx
add    $0x1,%rbp
test   %rax,%rax
jne    1390 <e_mk_info_button+0x260>
cmp    %r13d,%r14d
jl     1486 <e_mk_info_button+0x356>
movslq %r14d,%r14
movslq %r13d,%rax
mov    %r14,%r9
sub    %rax,%r9
add    $0x1,%r9
cmp    $0x10,%r9
jb     146d <e_mk_info_button+0x33d>
mov    %r9,%r8
and    $0xfffffffffffffff0,%r8
lea    -0x10(%r8),%rdi
mov    %rdi,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
mov    %esi,%ecx
and    $0x3,%ecx
cmp    $0x30,%rdi
jae    13ed <e_mk_info_button+0x2bd>
xor    %edi,%edi
jmp    1435 <e_mk_info_button+0x305>
and    $0xfffffffffffffffc,%rsi
lea    (%r14,%r12,1),%rbp
add    $0xfffffffffffffff3,%rbp
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
movups -0x32(%rbp,%rdi,1),%xmm0
movups -0x22(%rbp,%rdi,1),%xmm1
movups -0x12(%rbp,%rdi,1),%xmm2
movups -0x2(%rbp,%rdi,1),%xmm3
movups %xmm3,0x0(%rbp,%rdi,1)
movups %xmm2,-0x10(%rbp,%rdi,1)
movups %xmm1,-0x20(%rbp,%rdi,1)
movups %xmm0,-0x30(%rbp,%rdi,1)
add    $0xffffffffffffffc0,%rdi
add    $0xfffffffffffffffc,%rsi
jne    1400 <e_mk_info_button+0x2d0>
neg    %rdi
test   %rcx,%rcx
je     1465 <e_mk_info_button+0x335>
mov    %r14,%rsi
sub    %rdi,%rsi
add    %r12,%rsi
add    $0xfffffffffffffff3,%rsi
shl    $0x4,%rcx
xor    %edi,%edi
nopl   (%rax)
movups -0x2(%rsi,%rdi,1),%xmm0
movups %xmm0,(%rsi,%rdi,1)
add    $0xfffffffffffffff0,%rdi
mov    %rcx,%rdx
add    %rdi,%rdx
jne    1450 <e_mk_info_button+0x320>
sub    %r8,%r14
cmp    %r8,%r9
je     1486 <e_mk_info_button+0x356>
mov    %r14,%rcx
movzbl (%r12,%rcx,1),%edx
mov    %dl,0x2(%r12,%rcx,1)
lea    -0x1(%rcx),%r14
cmp    %rax,%rcx
mov    %r14,%rcx
jg     1470 <e_mk_info_button+0x340>
add    $0x1,%r13d
movslq %r13d,%rax
movb   $0x5,(%r12,%rax,1)
mov    %r14d,%edx
sub    %ebx,%edx
jge    14a0 <e_mk_info_button+0x370>
movslq %ebx,%rax
mov    $0x1,%dl
jmp    14f3 <e_mk_info_button+0x3c3>
movslq %r14d,%rcx
movslq %ebx,%rax
add    $0x1,%edx
mov    %rcx,%rsi
sub    %rax,%rsi
and    $0x3,%rdx
je     14d4 <e_mk_info_button+0x3a4>
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r12,%rcx,1),%ebx
mov    %bl,0x1(%r12,%rcx,1)
add    $0xffffffffffffffff,%rcx
add    $0xffffffffffffffff,%rdx
jne    14c0 <e_mk_info_button+0x390>
mov    $0x1,%dl
cmp    $0x3,%rsi
jb     14f3 <e_mk_info_button+0x3c3>
add    $0x1,%rcx
mov    -0x4(%r12,%rcx,1),%esi
mov    %esi,-0x3(%r12,%rcx,1)
add    $0xfffffffffffffffc,%rcx
cmp    %rax,%rcx
jg     14e0 <e_mk_info_button+0x3b0>
mov    %dl,(%r12,%rax,1)
xor    %r15d,%r15d
mov    %r15d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @e_mk_info_button(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i8* %0, i8** %3
%8 = load i8*, i8** %3
%9 = call i32 @strlen(i8* %8)
store i32 %9, i32* %7
%10 = load i8*, i8** %3
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = load i8, i8* %11
%13 = sext i8 %12 to i32
%14 = icmp eq i32 %13, 10
br i1 %14, label %21, label %15
15: ; preds = %1
%16 = load i8*, i8** %3
%17 = getelementptr inbounds i8, i8* %16, i64 0
%18 = load i8, i8* %17
%19 = sext i8 %18 to i32
%20 = icmp eq i32 %19, 0
br i1 %20, label %21, label %22
21: ; preds = %15, %1
store i32 1, i32* %2
br label %391
22: ; preds = %15
store i32 0, i32* %5
br label %23
23: ; preds = %42, %22
%24 = load i8*, i8** %3
%25 = load i32, i32* %5
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i8, i8* %24, i64 %26
%28 = load i8, i8* %27
%29 = sext i8 %28 to i32
%30 = icmp ne i32 %29, 0
br i1 %30, label %31, label %39
31: ; preds = %23
%32 = load i8*, i8** %3
%33 = load i32, i32* %5
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds i8, i8* %32, i64 %34
%36 = load i8, i8* %35
%37 = call i64 @isspace(i8 signext %36)
%38 = icmp ne i64 %37, 0
br label %39
39: ; preds = %31, %23
%40 = phi i1 [ false, %23 ], [ %38, %31 ]
br i1 %40, label %41, label %45
41: ; preds = %39
br label %42
42: ; preds = %41
%43 = load i32, i32* %5
%44 = add nsw i32 %43, 1
store i32 %44, i32* %5
br label %23
45: ; preds = %39
%46 = load i32, i32* %5
store i32 %46, i32* %6
br label %47
47: ; preds = %119, %45
%48 = load i8*, i8** %3
%49 = load i32, i32* %6
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i8, i8* %48, i64 %50
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = icmp ne i32 %53, 0
br i1 %54, label %55, label %116
55: ; preds = %47
%56 = load i8*, i8** %3
%57 = load i32, i32* %6
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %56, i64 %58
%60 = load i8, i8* %59
%61 = sext i8 %60 to i32
%62 = icmp ne i32 %61, 58
br i1 %62, label %114, label %63
63: ; preds = %55
%64 = load i8*, i8** %3
%65 = load i32, i32* %6
%66 = add nsw i32 %65, 1
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds i8, i8* %64, i64 %67
%69 = load i8, i8* %68
%70 = call i64 @isspace(i8 signext %69)
%71 = icmp ne i64 %70, 0
br i1 %71, label %112, label %72
72: ; preds = %63
%73 = load i8*, i8** %3
%74 = load i32, i32* %6
%75 = add nsw i32 %74, 1
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i8, i8* %73, i64 %76
%78 = load i8, i8* %77
%79 = sext i8 %78 to i32
%80 = icmp ne i32 %79, 40
br i1 %80, label %81, label %112
81: ; preds = %72
%82 = load i8*, i8** %3
%83 = load i32, i32* %6
%84 = add nsw i32 %83, 1
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds i8, i8* %82, i64 %85
%87 = load i8, i8* %86
%88 = sext i8 %87 to i32
%89 = icmp ne i32 %88, 58
br i1 %89, label %110, label %90
90: ; preds = %81
%91 = load i8*, i8** %3
%92 = load i32, i32* %6
%93 = add nsw i32 %92, 2
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i8, i8* %91, i64 %94
%96 = load i8, i8* %95
%97 = call i64 @isspace(i8 signext %96)
%98 = icmp ne i64 %97, 0
br i1 %98, label %108, label %99
99: ; preds = %90
%100 = load i8*, i8** %3
%101 = load i32, i32* %6
%102 = add nsw i32 %101, 2
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds i8, i8* %100, i64 %103
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = icmp ne i32 %106, 46
br label %108
108: ; preds = %99, %90
%109 = phi i1 [ false, %90 ], [ %107, %99 ]
br label %110
110: ; preds = %108, %81
%111 = phi i1 [ true, %81 ], [ %109, %108 ]
br label %112
112: ; preds = %110, %72, %63
%113 = phi i1 [ false, %72 ], [ false, %63 ], [ %111, %110 ]
br label %114
114: ; preds = %112, %55
%115 = phi i1 [ true, %55 ], [ %113, %112 ]
br label %116
116: ; preds = %114, %47
%117 = phi i1 [ false, %47 ], [ %115, %114 ]
br i1 %117, label %118, label %122
118: ; preds = %116
br label %119
119: ; preds = %118
%120 = load i32, i32* %6
%121 = add nsw i32 %120, 1
store i32 %121, i32* %6
br label %47
122: ; preds = %116
%123 = load i8*, i8** %3
%124 = load i32, i32* %6
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds i8, i8* %123, i64 %125
%127 = load i8, i8* %126
%128 = icmp ne i8 %127, 0
br i1 %128, label %130, label %129
129: ; preds = %122
store i32 -1, i32* %2
br label %391
130: ; preds = %122
%131 = load i8*, i8** %3
%132 = load i32, i32* %6
%133 = add nsw i32 %132, 1
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds i8, i8* %131, i64 %134
%136 = load i8, i8* %135
%137 = sext i8 %136 to i32
%138 = icmp ne i32 %137, 58
br i1 %138, label %139, label %342
139: ; preds = %130
%140 = load i32, i32* %6
%141 = add nsw i32 %140, 1
store i32 %141, i32* %6
br label %142
142: ; preds = %161, %139
%143 = load i8*, i8** %3
%144 = load i32, i32* %6
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds i8, i8* %143, i64 %145
%147 = load i8, i8* %146
%148 = sext i8 %147 to i32
%149 = icmp ne i32 %148, 0
br i1 %149, label %150, label %158
150: ; preds = %142
%151 = load i8*, i8** %3
%152 = load i32, i32* %6
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds i8, i8* %151, i64 %153
%155 = load i8, i8* %154
%156 = call i64 @isspace(i8 signext %155)
%157 = icmp ne i64 %156, 0
br label %158
158: ; preds = %150, %142
%159 = phi i1 [ false, %142 ], [ %157, %150 ]
br i1 %159, label %160, label %164
160: ; preds = %158
br label %161
161: ; preds = %160
%162 = load i32, i32* %6
%163 = add nsw i32 %162, 1
store i32 %163, i32* %6
br label %142
164: ; preds = %158
%165 = load i8*, i8** %3
%166 = load i32, i32* %6
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds i8, i8* %165, i64 %167
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = icmp eq i32 %170, 40
br i1 %171, label %172, label %247
172: ; preds = %164
%173 = load i32, i32* %7
store i32 %173, i32* %4
br label %174
174: ; preds = %189, %172
%175 = load i32, i32* %4
%176 = load i32, i32* %5
%177 = icmp sge i32 %175, %176
br i1 %177, label %178, label %192
178: ; preds = %174
%179 = load i8*, i8** %3
%180 = load i32, i32* %4
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds i8, i8* %179, i64 %181
%183 = load i8, i8* %182
%184 = load i8*, i8** %3
%185 = load i32, i32* %4
%186 = add nsw i32 %185, 1
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds i8, i8* %184, i64 %187
store i8 %183, i8* %188
br label %189
189: ; preds = %178
%190 = load i32, i32* %4
%191 = add nsw i32 %190, -1
store i32 %191, i32* %4
br label %174
192: ; preds = %174
%193 = load i8*, i8** %3
%194 = load i32, i32* %5
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds i8, i8* %193, i64 %195
store i8 3, i8* %196
%197 = load i8*, i8** %3
%198 = load i32, i32* %6
%199 = add nsw i32 %198, 1
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds i8, i8* %197, i64 %200
store i8 5, i8* %201
%202 = load i32, i32* %6
%203 = add nsw i32 %202, 1
store i32 %203, i32* %6
br label %204
204: ; preds = %231, %192
%205 = load i8*, i8** %3
%206 = load i32, i32* %6
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds i8, i8* %205, i64 %207
%209 = load i8, i8* %208
%210 = sext i8 %209 to i32
%211 = icmp ne i32 %210, 0
br i1 %211, label %212, label %228
212: ; preds = %204
%213 = load i8*, i8** %3
%214 = load i32, i32* %6
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds i8, i8* %213, i64 %215
%217 = load i8, i8* %216
%218 = sext i8 %217 to i32
%219 = icmp ne i32 %218, 0
br i1 %219, label %220, label %228
220: ; preds = %212
%221 = load i8*, i8** %3
%222 = load i32, i32* %6
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds i8, i8* %221, i64 %223
%225 = load i8, i8* %224
%226 = sext i8 %225 to i32
%227 = icmp ne i32 %226, 41
br label %228
228: ; preds = %220, %212, %204
%229 = phi i1 [ false, %212 ], [ false, %204 ], [ %227, %220 ]
br i1 %229, label %230, label %234
230: ; preds = %228
br label %231
231: ; preds = %230
%232 = load i32, i32* %6
%233 = add nsw i32 %232, 1
store i32 %233, i32* %6
br label %204
234: ; preds = %228
%235 = load i8*, i8** %3
%236 = load i32, i32* %6
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds i8, i8* %235, i64 %237
%239 = load i8, i8* %238
%240 = icmp ne i8 %239, 0
br i1 %240, label %241, label %246
241: ; preds = %234
%242 = load i8*, i8** %3
%243 = load i32, i32* %6
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds i8, i8* %242, i64 %244
store i8 5, i8* %245
br label %246
246: ; preds = %241, %234
store i32 0, i32* %2
br label %391
247: ; preds = %164
br label %248
248: ; preds = %289, %247
%249 = load i8*, i8** %3
%250 = load i32, i32* %6
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds i8, i8* %249, i64 %251
%253 = load i8, i8* %252
%254 = sext i8 %253 to i32
%255 = icmp ne i32 %254, 0
br i1 %255, label %256, label %286
256: ; preds = %248
%257 = load i8*, i8** %3
%258 = load i32, i32* %6
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds i8, i8* %257, i64 %259
%261 = load i8, i8* %260
%262 = sext i8 %261 to i32
%263 = icmp ne i32 %262, 46
br i1 %263, label %284, label %264
264: ; preds = %256
%265 = load i8*, i8** %3
%266 = load i32, i32* %6
%267 = add nsw i32 %266, 1
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds i8, i8* %265, i64 %268
%270 = load i8, i8* %269
%271 = call i64 @isalnum(i8 signext %270)
%272 = icmp ne i64 %271, 0
br i1 %272, label %282, label %273
273: ; preds = %264
%274 = load i8*, i8** %3
%275 = load i32, i32* %6
%276 = add nsw i32 %275, 1
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds i8, i8* %274, i64 %277
%279 = load i8, i8* %278
%280 = sext i8 %279 to i32
%281 = icmp eq i32 %280, 95
br label %282
282: ; preds = %273, %264
%283 = phi i1 [ true, %264 ], [ %281, %273 ]
br label %284
284: ; preds = %282, %256
%285 = phi i1 [ true, %256 ], [ %283, %282 ]
br label %286
286: ; preds = %284, %248
%287 = phi i1 [ false, %248 ], [ %285, %284 ]
br i1 %287, label %288, label %292
288: ; preds = %286
br label %289
289: ; preds = %288
%290 = load i32, i32* %6
%291 = add nsw i32 %290, 1
store i32 %291, i32* %6
br label %248
292: ; preds = %286
%293 = load i8*, i8** %3
%294 = load i32, i32* %6
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds i8, i8* %293, i64 %295
%297 = load i8, i8* %296
%298 = icmp ne i8 %297, 0
br i1 %298, label %300, label %299
299: ; preds = %292
store i32 -1, i32* %2
br label %391
300: ; preds = %292
%301 = load i32, i32* %6
store i32 %301, i32* %5
br label %302
302: ; preds = %323, %300
%303 = load i8*, i8** %3
%304 = load i32, i32* %5
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds i8, i8* %303, i64 %305
%307 = load i8, i8* %306
%308 = sext i8 %307 to i32
%309 = icmp ne i32 %308, 58
br i1 %309, label %320, label %310
310: ; preds = %302
%311 = load i8*, i8** %3
%312 = load i32, i32* %5
%313 = add nsw i32 %312, 1
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds i8, i8* %311, i64 %314
%316 = load i8, i8* %315
%317 = call i64 @isspace(i8 signext %316)
%318 = icmp ne i64 %317, 0
%319 = xor i1 %318, true
br label %320
320: ; preds = %310, %302
%321 = phi i1 [ true, %302 ], [ %319, %310 ]
br i1 %321, label %322, label %326
322: ; preds = %320
br label %323
323: ; preds = %322
%324 = load i32, i32* %5
%325 = add nsw i32 %324, -1
store i32 %325, i32* %5
br label %302
326: ; preds = %320
%327 = load i32, i32* %5
%328 = add nsw i32 %327, 1
store i32 %328, i32* %5
br label %329
329: ; preds = %338, %326
%330 = load i8*, i8** %3
%331 = load i32, i32* %5
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds i8, i8* %330, i64 %332
%334 = load i8, i8* %333
%335 = call i64 @isspace(i8 signext %334)
%336 = icmp ne i64 %335, 0
br i1 %336, label %337, label %341
337: ; preds = %329
br label %338
338: ; preds = %337
%339 = load i32, i32* %5
%340 = add nsw i32 %339, 1
store i32 %340, i32* %5
br label %329
341: ; preds = %329
br label %342
342: ; preds = %341, %130
%343 = load i32, i32* %7
store i32 %343, i32* %4
br label %344
344: ; preds = %359, %342
%345 = load i32, i32* %4
%346 = load i32, i32* %6
%347 = icmp sge i32 %345, %346
br i1 %347, label %348, label %362
348: ; preds = %344
%349 = load i8*, i8** %3
%350 = load i32, i32* %4
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds i8, i8* %349, i64 %351
%353 = load i8, i8* %352
%354 = load i8*, i8** %3
%355 = load i32, i32* %4
%356 = add nsw i32 %355, 2
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds i8, i8* %354, i64 %357
store i8 %353, i8* %358
br label %359
359: ; preds = %348
%360 = load i32, i32* %4
%361 = add nsw i32 %360, -1
store i32 %361, i32* %4
br label %344
362: ; preds = %344
%363 = load i8*, i8** %3
%364 = load i32, i32* %6
%365 = add nsw i32 %364, 1
%366 = sext i32 %365 to i64
%367 = getelementptr inbounds i8, i8* %363, i64 %366
store i8 5, i8* %367
br label %368
368: ; preds = %383, %362
%369 = load i32, i32* %4
%370 = load i32, i32* %5
%371 = icmp sge i32 %369, %370
br i1 %371, label %372, label %386
372: ; preds = %368
%373 = load i8*, i8** %3
%374 = load i32, i32* %4
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds i8, i8* %373, i64 %375
%377 = load i8, i8* %376
%378 = load i8*, i8** %3
%379 = load i32, i32* %4
%380 = add nsw i32 %379, 1
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds i8, i8* %378, i64 %381
store i8 %377, i8* %382
br label %383
383: ; preds = %372
%384 = load i32, i32* %4
%385 = add nsw i32 %384, -1
store i32 %385, i32* %4
br label %368
386: ; preds = %368
%387 = load i8*, i8** %3
%388 = load i32, i32* %5
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds i8, i8* %387, i64 %389
store i8 1, i8* %390
store i32 0, i32* %2
br label %391
391: ; preds = %386, %299, %246, %129, %21
%392 = load i32, i32* %2
ret i32 %392
}

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