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

/* Variables and functions */
int /*<<< orphan*/ LC_ALL;
int /*<<< orphan*/ feof(int /*<<< orphan*/);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/);
int map_paramstr(char *);
char *nl_langinfo(int);
int /*<<< orphan*/ printf(char *, char *, ...);
int /*<<< orphan*/ puts(char *);
char *setlocale(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdin;
scalar_t__ strcmp(char *, char *);
int main(void) {
  int result = 0;
  while (!feof(stdin)) {
    char buf[1000];
    char *rp;
    char *locale;
    char *paramstr;
    char *expected;
    char *actual;
    int param;
    if (fgets(buf, sizeof(buf), stdin) == NULL)
      break;
    rp = buf;
    while (*rp == ' ' || *rp == '\t')
      ++rp;
    if (*rp == '#') {
      ;
      continue;
    }
    locale = rp;
    while (*rp != '\0' && *rp != ' ' && *rp != '\t' && *rp != '\n')
      ++rp;
    if (*rp == '\0' || *rp == '\n') {
      ;
      continue;
    }
    *rp++ = '\0';
    while (*rp == ' ' || *rp == '\t')
      ++rp;
    paramstr = rp;
    while (*rp != '\0' && *rp != ' ' && *rp != '\t' && *rp != '\n')
      ++rp;
    if (*rp == '\0' || *rp == '\n') {
      ;
      continue;
    }
    *rp++ = '\0';
    while (*rp == ' ' || *rp == '\t')
      ++rp;
    if (*rp == '"') {
      char *wp;
      expected = wp = ++rp;
      while (*rp != '"' && *rp != '\n' && *rp != '\0') {
        if (*rp == '\\') {
          ++rp;
          if (*rp == '\0')
            break;
          if (*rp >= '0' && *rp <= '9') {
            int val = *rp - '0';
            if (rp[1] >= '0' && rp[1] <= '9') {
              ++rp;
              val *= 10;
              val += *rp - '0';
              if (rp[1] >= '0' && rp[1] <= '9') {
                ++rp;
                val *= 10;
                val += *rp - '0';
              }
            }
            *rp = val;
          }
        }
        *wp++ = *rp++;
      }
      if (*rp != '"') {
        ;
        continue;
      }
      *wp = '\0';
    } else {
      expected = rp;
      while (*rp != '\0' && *rp != '\n')
        ++rp;
      *rp = '\0';
    }
    param = map_paramstr(paramstr);
    if (param == -1) {
      ;
      continue;
    }
    printf("LC_ALL=%s nl_langinfo(%s)", locale, paramstr);
    setlocale(LC_ALL, locale);
    if (strcmp(locale, setlocale(LC_ALL, NULL)) != 0) {
      puts(": failed to set locale");
      result = 1;
      continue;
    }
    actual = nl_langinfo(param);
    printf(" = \"%s\", ", actual);
    if (strcmp(actual, expected) == 0)
      puts("OK");
    else {
      printf("FAILED (expected: %s)\n", expected);
      result = 1;
    }
  }
  return result;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x440,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
mov    0x2e48(%rip),%rax
mov    (%rax),%edi
call   1070 <feof@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    11bc <main+0x3c>
jmp    18ac <main+0x72c>
lea    -0x3f0(%rbp),%rdi
mov    0x2e1e(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1050 <fgets@plt>
cmp    $0x0,%rax
jne    11e5 <main+0x65>
jmp    18ac <main+0x72c>
lea    -0x3f0(%rbp),%rax
mov    %rax,-0x3f8(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x42d(%rbp)
je     1224 <main+0xa4>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x42d(%rbp)
mov    -0x42d(%rbp),%al
test   $0x1,%al
jne    1237 <main+0xb7>
jmp    124e <main+0xce>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    11f3 <main+0x73>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
jne    1266 <main+0xe6>
jmp    1199 <main+0x19>
mov    -0x3f8(%rbp),%rax
mov    %rax,-0x400(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x42e(%rbp)
je     12db <main+0x15b>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x42e(%rbp)
je     12db <main+0x15b>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x9,%ecx
mov    %al,-0x42e(%rbp)
je     12db <main+0x15b>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x42e(%rbp)
mov    -0x42e(%rbp),%al
test   $0x1,%al
jne    12ee <main+0x16e>
jmp    1305 <main+0x185>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    1274 <main+0xf4>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     132b <main+0x1ab>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1330 <main+0x1b0>
jmp    1199 <main+0x19>
mov    -0x3f8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x3f8(%rbp)
movb   $0x0,(%rax)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x42f(%rbp)
je     1379 <main+0x1f9>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x42f(%rbp)
mov    -0x42f(%rbp),%al
test   $0x1,%al
jne    138c <main+0x20c>
jmp    13a3 <main+0x223>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    1348 <main+0x1c8>
mov    -0x3f8(%rbp),%rax
mov    %rax,-0x408(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x430(%rbp)
je     1418 <main+0x298>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x430(%rbp)
je     1418 <main+0x298>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x9,%ecx
mov    %al,-0x430(%rbp)
je     1418 <main+0x298>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x430(%rbp)
mov    -0x430(%rbp),%al
test   $0x1,%al
jne    142b <main+0x2ab>
jmp    1442 <main+0x2c2>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    13b1 <main+0x231>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1468 <main+0x2e8>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    146d <main+0x2ed>
jmp    1199 <main+0x19>
mov    -0x3f8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x3f8(%rbp)
movb   $0x0,(%rax)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x431(%rbp)
je     14b6 <main+0x336>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x431(%rbp)
mov    -0x431(%rbp),%al
test   $0x1,%al
jne    14c9 <main+0x349>
jmp    14e0 <main+0x360>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    1485 <main+0x305>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    171d <main+0x59d>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
mov    %rax,-0x428(%rbp)
mov    %rax,-0x410(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x22,%ecx
mov    %al,-0x432(%rbp)
je     155f <main+0x3df>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x432(%rbp)
je     155f <main+0x3df>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x432(%rbp)
mov    -0x432(%rbp),%al
test   $0x1,%al
jne    1572 <main+0x3f2>
jmp    16f6 <main+0x576>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    16c3 <main+0x543>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    15af <main+0x42f>
jmp    16f6 <main+0x576>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     16be <main+0x53e>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     16be <main+0x53e>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
mov    %eax,-0x42c(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x30,%eax
jl     16ad <main+0x52d>
mov    -0x3f8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x39,%eax
jg     16ad <main+0x52d>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
imul   $0xa,-0x42c(%rbp),%eax
mov    %eax,-0x42c(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x42c(%rbp),%eax
mov    %eax,-0x42c(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x30,%eax
jl     16a8 <main+0x528>
mov    -0x3f8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x39,%eax
jg     16a8 <main+0x528>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
imul   $0xa,-0x42c(%rbp),%eax
mov    %eax,-0x42c(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x42c(%rbp),%eax
mov    %eax,-0x42c(%rbp)
jmp    16ad <main+0x52d>
mov    -0x42c(%rbp),%eax
mov    %al,%cl
mov    -0x3f8(%rbp),%rax
mov    %cl,(%rax)
jmp    16c3 <main+0x543>
mov    -0x3f8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x3f8(%rbp)
mov    (%rax),%cl
mov    -0x428(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x428(%rbp)
mov    %cl,(%rax)
jmp    1513 <main+0x393>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
je     170e <main+0x58e>
jmp    1199 <main+0x19>
mov    -0x428(%rbp),%rax
movb   $0x0,(%rax)
jmp    1790 <main+0x610>
mov    -0x3f8(%rbp),%rax
mov    %rax,-0x410(%rbp)
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x433(%rbp)
je     175c <main+0x5dc>
mov    -0x3f8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x433(%rbp)
mov    -0x433(%rbp),%al
test   $0x1,%al
jne    176f <main+0x5ef>
jmp    1786 <main+0x606>
mov    -0x3f8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x3f8(%rbp)
jmp    172b <main+0x5ab>
mov    -0x3f8(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x408(%rbp),%rdi
call   10a0 <map_paramstr@plt>
mov    %eax,-0x41c(%rbp)
cmpl   $0xffffffff,-0x41c(%rbp)
jne    17b4 <main+0x634>
jmp    1199 <main+0x19>
mov    -0x400(%rbp),%rsi
mov    -0x408(%rbp),%rdx
lea    0x837(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    0x2801(%rip),%rax
mov    (%rax),%edi
mov    -0x400(%rbp),%rsi
call   1090 <setlocale@plt>
mov    -0x400(%rbp),%rax
mov    %rax,-0x440(%rbp)
mov    0x27de(%rip),%rax
mov    (%rax),%edi
xor    %eax,%eax
mov    %eax,%esi
call   1090 <setlocale@plt>
mov    -0x440(%rbp),%rdi
mov    %rax,%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1836 <main+0x6b6>
lea    0x7f5(%rip),%rdi
call   1030 <puts@plt>
movl   $0x1,-0x8(%rbp)
jmp    1199 <main+0x19>
mov    -0x41c(%rbp),%edi
call   1080 <nl_langinfo@plt>
mov    %rax,-0x418(%rbp)
mov    -0x418(%rbp),%rsi
lea    0x7db(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x418(%rbp),%rdi
mov    -0x410(%rbp),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    188b <main+0x70b>
lea    0x7ba(%rip),%rdi
call   1030 <puts@plt>
jmp    18a7 <main+0x727>
mov    -0x410(%rbp),%rsi
lea    0x7a5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x8(%rbp)
jmp    1199 <main+0x19>
mov    -0x8(%rbp),%eax
add    $0x440,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x3f8,%rsp
mov    0x2e50(%rip),%r14
mov    (%r14),%edi
call   1070 <feof@plt>
movl   $0x0,0xc(%rsp)
test   %eax,%eax
je     11c2 <main+0x42>
mov    0xc(%rsp),%eax
add    $0x3f8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x10(%rsp),%rbx
lea    0xe32(%rip),%r15
movl   $0x0,0xc(%rsp)
jmp    120f <main+0x8f>
lea    0xf43(%rip),%rdi
call   1030 <puts@plt>
movl   $0x1,0xc(%rsp)
mov    0x2df5(%rip),%r14
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r12,%rbx
mov    (%r14),%edi
call   1070 <feof@plt>
test   %eax,%eax
jne    11ac <main+0x2c>
mov    (%r14),%edx
mov    %rbx,%rdi
mov    $0x3e8,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     11ac <main+0x2c>
lea    0x12(%rsp),%r13
lea    0x11(%rsp),%rbp
mov    %rbx,%r12
jmp    124c <main+0xcc>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rbx
add    $0x1,%rbp
add    $0x1,%r13
movzbl (%rbx),%eax
cmp    $0x9,%al
je     1240 <main+0xc0>
cmp    $0x20,%al
je     1240 <main+0xc0>
mov    %rbx,%rcx
cmp    $0x23,%al
jne    1270 <main+0xf0>
jmp    1200 <main+0x80>
movzbl 0x1(%rcx),%eax
add    $0x1,%rcx
add    $0x1,%rbp
add    $0x1,%r13
cmp    $0x20,%al
ja     1260 <main+0xe0>
movzbl %al,%eax
movslq (%r15,%rax,4),%rax
add    %r15,%rax
jmp    *%rax
movb   $0x0,(%rcx)
lea    0xdfa(%rip),%rdx
jmp    1298 <main+0x118>
nopl   0x0(%rax)
add    $0x1,%rbp
add    $0x1,%r13
movzbl 0x0(%rbp),%eax
cmp    $0x9,%al
je     1290 <main+0x110>
cmp    $0x20,%al
je     1290 <main+0x110>
mov    %rbp,%rcx
jmp    12bc <main+0x13c>
nopl   0x0(%rax)
movzbl 0x1(%rcx),%eax
add    $0x1,%rcx
add    $0x1,%r13
cmp    $0x20,%al
ja     12b0 <main+0x130>
movzbl %al,%eax
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
movb   $0x0,(%rcx)
jmp    12e4 <main+0x164>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r13
movzbl 0x0(%r13),%ecx
cmp    $0x9,%cl
je     12e0 <main+0x160>
cmp    $0x20,%cl
je     12e0 <main+0x160>
cmp    $0x22,%cl
jne    1304 <main+0x184>
add    $0x1,%r13
mov    %r13,%rcx
mov    %r13,%rax
jmp    1349 <main+0x1c9>
mov    %r13,%rax
test   %cl,%cl
je     13b6 <main+0x236>
nop
cmp    $0xa,%cl
je     13b6 <main+0x236>
movzbl 0x1(%rax),%ecx
add    $0x1,%rax
test   %cl,%cl
jne    1310 <main+0x190>
jmp    13b6 <main+0x236>
add    $0x3,%rcx
lea    (%rdx,%rdx,4),%edx
lea    (%rsi,%rdx,2),%edx
add    $0xffffffd0,%edx
mov    %rcx,%rsi
mov    %dl,(%rsi)
mov    %rsi,%rcx
add    $0x1,%rcx
mov    %dl,(%rax)
add    $0x1,%rax
movzbl (%rcx),%edx
cmp    $0x5b,%dl
jle    13a0 <main+0x220>
cmp    $0x5c,%dl
jne    133f <main+0x1bf>
movzbl 0x1(%rcx),%edx
test   %edx,%edx
je     1200 <main+0x80>
lea    0x1(%rcx),%rsi
lea    -0x30(%rdx),%edi
cmp    $0x9,%dil
ja     133c <main+0x1bc>
add    $0xffffffd0,%edx
movzbl 0x2(%rcx),%r8d
lea    -0x30(%r8),%edi
cmp    $0x9,%dil
ja     133a <main+0x1ba>
lea    (%rdx,%rdx,4),%edx
lea    (%r8,%rdx,2),%edx
add    $0xffffffd0,%edx
movzbl 0x3(%rcx),%esi
lea    -0x30(%rsi),%edi
cmp    $0x9,%dil
jbe    132a <main+0x1aa>
add    $0x2,%rcx
jmp    1337 <main+0x1b7>
xchg   %ax,%ax
test   %dl,%dl
je     1200 <main+0x80>
cmp    $0xa,%dl
je     1200 <main+0x80>
cmp    $0x22,%dl
jne    133f <main+0x1bf>
movb   $0x0,(%rax)
mov    %rbp,%rdi
call   10a0 <map_paramstr@plt>
cmp    $0xffffffff,%eax
je     11ec <main+0x6c>
mov    %eax,%r14d
lea    0xd34(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2bf0(%rip),%rbp
mov    0x0(%rbp),%edi
mov    %rbx,%rsi
call   1090 <setlocale@plt>
mov    0x0(%rbp),%edi
xor    %esi,%esi
call   1090 <setlocale@plt>
mov    %rbx,%rdi
mov    %rax,%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
jne    11d8 <main+0x58>
mov    %r14d,%edi
call   1080 <nl_langinfo@plt>
mov    %rax,%rbx
lea    0xd16(%rip),%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %r13,%rsi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1453 <main+0x2d3>
lea    0xd02(%rip),%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    11e4 <main+0x64>
lea    0xce9(%rip),%rdi
call   1030 <puts@plt>
jmp    11ec <main+0x6c>

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

LLVM IR (-O2):
@stdin = global i32 0
@.str = [26 x i8] c"LC_ALL=%s nl_langinfo(%s)\00"
@LC_ALL = global i32 0
@.str.1 = [23 x i8] c": failed to set locale\00"
@.str.2 = [10 x i8] c" = \22%s\22, \00"
@.str.3 = [3 x i8] c"OK\00"
@.str.4 = [23 x i8] c"FAILED (expected: %s)\0A\00"
define i32 @main() {
%1 = alloca [1000 x i8]
%2 = load i32, i32* @stdin
%3 = call i32 @feof(i32 %2)
%4 = icmp eq i32 %3, 0
br i1 %4, label %5, label %120
5: ; preds = %0
%6 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 0
br label %7
7: ; preds = %5, %115
%8 = phi i32 [ 0, %5 ], [ %116, %115 ]
%9 = load i32, i32* @stdin
%10 = call i32* @fgets(i8* %6, i32 1000, i32 %9)
%11 = icmp eq i32* %10, null
br i1 %11, label %12, label %13
12: ; preds = %7
br label %120
13: ; preds = %7, %16
%14 = phi i8* [ %17, %16 ], [ %6, %7 ]
%15 = load i8, i8* %14
switch i8 %15, label %18 [
i8 32, label %16
i8 9, label %16
i8 35, label %115
]
16: ; preds = %13, %13
%17 = getelementptr inbounds i8, i8* %14, i64 1
br label %13
18: ; preds = %13, %21
%19 = phi i8 [ %23, %21 ], [ %15, %13 ]
%20 = phi i8* [ %22, %21 ], [ %14, %13 ]
switch i8 %19, label %21 [
i8 0, label %115
i8 10, label %115
i8 9, label %24
i8 32, label %24
]
21: ; preds = %18
%22 = getelementptr inbounds i8, i8* %20, i64 1
%23 = load i8, i8* %22
br label %18
24: ; preds = %18, %18
store i8 0, i8* %20
br label %25
25: ; preds = %29, %24
%26 = phi i8* [ %20, %24 ], [ %27, %29 ]
%27 = getelementptr inbounds i8, i8* %26, i64 1
%28 = load i8, i8* %27
switch i8 %28, label %30 [
i8 32, label %29
i8 9, label %29
]
29: ; preds = %25, %25
br label %25
30: ; preds = %25, %33
%31 = phi i8 [ %35, %33 ], [ %28, %25 ]
%32 = phi i8* [ %34, %33 ], [ %27, %25 ]
switch i8 %31, label %33 [
i8 0, label %115
i8 10, label %115
i8 9, label %36
i8 32, label %36
]
33: ; preds = %30
%34 = getelementptr inbounds i8, i8* %32, i64 1
%35 = load i8, i8* %34
br label %30
36: ; preds = %30, %30
store i8 0, i8* %32
br label %37
37: ; preds = %41, %36
%38 = phi i8* [ %32, %36 ], [ %39, %41 ]
%39 = getelementptr inbounds i8, i8* %38, i64 1
%40 = load i8, i8* %39
switch i8 %40, label %85 [
i8 32, label %41
i8 9, label %41
i8 34, label %42
]
41: ; preds = %37, %37
br label %37
42: ; preds = %37
%43 = getelementptr inbounds i8, i8* %38, i64 2
br label %44
44: ; preds = %80, %42
%45 = phi i8* [ %43, %42 ], [ %83, %80 ]
%46 = phi i8* [ %43, %42 ], [ %84, %80 ]
%47 = load i8, i8* %45
switch i8 %47, label %80 [
i8 92, label %48
i8 34, label %91
i8 0, label %115
i8 10, label %115
]
48: ; preds = %44
%49 = getelementptr inbounds i8, i8* %45, i64 1
%50 = load i8, i8* %49
%51 = zext i8 %50 to i32
%52 = icmp eq i8 %50, 0
br i1 %52, label %115, label %53
53: ; preds = %48
%54 = add i8 %50, -48
%55 = icmp ult i8 %54, 10
br i1 %55, label %56, label %80
56: ; preds = %53
%57 = add nsw i32 %51, -48
%58 = getelementptr inbounds i8, i8* %45, i64 2
%59 = load i8, i8* %58
%60 = add i8 %59, -48
%61 = icmp ult i8 %60, 10
br i1 %61, label %62, label %76
62: ; preds = %56
%63 = mul nsw i32 %57, 10
%64 = zext i8 %59 to i32
%65 = add nsw i32 %63, -48
%66 = add nsw i32 %65, %64
%67 = getelementptr inbounds i8, i8* %45, i64 3
%68 = load i8, i8* %67
%69 = add i8 %68, -48
%70 = icmp ult i8 %69, 10
br i1 %70, label %71, label %76
71: ; preds = %62
%72 = mul nsw i32 %66, 10
%73 = zext i8 %68 to i32
%74 = add nsw i32 %72, -48
%75 = add nsw i32 %74, %73
br label %76
76: ; preds = %62, %71, %56
%77 = phi i8* [ %67, %71 ], [ %58, %62 ], [ %49, %56 ]
%78 = phi i32 [ %75, %71 ], [ %66, %62 ], [ %57, %56 ]
%79 = trunc i32 %78 to i8
store i8 %79, i8* %77
br label %80
80: ; preds = %44, %53, %76
%81 = phi i8 [ %79, %76 ], [ %50, %53 ], [ %47, %44 ]
%82 = phi i8* [ %77, %76 ], [ %49, %53 ], [ %45, %44 ]
%83 = getelementptr inbounds i8, i8* %82, i64 1
%84 = getelementptr inbounds i8, i8* %46, i64 1
store i8 %81, i8* %46
br label %44
85: ; preds = %37, %88
%86 = phi i8 [ %90, %88 ], [ %40, %37 ]
%87 = phi i8* [ %89, %88 ], [ %39, %37 ]
switch i8 %86, label %88 [
i8 0, label %91
i8 10, label %91
]
88: ; preds = %85
%89 = getelementptr inbounds i8, i8* %87, i64 1
%90 = load i8, i8* %89
br label %85
91: ; preds = %44, %85, %85
%92 = phi i8* [ %87, %85 ], [ %87, %85 ], [ %46, %44 ]
%93 = phi i8* [ %39, %85 ], [ %39, %85 ], [ %43, %44 ]
store i8 0, i8* %92
%94 = call i32 @map_paramstr(i8* %27)
%95 = icmp eq i32 %94, -1
br i1 %95, label %115, label %96
96: ; preds = %91
%97 = call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* %14, i8* %27)
%98 = load i32, i32* @LC_ALL
%99 = call i8* @setlocale(i32 %98, i8* %14)
%100 = load i32, i32* @LC_ALL
%101 = call i8* @setlocale(i32 %100, i8* null)
%102 = call i64 @strcmp(i8* %14, i8* %101)
%103 = icmp eq i64 %102, 0
br i1 %103, label %106, label %104
104: ; preds = %96
%105 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0))
br label %115
106: ; preds = %96
%107 = call i8* @nl_langinfo(i32 %94)
%108 = call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i8* %107)
%109 = call i64 @strcmp(i8* %107, i8* %93)
%110 = icmp eq i64 %109, 0
br i1 %110, label %111, label %113
111: ; preds = %106
%112 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
br label %115
113: ; preds = %106
%114 = call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0), i8* %93)
br label %115
115: ; preds = %13, %18, %18, %30, %30, %44, %44, %48, %111, %113, %91, %104
%116 = phi i32 [ 1, %104 ], [ %8, %91 ], [ %8, %111 ], [ 1, %113 ], [ %8, %48 ], [ %8, %44 ], [ %8, %44 ], [ %8, %30 ], [ %8, %30 ], [ %8, %18 ], [ %8, %18 ], [ %8, %13 ]
%117 = load i32, i32* @stdin
%118 = call i32 @feof(i32 %117)
%119 = icmp eq i32 %118, 0
br i1 %119, label %7, label %120
120: ; preds = %115, %0, %12
%121 = phi i32 [ %8, %12 ], [ 0, %0 ], [ %116, %115 ]
ret i32 %121
}