char *ini(const char *s) {
  char *map = 0;
  int mapcap = 0, maplen = 0;
  enum { DEL, REM, TAG, KEY, SUB, VAL } fsm = DEL;
  const char *cut[6] = {0}, *end[6] = {0};
  while (*s) {
    while (*s && (*s == ' ' || *s == '\t' || *s == '\r' || *s == '\n'))
      ++s;
    if (*s == ';')
      cut[fsm = REM] = ++s;
    else if (*s == '[')
      cut[fsm = TAG] = ++s;
    else if (*s == '+')
      cut[fsm = SUB] = ++s;
    else if (*s == '=')
      cut[fsm = VAL] = ++s;
    else if (*s > ' ' && *s <= 'z' && *s != ']')
      cut[fsm = KEY] = cut[SUB] = end[SUB] = s;
    else {
      ++s;
      continue;
    }
    if (fsm == REM) {
      while (*s && *s != '\r' && *s != '\n')
        ++s;
    } else if (fsm == TAG) {
      while (*s && *s != '\r' && *s != '\n' && *s != ']')
        ++s;
      end[fsm] = s;
    } else if (fsm == KEY) {
      while (*s && *s > ' ' && *s <= 'z' && *s != '=')
        ++s;
      end[fsm] = s;
    } else if (fsm == SUB) {
      while (*s && *s > ' ' && *s <= 'z' && *s != '=')
        ++s;
      end[fsm] = s;
    } else if (fsm == VAL) {
      while (*s && *s >= ' ' && *s <= 'z' && *s != ';')
        ++s;
      end[fsm] = s;
      while (end[fsm][-1] == ' ')
        --end[fsm];
      char buf[256] = {0}, *key = buf;
      if (end[TAG] - cut[TAG])
        key += sprintf(key, "%.*s.", (int)(end[TAG] - cut[TAG]), cut[TAG]);
      if (end[KEY] - cut[KEY])
        key += sprintf(key, "%.*s", (int)(end[KEY] - cut[KEY]), cut[KEY]);
      if (end[SUB] - cut[SUB])
        key += sprintf(key, ".%.*s", (int)(end[SUB] - cut[SUB]), cut[SUB]);
      int reqlen = (key - buf) + 1 + (end[VAL] - cut[VAL]) + 1 + 1;
      if ((reqlen + maplen) >= mapcap)
        map = realloc(map, mapcap += reqlen + 512);
      sprintf(map + maplen, "%.*s%c%.*s%c%c", (int)(key - buf), buf, 0,
              (int)(end[VAL] - cut[VAL]), cut[VAL], 0, 0);
      maplen += reqlen - 1;
    }
  }
  return map;
}


x86 assembly (clang, -O0):
<ini>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1b0,%rsp
mov    %rdi,-0x8(%rbp)
movq   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
lea    -0x50(%rbp),%rdi
xor    %esi,%esi
mov    $0x30,%edx
call   1030 <memset@plt>
lea    -0x80(%rbp),%rdi
xor    %esi,%esi
mov    $0x30,%edx
call   1030 <memset@plt>
mov    -0x8(%rbp),%rax
cmpb   $0x0,(%rax)
je     186b <ini+0x73b>
jmp    118e <ini+0x5e>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x18d(%rbp)
je     120d <ini+0xdd>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x18e(%rbp)
je     1201 <ini+0xd1>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x18e(%rbp)
je     1201 <ini+0xd1>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x18e(%rbp)
je     1201 <ini+0xd1>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
sete   %al
mov    %al,-0x18e(%rbp)
mov    -0x18e(%rbp),%al
mov    %al,-0x18d(%rbp)
mov    -0x18d(%rbp),%al
test   $0x1,%al
jne    1220 <ini+0xf0>
jmp    1231 <ini+0x101>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    118e <ini+0x5e>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
jne    125d <ini+0x12d>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movl   $0x1,-0x1c(%rbp)
mov    %rax,-0x48(%rbp)
jmp    1352 <ini+0x222>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5b,%eax
jne    1289 <ini+0x159>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movl   $0x2,-0x1c(%rbp)
mov    %rax,-0x40(%rbp)
jmp    134d <ini+0x21d>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    12b5 <ini+0x185>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movl   $0x4,-0x1c(%rbp)
mov    %rax,-0x30(%rbp)
jmp    1348 <ini+0x218>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    12e1 <ini+0x1b1>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movl   $0x5,-0x1c(%rbp)
mov    %rax,-0x28(%rbp)
jmp    1343 <ini+0x213>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jle    132d <ini+0x1fd>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7a,%eax
jg     132d <ini+0x1fd>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
je     132d <ini+0x1fd>
mov    -0x8(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    %rax,-0x30(%rbp)
movl   $0x3,-0x1c(%rbp)
mov    %rax,-0x38(%rbp)
jmp    133e <ini+0x20e>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    117c <ini+0x4c>
jmp    1343 <ini+0x213>
jmp    1348 <ini+0x218>
jmp    134d <ini+0x21d>
jmp    1352 <ini+0x222>
cmpl   $0x1,-0x1c(%rbp)
jne    13cd <ini+0x29d>
jmp    1361 <ini+0x231>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x18f(%rbp)
je     13a4 <ini+0x274>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xd,%ecx
mov    %al,-0x18f(%rbp)
je     13a4 <ini+0x274>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x18f(%rbp)
mov    -0x18f(%rbp),%al
test   $0x1,%al
jne    13b7 <ini+0x287>
jmp    13c8 <ini+0x298>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1361 <ini+0x231>
jmp    1866 <ini+0x736>
cmpl   $0x2,-0x1c(%rbp)
jne    146c <ini+0x33c>
jmp    13dc <ini+0x2ac>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x190(%rbp)
je     1437 <ini+0x307>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xd,%ecx
mov    %al,-0x190(%rbp)
je     1437 <ini+0x307>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x190(%rbp)
je     1437 <ini+0x307>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
setne  %al
mov    %al,-0x190(%rbp)
mov    -0x190(%rbp),%al
test   $0x1,%al
jne    144a <ini+0x31a>
jmp    145b <ini+0x32b>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    13dc <ini+0x2ac>
mov    -0x8(%rbp),%rcx
mov    -0x1c(%rbp),%eax
mov    %rcx,-0x80(%rbp,%rax,8)
jmp    1861 <ini+0x731>
cmpl   $0x3,-0x1c(%rbp)
jne    150b <ini+0x3db>
jmp    147b <ini+0x34b>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x191(%rbp)
je     14d6 <ini+0x3a6>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x191(%rbp)
jle    14d6 <ini+0x3a6>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x7a,%ecx
mov    %al,-0x191(%rbp)
jg     14d6 <ini+0x3a6>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
setne  %al
mov    %al,-0x191(%rbp)
mov    -0x191(%rbp),%al
test   $0x1,%al
jne    14e9 <ini+0x3b9>
jmp    14fa <ini+0x3ca>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    147b <ini+0x34b>
mov    -0x8(%rbp),%rcx
mov    -0x1c(%rbp),%eax
mov    %rcx,-0x80(%rbp,%rax,8)
jmp    185c <ini+0x72c>
cmpl   $0x4,-0x1c(%rbp)
jne    15aa <ini+0x47a>
jmp    151a <ini+0x3ea>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x192(%rbp)
je     1575 <ini+0x445>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x192(%rbp)
jle    1575 <ini+0x445>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x7a,%ecx
mov    %al,-0x192(%rbp)
jg     1575 <ini+0x445>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
setne  %al
mov    %al,-0x192(%rbp)
mov    -0x192(%rbp),%al
test   $0x1,%al
jne    1588 <ini+0x458>
jmp    1599 <ini+0x469>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    151a <ini+0x3ea>
mov    -0x8(%rbp),%rcx
mov    -0x1c(%rbp),%eax
mov    %rcx,-0x80(%rbp,%rax,8)
jmp    1857 <ini+0x727>
cmpl   $0x5,-0x1c(%rbp)
jne    1852 <ini+0x722>
jmp    15b9 <ini+0x489>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x193(%rbp)
je     1614 <ini+0x4e4>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x193(%rbp)
jl     1614 <ini+0x4e4>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x7a,%ecx
mov    %al,-0x193(%rbp)
jg     1614 <ini+0x4e4>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
setne  %al
mov    %al,-0x193(%rbp)
mov    -0x193(%rbp),%al
test   $0x1,%al
jne    1627 <ini+0x4f7>
jmp    1638 <ini+0x508>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    15b9 <ini+0x489>
mov    -0x8(%rbp),%rcx
mov    -0x1c(%rbp),%eax
mov    %rcx,-0x80(%rbp,%rax,8)
mov    -0x1c(%rbp),%eax
mov    -0x80(%rbp,%rax,8),%rax
movsbl -0x1(%rax),%eax
cmp    $0x20,%eax
jne    166f <ini+0x53f>
mov    -0x1c(%rbp),%eax
mov    -0x80(%rbp,%rax,8),%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x80(%rbp,%rax,8)
jmp    1644 <ini+0x514>
lea    -0x180(%rbp),%rdi
xor    %esi,%esi
mov    $0x100,%edx
call   1030 <memset@plt>
lea    -0x180(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x70(%rbp),%rax
mov    -0x40(%rbp),%rcx
sub    %rcx,%rax
cmp    $0x0,%rax
je     16e1 <ini+0x5b1>
mov    -0x188(%rbp),%rdi
mov    -0x70(%rbp),%rax
mov    -0x40(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%edx
mov    -0x40(%rbp),%rcx
lea    0x93c(%rip),%rsi
mov    $0x0,%al
call   1050 <sprintf@plt>
mov    %eax,%ecx
mov    -0x188(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x188(%rbp)
mov    -0x68(%rbp),%rax
mov    -0x38(%rbp),%rcx
sub    %rcx,%rax
cmp    $0x0,%rax
je     1732 <ini+0x602>
mov    -0x188(%rbp),%rdi
mov    -0x68(%rbp),%rax
mov    -0x38(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%edx
mov    -0x38(%rbp),%rcx
lea    0x8f2(%rip),%rsi
mov    $0x0,%al
call   1050 <sprintf@plt>
mov    %eax,%ecx
mov    -0x188(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x188(%rbp)
mov    -0x60(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    %rcx,%rax
cmp    $0x0,%rax
je     1783 <ini+0x653>
mov    -0x188(%rbp),%rdi
mov    -0x60(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%edx
mov    -0x30(%rbp),%rcx
lea    0x8a0(%rip),%rsi
mov    $0x0,%al
call   1050 <sprintf@plt>
mov    %eax,%ecx
mov    -0x188(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x188(%rbp)
mov    -0x188(%rbp),%rax
lea    -0x180(%rbp),%rcx
sub    %rcx,%rax
add    $0x1,%rax
mov    -0x58(%rbp),%rcx
mov    -0x28(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
add    $0x1,%rax
add    $0x1,%rax
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%eax
add    -0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     17e7 <ini+0x6b7>
mov    -0x10(%rbp),%rdi
mov    -0x18c(%rbp),%eax
add    $0x200,%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
movslq %eax,%rsi
call   1040 <realloc@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
movslq -0x18(%rbp),%rax
add    %rax,%rdi
mov    -0x188(%rbp),%rax
lea    -0x180(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%edx
lea    -0x180(%rbp),%rcx
mov    -0x58(%rbp),%rax
mov    -0x28(%rbp),%rsi
sub    %rsi,%rax
mov    %eax,%r9d
mov    -0x28(%rbp),%rax
lea    0x7e7(%rip),%rsi
xor    %r8d,%r8d
mov    %rax,(%rsp)
movl   $0x0,0x8(%rsp)
movl   $0x0,0x10(%rsp)
mov    $0x0,%al
call   1050 <sprintf@plt>
mov    -0x18c(%rbp),%eax
sub    $0x1,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    1857 <ini+0x727>
jmp    185c <ini+0x72c>
jmp    1861 <ini+0x731>
jmp    1866 <ini+0x736>
jmp    117c <ini+0x4c>
mov    -0x10(%rbp),%rax
add    $0x1b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ini>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x168,%rsp
mov    (%rdi),%bl
test   %bl,%bl
je     1180 <ini+0x60>
mov    %rdi,%r14
lea    0x60(%rsp),%rax
mov    $0x203,%ecx
sub    %eax,%ecx
mov    %ecx,0x1c(%rsp)
mov    %eax,%ecx
neg    %ecx
mov    %rcx,0x58(%rsp)
mov    $0x2401,%esi
lea    0xea1(%rip),%r12
xorps  %xmm0,%xmm0
xor    %edi,%edi
xor    %ebp,%ebp
xor    %r11d,%r11d
xor    %r9d,%r9d
xor    %r10d,%r10d
xor    %r15d,%r15d
xor    %eax,%eax
xor    %r8d,%r8d
xor    %ecx,%ecx
mov    %rcx,0x28(%rsp)
jmp    11a4 <ini+0x84>
xor    %eax,%eax
add    $0x168,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rdi,%r14
nopw   0x0(%rax,%rax,1)
test   %bl,%bl
je     1182 <ini+0x62>
mov    %r14,%rcx
jmp    11c0 <ini+0xa0>
movzbl 0x1(%rcx),%ebx
add    $0x1,%rcx
test   %bl,%bl
je     1182 <ini+0x62>
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x9(%rbx),%edx
cmp    $0x34,%dl
ja     11de <ini+0xbe>
movzbl %dl,%edx
movslq (%r12,%rdx,4),%rdx
add    %r12,%rdx
jmp    *%rdx
movzbl 0x1(%rcx),%ebx
add    $0x1,%rcx
jmp    11c0 <ini+0xa0>
cmp    $0x5b,%bl
je     14ab <ini+0x38b>
cmp    $0x5d,%bl
je     11a9 <ini+0x89>
lea    -0x7b(%rbx),%edx
cmp    $0xa5,%dl
jbe    11a9 <ini+0x89>
cmp    $0x3d,%bl
je     14e2 <ini+0x3c2>
cmp    $0xa6,%dl
jb     14e2 <ini+0x3c2>
mov    %rcx,%rbp
nopl   0x0(%rax)
movzbl 0x1(%rbp),%ebx
add    $0x1,%rbp
cmp    $0x3d,%bl
je     1225 <ini+0x105>
lea    -0x7b(%rbx),%edx
cmp    $0xa6,%dl
jae    1210 <ini+0xf0>
mov    %rcx,%r11
mov    %rcx,%r9
mov    %rcx,%r10
mov    %rbp,%r14
jmp    11a0 <ini+0x80>
cs nopw 0x0(%rax,%rax,1)
movzbl 0x1(%rcx),%ebx
add    $0x1,%rcx
cmp    $0xd,%rbx
ja     1240 <ini+0x120>
bt     %rbx,%rsi
jae    1240 <ini+0x120>
mov    %rcx,%r14
jmp    11a0 <ini+0x80>
lea    0x1(%rcx),%r9
movzbl 0x1(%rcx),%ebx
add    $0x1,%rcx
cmp    $0x3d,%bl
je     1275 <ini+0x155>
lea    -0x7b(%rbx),%edx
cmp    $0xa6,%dl
jae    1260 <ini+0x140>
mov    %rcx,%r11
mov    %rcx,%r14
jmp    11a0 <ini+0x80>
lea    0x1(%rcx),%rdx
mov    %rdx,0x40(%rsp)
mov    $0x1,%esi
mov    %rcx,%r14
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rsi,%rbx
movzbl 0x1(%r14),%edx
add    $0x1,%r14
cmp    $0x3b,%dl
je     12bd <ini+0x19d>
add    $0x85,%dl
lea    0x1(%rbx),%rsi
cmp    $0xa4,%dl
ja     12a0 <ini+0x180>
mov    %r11,0x38(%rsp)
mov    %r8,0x20(%rsp)
mov    %rax,0x8(%rsp)
nopl   0x0(%rax)
cmpb   $0x20,-0x1(%rcx,%rbx,1)
lea    -0x1(%rbx),%rbx
je     12d0 <ini+0x1b0>
movaps %xmm0,0x150(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm0,0x130(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x60(%rsp)
mov    %rdi,0x50(%rsp)
mov    %rdi,%rdx
lea    0x60(%rsp),%rdi
mov    %rdi,%r13
sub    %r15,%rdx
mov    %r9,0x10(%rsp)
mov    %r10,0x30(%rsp)
je     1399 <ini+0x279>
lea    0xd59(%rip),%rsi
mov    %r15,%rcx
xor    %eax,%eax
call   1040 <sprintf@plt>
mov    0x30(%rsp),%r10
mov    0x10(%rsp),%r9
cltq
lea    (%rsp,%rax,1),%r13
add    $0x60,%r13
mov    %rbp,%rdx
sub    %r10,%rdx
je     13bf <ini+0x29f>
mov    %r13,%rdi
lea    0xd30(%rip),%rsi
mov    %r10,%rcx
xor    %eax,%eax
call   1040 <sprintf@plt>
mov    0x10(%rsp),%r9
cltq
add    %rax,%r13
mov    0x38(%rsp),%rdx
sub    %r9,%rdx
mov    %r15,0x48(%rsp)
je     13e7 <ini+0x2c7>
mov    %r13,%rdi
lea    0xd02(%rip),%rsi
mov    %r9,%rcx
xor    %eax,%eax
call   1040 <sprintf@plt>
cltq
add    %rax,%r13
mov    0x8(%rsp),%r8
mov    %r13,%r15
lea    0x60(%rsp),%rax
sub    %rax,%r15
mov    0x58(%rsp),%rax
mov    0x20(%rsp),%rdx
add    %edx,%eax
mov    %rax,0x8(%rsp)
add    %r13d,%eax
add    %ebx,%eax
add    $0x3,%eax
mov    0x28(%rsp),%rcx
cmp    %ecx,%eax
jl     143d <ini+0x31d>
mov    %rcx,%rax
add    0x1c(%rsp),%eax
add    %r13d,%eax
add    %ebx,%eax
mov    %rax,0x28(%rsp)
movslq %eax,%rsi
mov    %r8,%rdi
call   1030 <realloc@plt>
mov    0x20(%rsp),%rdx
mov    %rax,%r8
movslq %edx,%rdi
add    %r8,%rdi
sub    $0x8,%rsp
lea    0xc92(%rip),%rsi
mov    %r15d,%edx
lea    0x68(%rsp),%rcx
mov    %r8,%r15
xor    %r8d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
push   $0x0
push   $0x0
push   0x58(%rsp)
call   1040 <sprintf@plt>
mov    %r15,%rax
add    $0x20,%rsp
add    0x8(%rsp),%r13d
lea    (%rbx,%r13,1),%r8d
add    $0x2,%r8d
mov    (%r14),%bl
mov    $0x2401,%esi
xorps  %xmm0,%xmm0
mov    0x50(%rsp),%rdi
mov    0x48(%rsp),%r15
mov    0x10(%rsp),%r9
mov    0x30(%rsp),%r10
mov    0x38(%rsp),%r11
jmp    11a0 <ini+0x80>
mov    %rcx,%r15
add    $0x1,%r15
mov    %r15,%rdi
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rdi),%ebx
cmp    $0xd,%rbx
ja     14d3 <ini+0x3b3>
bt     %rbx,%rsi
jb     1194 <ini+0x74>
cmp    $0x5d,%bl
je     1194 <ini+0x74>
add    $0x1,%rdi
jmp    14c0 <ini+0x3a0>
mov    %rcx,%rbp
mov    %rcx,%r11
mov    %rcx,%r9
mov    %rcx,%r10
mov    %rcx,%r14
jmp    11a0 <ini+0x80>

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

LLVM IR (-O2):
@.str = [6 x i8] c"%.*s.\00"
@.str.1 = [5 x i8] c"%.*s\00"
@.str.2 = [6 x i8] c".%.*s\00"
@.str.3 = [15 x i8] c"%.*s%c%.*s%c%c\00"
define noalias i8* @ini(i8* %0) {
%2 = alloca [256 x i8]
%3 = load i8, i8* %0
%4 = icmp eq i8 %3, 0
br i1 %4, label %161, label %5
5: ; preds = %1
%6 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%7 = ptrtoint [256 x i8]* %2 to i64
br label %8
8: ; preds = %5, %148
%9 = phi i8 [ %3, %5 ], [ %149, %148 ]
%10 = phi i8* [ null, %5 ], [ %150, %148 ]
%11 = phi i8* [ null, %5 ], [ %151, %148 ]
%12 = phi i8* [ null, %5 ], [ %152, %148 ]
%13 = phi i8* [ %0, %5 ], [ %159, %148 ]
%14 = phi i8* [ null, %5 ], [ %153, %148 ]
%15 = phi i8* [ null, %5 ], [ %154, %148 ]
%16 = phi i8* [ null, %5 ], [ %155, %148 ]
%17 = phi i8* [ null, %5 ], [ %158, %148 ]
%18 = phi i32 [ 0, %5 ], [ %157, %148 ]
%19 = phi i32 [ 0, %5 ], [ %156, %148 ]
br label %20
20: ; preds = %26, %8
%21 = phi i8 [ %9, %8 ], [ %27, %26 ]
%22 = phi i8* [ %13, %8 ], [ %28, %26 ]
switch i8 %21, label %31 [
i8 10, label %23
i8 32, label %23
i8 9, label %23
i8 13, label %23
i8 59, label %40
i8 91, label %44
i8 43, label %29
i8 61, label %64
]
23: ; preds = %20, %20, %20, %20
%24 = getelementptr inbounds i8, i8* %22, i64 1
%25 = load i8, i8* %24
br label %26
26: ; preds = %23, %36
%27 = phi i8 [ %25, %23 ], [ %38, %36 ]
%28 = phi i8* [ %24, %23 ], [ %37, %36 ]
br label %20
29: ; preds = %20
%30 = getelementptr inbounds i8, i8* %22, i64 1
br label %66
31: ; preds = %20
%32 = add i8 %21, -123
%33 = icmp ult i8 %32, -90
%34 = icmp eq i8 %21, 93
%35 = or i1 %34, %33
br i1 %35, label %36, label %51
36: ; preds = %31
%37 = getelementptr inbounds i8, i8* %22, i64 1
%38 = load i8, i8* %37
%39 = icmp eq i8 %38, 0
br i1 %39, label %161, label %26
40: ; preds = %20, %40
%41 = phi i8* [ %42, %40 ], [ %22, %20 ]
%42 = getelementptr inbounds i8, i8* %41, i64 1
%43 = load i8, i8* %42
switch i8 %43, label %40 [
i8 0, label %148
i8 13, label %148
i8 10, label %148
]
44: ; preds = %20
%45 = getelementptr inbounds i8, i8* %22, i64 1
br label %46
46: ; preds = %44, %49
%47 = phi i8* [ %45, %44 ], [ %50, %49 ]
%48 = load i8, i8* %47
switch i8 %48, label %49 [
i8 0, label %148
i8 13, label %148
i8 10, label %148
i8 93, label %148
]
49: ; preds = %46
%50 = getelementptr inbounds i8, i8* %47, i64 1
br label %46
51: ; preds = %31
%52 = add i8 %21, -123
%53 = icmp ult i8 %52, -90
%54 = icmp eq i8 %21, 61
%55 = or i1 %54, %53
br i1 %55, label %148, label %56
56: ; preds = %51, %56
%57 = phi i8* [ %58, %56 ], [ %22, %51 ]
%58 = getelementptr inbounds i8, i8* %57, i64 1
%59 = load i8, i8* %58
%60 = add i8 %59, -123
%61 = icmp ult i8 %60, -90
%62 = icmp eq i8 %59, 61
%63 = or i1 %62, %61
br i1 %63, label %148, label %56
64: ; preds = %20
%65 = getelementptr inbounds i8, i8* %22, i64 1
br label %74
66: ; preds = %66, %29
%67 = phi i8* [ %73, %66 ], [ %30, %29 ]
%68 = load i8, i8* %67
%69 = add i8 %68, -123
%70 = icmp ult i8 %69, -90
%71 = icmp eq i8 %68, 61
%72 = or i1 %71, %70
%73 = getelementptr inbounds i8, i8* %67, i64 1
br i1 %72, label %148, label %66
74: ; preds = %74, %64
%75 = phi i8* [ %81, %74 ], [ %65, %64 ]
%76 = load i8, i8* %75
%77 = add i8 %76, -123
%78 = icmp ult i8 %77, -91
%79 = icmp eq i8 %76, 59
%80 = or i1 %79, %78
%81 = getelementptr inbounds i8, i8* %75, i64 1
br i1 %80, label %82, label %74
82: ; preds = %74, %82
%83 = phi i8* [ %84, %82 ], [ %75, %74 ]
%84 = getelementptr inbounds i8, i8* %83, i64 -1
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 32
br i1 %86, label %82, label %87
87: ; preds = %82
%88 = ptrtoint i8* %10 to i64
%89 = ptrtoint i8* %16 to i64
%90 = sub i64 %88, %89
%91 = icmp eq i64 %90, 0
br i1 %91, label %97, label %92
92: ; preds = %87
%93 = trunc i64 %90 to i32
%94 = call i32 (i8*, i8*, ...) @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32 %93, i8* %16)
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 %95
br label %97
97: ; preds = %92, %87
%98 = phi i8* [ %96, %92 ], [ %6, %87 ]
%99 = ptrtoint i8* %11 to i64
%100 = ptrtoint i8* %15 to i64
%101 = sub i64 %99, %100
%102 = icmp eq i64 %101, 0
br i1 %102, label %108, label %103
103: ; preds = %97
%104 = trunc i64 %101 to i32
%105 = call i32 (i8*, i8*, ...) @sprintf(i8* dereferenceable(1) %98, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %104, i8* %15)
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i8, i8* %98, i64 %106
br label %108
108: ; preds = %103, %97
%109 = phi i8* [ %107, %103 ], [ %98, %97 ]
%110 = ptrtoint i8* %12 to i64
%111 = ptrtoint i8* %14 to i64
%112 = sub i64 %110, %111
%113 = icmp eq i64 %112, 0
br i1 %113, label %119, label %114
114: ; preds = %108
%115 = trunc i64 %112 to i32
%116 = call i32 (i8*, i8*, ...) @sprintf(i8* dereferenceable(1) %109, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 %115, i8* %14)
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds i8, i8* %109, i64 %117
br label %119
119: ; preds = %114, %108
%120 = phi i8* [ %118, %114 ], [ %109, %108 ]
%121 = ptrtoint i8* %120 to i64
%122 = sub i64 %121, %7
%123 = ptrtoint i8* %83 to i64
%124 = ptrtoint i8* %65 to i64
%125 = sub i64 1, %124
%126 = add i64 %125, %122
%127 = add i64 %126, %123
%128 = trunc i64 %127 to i32
%129 = add i32 %18, %128
%130 = add i32 %129, 2
%131 = icmp slt i32 %130, %19
br i1 %131, label %137, label %132
132: ; preds = %119
%133 = add i32 %19, 514
%134 = add i32 %133, %128
%135 = sext i32 %134 to i64
%136 = call i8* @realloc(i8* %17, i64 %135)
br label %137
137: ; preds = %132, %119
%138 = phi i32 [ %134, %132 ], [ %19, %119 ]
%139 = phi i8* [ %136, %132 ], [ %17, %119 ]
%140 = sext i32 %18 to i64
%141 = getelementptr inbounds i8, i8* %139, i64 %140
%142 = trunc i64 %122 to i32
%143 = sub i64 %123, %124
%144 = trunc i64 %143 to i32
%145 = call i32 (i8*, i8*, ...) @sprintf(i8* dereferenceable(1) %141, i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0), i32 %142, i8* %6, i32 0, i32 %144, i8* %65, i32 0, i32 0)
%146 = add i32 %129, 1
%147 = load i8, i8* %75
br label %148
148: ; preds = %66, %46, %46, %46, %46, %40, %40, %40, %56, %51, %137
%149 = phi i8 [ %147, %137 ], [ %21, %51 ], [ %59, %56 ], [ %43, %40 ], [ %43, %40 ], [ %43, %40 ], [ %48, %46 ], [ %48, %46 ], [ %48, %46 ], [ %48, %46 ], [ %68, %66 ]
%150 = phi i8* [ %10, %137 ], [ %10, %51 ], [ %10, %56 ], [ %10, %40 ], [ %10, %40 ], [ %10, %40 ], [ %47, %46 ], [ %47, %46 ], [ %47, %46 ], [ %47, %46 ], [ %10, %66 ]
%151 = phi i8* [ %11, %137 ], [ %22, %51 ], [ %58, %56 ], [ %11, %40 ], [ %11, %40 ], [ %11, %40 ], [ %11, %46 ], [ %11, %46 ], [ %11, %46 ], [ %11, %46 ], [ %11, %66 ]
%152 = phi i8* [ %12, %137 ], [ %22, %51 ], [ %22, %56 ], [ %12, %40 ], [ %12, %40 ], [ %12, %40 ], [ %12, %46 ], [ %12, %46 ], [ %12, %46 ], [ %12, %46 ], [ %67, %66 ]
%153 = phi i8* [ %14, %137 ], [ %22, %51 ], [ %22, %56 ], [ %14, %40 ], [ %14, %40 ], [ %14, %40 ], [ %14, %46 ], [ %14, %46 ], [ %14, %46 ], [ %14, %46 ], [ %30, %66 ]
%154 = phi i8* [ %15, %137 ], [ %22, %51 ], [ %22, %56 ], [ %15, %40 ], [ %15, %40 ], [ %15, %40 ], [ %15, %46 ], [ %15, %46 ], [ %15, %46 ], [ %15, %46 ], [ %15, %66 ]
%155 = phi i8* [ %16, %137 ], [ %16, %51 ], [ %16, %56 ], [ %16, %40 ], [ %16, %40 ], [ %16, %40 ], [ %45, %46 ], [ %45, %46 ], [ %45, %46 ], [ %45, %46 ], [ %16, %66 ]
%156 = phi i32 [ %138, %137 ], [ %19, %51 ], [ %19, %56 ], [ %19, %40 ], [ %19, %40 ], [ %19, %40 ], [ %19, %46 ], [ %19, %46 ], [ %19, %46 ], [ %19, %46 ], [ %19, %66 ]
%157 = phi i32 [ %146, %137 ], [ %18, %51 ], [ %18, %56 ], [ %18, %40 ], [ %18, %40 ], [ %18, %40 ], [ %18, %46 ], [ %18, %46 ], [ %18, %46 ], [ %18, %46 ], [ %18, %66 ]
%158 = phi i8* [ %139, %137 ], [ %17, %51 ], [ %17, %56 ], [ %17, %40 ], [ %17, %40 ], [ %17, %40 ], [ %17, %46 ], [ %17, %46 ], [ %17, %46 ], [ %17, %46 ], [ %17, %66 ]
%159 = phi i8* [ %75, %137 ], [ %22, %51 ], [ %58, %56 ], [ %42, %40 ], [ %42, %40 ], [ %42, %40 ], [ %47, %46 ], [ %47, %46 ], [ %47, %46 ], [ %47, %46 ], [ %67, %66 ]
%160 = icmp eq i8 %149, 0
br i1 %160, label %161, label %8
161: ; preds = %148, %36, %1
%162 = phi i8* [ null, %1 ], [ %17, %36 ], [ %158, %148 ]
ret i8* %162
}