#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 */
int /*<<< orphan*/ strcat(char *, char *);
void mr_parsenum(int *arr, int arrsz, char *final) {
  char *scales[] = {" ",     "sh8",     "h1 z2r", "l2kh",   "k12 tt4",
                    "1 r1b", "kh1 r1b", "n4l",    "p1 d1m", "sh1n 0kh"};
  char *units[] = {"sh6n 0y", "8k",    "d12n", "t4n",  "ch2r",
                   "p2ch",    "s1 h2", "s2t",  "2tth", "n6"};
  char *teens[] = {"d1 h2",   "1k r2",         "b2 r2",   "t8 r2",
                   "ch13 d2", "p1n dh1 r2",    "s12 ll2", "s1t r2",
                   "1tth r2", "8 k12 nna2 v3s"};
  char *twenties[] = {"v4s",           "8k v4s",      "b2 v4s",  "t8 v4s",
                      "ch12 v4s",      "p1n ch1 v4s", "s1v v4s", "s1t t2 v4s",
                      "1tth tth2 v4s", "8 k12nna t4s"};
  char *thirties[] = {"t4s",      "8k t4s",           "b1t t4s",   "t8h t4s",
                      "ch13 t4s", "p1s t4s",          "chh1t t4s", "s1d t4s",
                      "1dd t4s",  "8 k12nna ch2 ll4s"};
  char *forties[] = {"ch2 ll4s",           "8k k8 ch2 ll4s",
                     "b8 ch2 ll4s",        "tHr8 ch2 ll4s",
                     "ch1v v8 ch2 ll4s",   "p1n 0ch ch8 ch2 ll4s",
                     "s8 h8 ch2 ll4s",     "s1t t8 ch2 ll4s",
                     "1tth tth8 ch2 ll4s", "8 k12nna p1n n2s"};
  char *fifties[] = {"p1n n2s",       "8k k2 v1n",  "b2 v1n",
                     "tHr8 p1n 0n",   "ch12 p1n",   "p1n ch2 v1n 0n",
                     "chh1p p1n",     "s1t t2 v1n", "1tth tth2 v1n",
                     "8 k12nna s2tth"};
  char *sixties[] = {"s2tth",           "8k s1sh 0tth",    "b2 s1sh 0tth",
                     "tHr8 s1sh 0tth",  "ch13 s1sh 0tth",  "p2 s1sh 0tth",
                     "s1 h2 s1sh 0tth", "s1 d5 s1sh 0tth", "1 dd5 s1sh 0tth",
                     "8 k12nna s1t t1r"};
  char *seventies[] = {"s1t t1r",          "8k k2 h1t t1r",
                       "b2 h1t t1r",       "tHr8 h1t t1r",
                       "ch13r y2 h1t t1r", "p1n 0ch ch2 h1t t1r ",
                       "sh1 h2 h1t t1r",   "s1t y2 h1t t1r",
                       "1tth y2 h1t t1r",  "8 k12 nna9n sh4"};
  char *eighties[] = {
      "9n sh4",          "8k y2 9n sh4",    "bHy2 9n sh4",
      "0t 0r y2 9n sh4", "ch13r y2 9n sh4", "p1n  chHy2 9n sh4",
      "sh1h y2 9n sh4",  "s1t y2 9n sh4",   "1tth 0tth y2 9n sh4",
      "8 k12nna n1v v1d"};
  char *nineties[] = {"n1v v1d",       "8k y2 n1v",      "bHy2 n1v",
                      "0t 0r y2n n1v", "ch13r y2n n1v",  "p1n  chHy2n n1v",
                      "sh1h y2 nna1v", "s1t  tHy2n n1v", "1tth 0tth y2n n1v",
                      "n1v y2n n1v"};
  char **uptohundred[] = {units,   teens,   twenties,  thirties, forties,
                          fifties, sixties, seventies, eighties, nineties};
  int i = 0, j = 0;
  if (arrsz == 1) {
    strcat(final, units[arr[i]]);
    strcat(final, " G3000 ");
  } else if (arrsz == 2) {
    strcat(final, uptohundred[arr[i]][arr[i + 1]]);
    strcat(final, " G3000 ");
  } else if (arrsz == 3) {
    strcat(final, units[arr[i]]);
    strcat(final, " G3000 ");
    i++;
    strcat(final, scales[1]);
    strcat(final, " G3000 ");
    strcat(final, uptohundred[arr[i]][arr[i + 1]]);
    strcat(final, " G3000 ");
  } else if (arrsz > 3) {
    j = 0;
    i = (arrsz % 2) ? 0 : 1;
    if (i) {
      strcat(final, units[arr[0]]);
      strcat(final, " G3000 ");
      j++;
      strcat(final, scales[(arrsz - i) / 2 + 1]);
      strcat(final, " G3000 ");
      j++;
    }
    for (; i < arrsz - 3; i += 2) {
      strcat(final, uptohundred[arr[i]][arr[i + 1]]);
      strcat(final, " G3000 ");
      j++;
      strcat(final, scales[(arrsz - i) / 2]);
      strcat(final, " G3000 ");
      j++;
    }
    if (arr[arrsz - 3]) {
      strcat(final, units[arr[arrsz - 3]]);
      strcat(final, " G3000 ");
      j++;
      strcat(final, scales[1]);
      strcat(final, " G3000 ");
      j++;
    }
    strcat(final, uptohundred[arr[arrsz - 2]][arr[arrsz - 1]]);
    strcat(final, " G3000 ");
  }
}


x86 assembly (clang, -O0):
<mr_parsenum>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3f0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
lea    -0x70(%rbp),%rdi
lea    0x296f(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0xc0(%rbp),%rdi
lea    0x29a7(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x110(%rbp),%rdi
lea    0x29df(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x160(%rbp),%rdi
lea    0x2a17(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x1b0(%rbp),%rdi
lea    0x2a4f(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x200(%rbp),%rdi
lea    0x2a87(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x250(%rbp),%rdi
lea    0x2abf(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x2a0(%rbp),%rdi
lea    0x2af7(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x2f0(%rbp),%rdi
lea    0x2b2f(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x340(%rbp),%rdi
lea    0x2b67(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0x390(%rbp),%rdi
lea    0x2b9f(%rip),%rsi
mov    $0x50,%edx
call   1030 <memcpy@plt>
lea    -0xc0(%rbp),%rax
mov    %rax,-0x3e0(%rbp)
lea    -0x110(%rbp),%rax
mov    %rax,-0x3d8(%rbp)
lea    -0x160(%rbp),%rax
mov    %rax,-0x3d0(%rbp)
lea    -0x1b0(%rbp),%rax
mov    %rax,-0x3c8(%rbp)
lea    -0x200(%rbp),%rax
mov    %rax,-0x3c0(%rbp)
lea    -0x250(%rbp),%rax
mov    %rax,-0x3b8(%rbp)
lea    -0x2a0(%rbp),%rax
mov    %rax,-0x3b0(%rbp)
lea    -0x2f0(%rbp),%rax
mov    %rax,-0x3a8(%rbp)
lea    -0x340(%rbp),%rax
mov    %rax,-0x3a0(%rbp)
lea    -0x390(%rbp),%rax
mov    %rax,-0x398(%rbp)
movl   $0x0,-0x3e4(%rbp)
movl   $0x0,-0x3e8(%rbp)
cmpl   $0x1,-0xc(%rbp)
jne    131a <mr_parsenum+0x1fa>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq -0x3e4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0xc0(%rbp,%rax,8),%rsi
ff
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0x115c(%rip),%rsi
call   1040 <strcat@plt>
jmp    167b <mr_parsenum+0x55b>
cmpl   $0x2,-0xc(%rbp)
jne    1371 <mr_parsenum+0x251>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq -0x3e4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x3e0(%rbp,%rax,8),%rax
ff
mov    -0x8(%rbp),%rcx
mov    -0x3e4(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
mov    (%rax,%rcx,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0x1105(%rip),%rsi
call   1040 <strcat@plt>
jmp    1676 <mr_parsenum+0x556>
cmpl   $0x3,-0xc(%rbp)
jne    1424 <mr_parsenum+0x304>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq -0x3e4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0xc0(%rbp,%rax,8),%rsi
ff
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0x10c6(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e4(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0x68(%rbp),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0x109a(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq -0x3e4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x3e0(%rbp,%rax,8),%rax
ff
mov    -0x8(%rbp),%rcx
mov    -0x3e4(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
mov    (%rax,%rcx,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0x1052(%rip),%rsi
call   1040 <strcat@plt>
jmp    1671 <mr_parsenum+0x551>
cmpl   $0x3,-0xc(%rbp)
jle    166c <mr_parsenum+0x54c>
movl   $0x0,-0x3e8(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    $0x1,%eax
xor    %ecx,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %eax,-0x3e4(%rbp)
cmpl   $0x0,-0x3e4(%rbp)
je     14dd <mr_parsenum+0x3bd>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq (%rax),%rax
mov    -0xc0(%rbp,%rax,8),%rsi
ff
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xfe6(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0xc(%rbp),%eax
sub    -0x3e4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
add    $0x1,%eax
cltq
mov    -0x70(%rbp,%rax,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xfa3(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
jmp    14e2 <mr_parsenum+0x3c2>
mov    -0x3e4(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    15a1 <mr_parsenum+0x481>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
movslq -0x3e4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x3e0(%rbp,%rax,8),%rax
ff
mov    -0x8(%rbp),%rcx
mov    -0x3e4(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
mov    (%rax,%rcx,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xf33(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0xc(%rbp),%eax
sub    -0x3e4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cltq
mov    -0x70(%rbp,%rax,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xef3(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
mov    -0x3e4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x3e4(%rbp)
jmp    14e2 <mr_parsenum+0x3c2>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1625 <mr_parsenum+0x505>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movslq (%rax,%rcx,4),%rax
mov    -0xc0(%rbp,%rax,8),%rsi
ff
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xe87(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0x68(%rbp),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xe5b(%rip),%rsi
call   1040 <strcat@plt>
mov    -0x3e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3e8(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x3e0(%rbp,%rax,8),%rax
ff
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
mov    (%rax,%rcx,8),%rsi
call   1040 <strcat@plt>
mov    -0x18(%rbp),%rdi
lea    0xe05(%rip),%rsi
call   1040 <strcat@plt>
jmp    1671 <mr_parsenum+0x551>
jmp    1676 <mr_parsenum+0x556>
jmp    167b <mr_parsenum+0x55b>
add    $0x3f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mr_parsenum>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x388,%rsp
mov    %rdx,%r13
mov    %rdi,%r14
movaps 0x2a12(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x29f3(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x29d4(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x29b5(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x2999(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x2a1d(%rip),%xmm0
movaps %xmm0,0x370(%rsp)
movaps 0x29fe(%rip),%xmm0
movaps %xmm0,0x360(%rsp)
movaps 0x29df(%rip),%xmm0
movaps %xmm0,0x350(%rsp)
movaps 0x29c0(%rip),%xmm0
movaps %xmm0,0x340(%rsp)
movaps 0x29a1(%rip),%xmm0
movaps %xmm0,0x330(%rsp)
movaps 0x2a22(%rip),%xmm0
movaps %xmm0,0x320(%rsp)
movaps 0x2a03(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
movaps 0x29e4(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0x29c5(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0x29a6(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0x2a27(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0x2a08(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0x29e9(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0x29ca(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0x29ab(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0x2a2c(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0x2a0d(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0x29ee(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0x29cf(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0x29b0(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0x2a31(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0x2a12(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0x29f3(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0x29d4(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0x29b5(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0x2a36(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0x2a17(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0x29f8(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x29d9(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0x29ba(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0x2a3b(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0x2a1c(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0x29fd(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x29de(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x29bf(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x2a40(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x2a21(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x2a02(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x29e3(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x29c4(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x2a45(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x2a26(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x2a07(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x29e8(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x29c9(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
lea    0x60(%rsp),%rax
mov    %rax,0x10(%rsp)
lea    0x330(%rsp),%rax
mov    %rax,0x18(%rsp)
lea    0x2e0(%rsp),%rax
mov    %rax,0x20(%rsp)
lea    0x290(%rsp),%rax
mov    %rax,0x28(%rsp)
lea    0x240(%rsp),%rax
mov    %rax,0x30(%rsp)
lea    0x1f0(%rsp),%rax
mov    %rax,0x38(%rsp)
lea    0x1a0(%rsp),%rax
mov    %rax,0x40(%rsp)
lea    0x150(%rsp),%rax
mov    %rax,0x48(%rsp)
lea    0x100(%rsp),%rax
mov    %rax,0x50(%rsp)
lea    0xb0(%rsp),%rax
mov    %rax,0x58(%rsp)
cmp    $0x3,%esi
je     14af <mr_parsenum+0x39f>
mov    %esi,%ebp
cmp    $0x2,%esi
je     14f8 <mr_parsenum+0x3e8>
cmp    $0x1,%ebp
jne    1504 <mr_parsenum+0x3f4>
movslq (%r14),%rax
lea    (%rsp,%rax,8),%rax
add    $0x60,%rax
jmp    163d <mr_parsenum+0x52d>
movslq (%r14),%rax
mov    0x60(%rsp,%rax,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
lea    0xfa6(%rip),%r15
mov    %r13,%rdi
mov    %r15,%rsi
call   1030 <strcat@plt>
lea    0xb28(%rip),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
mov    %r13,%rdi
mov    %r15,%rsi
call   1030 <strcat@plt>
movslq 0x4(%r14),%rcx
movslq 0x8(%r14),%rax
jmp    1634 <mr_parsenum+0x524>
movslq (%r14),%rcx
movslq 0x4(%r14),%rax
jmp    1634 <mr_parsenum+0x524>
cmp    $0x4,%ebp
jl     1657 <mr_parsenum+0x547>
mov    %ebp,%ebx
not    %ebx
and    $0x1,%ebx
test   $0x1,%bpl
jne    1560 <mr_parsenum+0x450>
movslq (%r14),%rax
mov    0x60(%rsp,%rax,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
lea    0xf3b(%rip),%r12
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
lea    -0x1(%rbp),%eax
shr    %eax
lea    0x2568(%rip),%rcx
mov    0x8(%rcx,%rax,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
mov    %rbp,0x8(%rsp)
add    $0xfffffffd,%ebp
cmp    %ebp,%ebx
jge    15dc <mr_parsenum+0x4cc>
mov    0x8(%rsp),%rax
mov    %eax,%r15d
sub    %ebx,%r15d
lea    0xeee(%rip),%r12
xchg   %ax,%ax
movslq (%r14,%rbx,4),%rax
mov    0x10(%rsp,%rax,8),%rax
movslq 0x4(%r14,%rbx,4),%rcx
mov    (%rax,%rcx,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
mov    %r15d,%eax
shr    $0x1f,%eax
add    %r15d,%eax
sar    %eax
cltq
lea    0x24f7(%rip),%rcx
mov    (%rcx,%rax,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
add    $0x2,%rbx
add    $0xfffffffe,%r15d
cmp    %ebx,%ebp
jg     1580 <mr_parsenum+0x470>
movslq %ebp,%rax
movslq (%r14,%rax,4),%rax
test   %rax,%rax
je     1621 <mr_parsenum+0x511>
mov    0x60(%rsp,%rax,8),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
lea    0xe70(%rip),%r12
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
lea    0x9f2(%rip),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
mov    %r13,%rdi
mov    %r12,%rsi
call   1030 <strcat@plt>
mov    0x8(%rsp),%rdx
lea    -0x2(%rdx),%eax
movslq (%r14,%rax,4),%rcx
add    $0xffffffff,%edx
movslq (%r14,%rdx,4),%rax
shl    $0x3,%rax
add    0x10(%rsp,%rcx,8),%rax
mov    (%rax),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
lea    0xe1d(%rip),%rsi
mov    %r13,%rdi
call   1030 <strcat@plt>
add    $0x388,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c" \00"
@.str.1 = [4 x i8] c"sh8\00"
@.str.2 = [7 x i8] c"h1 z2r\00"
@.str.3 = [5 x i8] c"l2kh\00"
@.str.4 = [8 x i8] c"k12 tt4\00"
@.str.5 = [6 x i8] c"1 r1b\00"
@.str.6 = [8 x i8] c"kh1 r1b\00"
@.str.7 = [4 x i8] c"n4l\00"
@.str.8 = [7 x i8] c"p1 d1m\00"
@.str.9 = [9 x i8] c"sh1n 0kh\00"
@__const.mr_parsenum.scales = [10 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i32 0, i32 0)]
@.str.10 = [8 x i8] c"sh6n 0y\00"
@.str.11 = [3 x i8] c"8k\00"
@.str.12 = [5 x i8] c"d12n\00"
@.str.13 = [4 x i8] c"t4n\00"
@.str.14 = [5 x i8] c"ch2r\00"
@.str.15 = [5 x i8] c"p2ch\00"
@.str.16 = [6 x i8] c"s1 h2\00"
@.str.17 = [4 x i8] c"s2t\00"
@.str.18 = [5 x i8] c"2tth\00"
@.str.19 = [3 x i8] c"n6\00"
@__const.mr_parsenum.units = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i32 0, i32 0)]
@.str.20 = [6 x i8] c"d1 h2\00"
@.str.21 = [6 x i8] c"1k r2\00"
@.str.22 = [6 x i8] c"b2 r2\00"
@.str.23 = [6 x i8] c"t8 r2\00"
@.str.24 = [8 x i8] c"ch13 d2\00"
@.str.25 = [11 x i8] c"p1n dh1 r2\00"
@.str.26 = [8 x i8] c"s12 ll2\00"
@.str.27 = [7 x i8] c"s1t r2\00"
@.str.28 = [8 x i8] c"1tth r2\00"
@.str.29 = [15 x i8] c"8 k12 nna2 v3s\00"
@__const.mr_parsenum.teens = [10 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.24, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.29, i32 0, i32 0)]
@.str.30 = [4 x i8] c"v4s\00"
@.str.31 = [7 x i8] c"8k v4s\00"
@.str.32 = [7 x i8] c"b2 v4s\00"
@.str.33 = [7 x i8] c"t8 v4s\00"
@.str.34 = [9 x i8] c"ch12 v4s\00"
@.str.35 = [12 x i8] c"p1n ch1 v4s\00"
@.str.36 = [8 x i8] c"s1v v4s\00"
@.str.37 = [11 x i8] c"s1t t2 v4s\00"
@.str.38 = [14 x i8] c"1tth tth2 v4s\00"
@.str.39 = [13 x i8] c"8 k12nna t4s\00"
@__const.mr_parsenum.twenties = [10 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.39, i32 0, i32 0)]
@.str.40 = [4 x i8] c"t4s\00"
@.str.41 = [7 x i8] c"8k t4s\00"
@.str.42 = [8 x i8] c"b1t t4s\00"
@.str.43 = [8 x i8] c"t8h t4s\00"
@.str.44 = [9 x i8] c"ch13 t4s\00"
@.str.45 = [8 x i8] c"p1s t4s\00"
@.str.46 = [10 x i8] c"chh1t t4s\00"
@.str.47 = [8 x i8] c"s1d t4s\00"
@.str.48 = [8 x i8] c"1dd t4s\00"
@.str.49 = [18 x i8] c"8 k12nna ch2 ll4s\00"
@__const.mr_parsenum.thirties = [10 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.41, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.44, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.45, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.46, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.47, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.49, i32 0, i32 0)]
@.str.50 = [9 x i8] c"ch2 ll4s\00"
@.str.51 = [15 x i8] c"8k k8 ch2 ll4s\00"
@.str.52 = [12 x i8] c"b8 ch2 ll4s\00"
@.str.53 = [14 x i8] c"tHr8 ch2 ll4s\00"
@.str.54 = [17 x i8] c"ch1v v8 ch2 ll4s\00"
@.str.55 = [21 x i8] c"p1n 0ch ch8 ch2 ll4s\00"
@.str.56 = [15 x i8] c"s8 h8 ch2 ll4s\00"
@.str.57 = [16 x i8] c"s1t t8 ch2 ll4s\00"
@.str.58 = [19 x i8] c"1tth tth8 ch2 ll4s\00"
@.str.59 = [17 x i8] c"8 k12nna p1n n2s\00"
@__const.mr_parsenum.forties = [10 x i8*] [i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.50, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.51, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.52, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.53, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.54, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.56, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.57, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.58, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.59, i32 0, i32 0)]
@.str.60 = [8 x i8] c"p1n n2s\00"
@.str.61 = [10 x i8] c"8k k2 v1n\00"
@.str.62 = [7 x i8] c"b2 v1n\00"
@.str.63 = [12 x i8] c"tHr8 p1n 0n\00"
@.str.64 = [9 x i8] c"ch12 p1n\00"
@.str.65 = [15 x i8] c"p1n ch2 v1n 0n\00"
@.str.66 = [10 x i8] c"chh1p p1n\00"
@.str.67 = [11 x i8] c"s1t t2 v1n\00"
@.str.68 = [14 x i8] c"1tth tth2 v1n\00"
@.str.69 = [15 x i8] c"8 k12nna s2tth\00"
@__const.mr_parsenum.fifties = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.60, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.61, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.62, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.63, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.64, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.65, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.66, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.67, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.68, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.69, i32 0, i32 0)]
@.str.70 = [6 x i8] c"s2tth\00"
@.str.71 = [13 x i8] c"8k s1sh 0tth\00"
@.str.72 = [13 x i8] c"b2 s1sh 0tth\00"
@.str.73 = [15 x i8] c"tHr8 s1sh 0tth\00"
@.str.74 = [15 x i8] c"ch13 s1sh 0tth\00"
@.str.75 = [13 x i8] c"p2 s1sh 0tth\00"
@.str.76 = [16 x i8] c"s1 h2 s1sh 0tth\00"
@.str.77 = [16 x i8] c"s1 d5 s1sh 0tth\00"
@.str.78 = [16 x i8] c"1 dd5 s1sh 0tth\00"
@.str.79 = [17 x i8] c"8 k12nna s1t t1r\00"
@__const.mr_parsenum.sixties = [10 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.70, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.71, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.72, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.73, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.74, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.75, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.76, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.77, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.78, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.79, i32 0, i32 0)]
@.str.80 = [8 x i8] c"s1t t1r\00"
@.str.81 = [14 x i8] c"8k k2 h1t t1r\00"
@.str.82 = [11 x i8] c"b2 h1t t1r\00"
@.str.83 = [13 x i8] c"tHr8 h1t t1r\00"
@.str.84 = [17 x i8] c"ch13r y2 h1t t1r\00"
@.str.85 = [21 x i8] c"p1n 0ch ch2 h1t t1r \00"
@.str.86 = [15 x i8] c"sh1 h2 h1t t1r\00"
@.str.87 = [15 x i8] c"s1t y2 h1t t1r\00"
@.str.88 = [16 x i8] c"1tth y2 h1t t1r\00"
@.str.89 = [16 x i8] c"8 k12 nna9n sh4\00"
@__const.mr_parsenum.seventies = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.80, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.81, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.82, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.83, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.84, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.85, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.86, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.87, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.88, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.89, i32 0, i32 0)]
@.str.90 = [7 x i8] c"9n sh4\00"
@.str.91 = [13 x i8] c"8k y2 9n sh4\00"
@.str.92 = [12 x i8] c"bHy2 9n sh4\00"
@.str.93 = [16 x i8] c"0t 0r y2 9n sh4\00"
@.str.94 = [16 x i8] c"ch13r y2 9n sh4\00"
@.str.95 = [18 x i8] c"p1n chHy2 9n sh4\00"
@.str.96 = [15 x i8] c"sh1h y2 9n sh4\00"
@.str.97 = [14 x i8] c"s1t y2 9n sh4\00"
@.str.98 = [20 x i8] c"1tth 0tth y2 9n sh4\00"
@.str.99 = [17 x i8] c"8 k12nna n1v v1d\00"
@__const.mr_parsenum.eighties = [10 x i8*] [i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.90, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.91, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.92, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.93, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.94, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.95, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.96, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.97, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.98, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.99, i32 0, i32 0)]
@.str.100 = [8 x i8] c"n1v v1d\00"
@.str.101 = [10 x i8] c"8k y2 n1v\00"
@.str.102 = [9 x i8] c"bHy2 n1v\00"
@.str.103 = [14 x i8] c"0t 0r y2n n1v\00"
@.str.104 = [14 x i8] c"ch13r y2n n1v\00"
@.str.105 = [16 x i8] c"p1n chHy2n n1v\00"
@.str.106 = [14 x i8] c"sh1h y2 nna1v\00"
@.str.107 = [15 x i8] c"s1t tHy2n n1v\00"
@.str.108 = [18 x i8] c"1tth 0tth y2n n1v\00"
@.str.109 = [12 x i8] c"n1v y2n n1v\00"
@__const.mr_parsenum.nineties = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.100, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.101, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.102, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.103, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.104, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.105, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.106, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.107, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.108, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.109, i32 0, i32 0)]
@.str.110 = [8 x i8] c" G3000 \00"
define void @mr_parsenum(i32* %0, i32 %1, i8* %2) {
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i8*
%7 = alloca [10 x i8*]
%8 = alloca [10 x i8*]
%9 = alloca [10 x i8*]
%10 = alloca [10 x i8*]
%11 = alloca [10 x i8*]
%12 = alloca [10 x i8*]
%13 = alloca [10 x i8*]
%14 = alloca [10 x i8*]
%15 = alloca [10 x i8*]
%16 = alloca [10 x i8*]
%17 = alloca [10 x i8*]
%18 = alloca [10 x i8**]
%19 = alloca i32
%20 = alloca i32
store i32* %0, i32** %4
store i32 %1, i32* %5
store i8* %2, i8** %6
%21 = bitcast [10 x i8*]* %7 to i8*
%22 = bitcast [10 x i8*]* %8 to i8*
%23 = bitcast [10 x i8*]* %9 to i8*
%24 = bitcast [10 x i8*]* %10 to i8*
%25 = bitcast [10 x i8*]* %11 to i8*
%26 = bitcast [10 x i8*]* %12 to i8*
%27 = bitcast [10 x i8*]* %13 to i8*
%28 = bitcast [10 x i8*]* %14 to i8*
%29 = bitcast [10 x i8*]* %15 to i8*
%30 = bitcast [10 x i8*]* %16 to i8*
%31 = bitcast [10 x i8*]* %17 to i8*
%32 = getelementptr inbounds [10 x i8**], [10 x i8**]* %18, i64 0, i64 0
%33 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 0
store i8** %33, i8*** %32
%34 = getelementptr inbounds i8**, i8*** %32, i64 1
%35 = getelementptr inbounds [10 x i8*], [10 x i8*]* %9, i64 0, i64 0
store i8** %35, i8*** %34
%36 = getelementptr inbounds i8**, i8*** %34, i64 1
%37 = getelementptr inbounds [10 x i8*], [10 x i8*]* %10, i64 0, i64 0
store i8** %37, i8*** %36
%38 = getelementptr inbounds i8**, i8*** %36, i64 1
%39 = getelementptr inbounds [10 x i8*], [10 x i8*]* %11, i64 0, i64 0
store i8** %39, i8*** %38
%40 = getelementptr inbounds i8**, i8*** %38, i64 1
%41 = getelementptr inbounds [10 x i8*], [10 x i8*]* %12, i64 0, i64 0
store i8** %41, i8*** %40
%42 = getelementptr inbounds i8**, i8*** %40, i64 1
%43 = getelementptr inbounds [10 x i8*], [10 x i8*]* %13, i64 0, i64 0
store i8** %43, i8*** %42
%44 = getelementptr inbounds i8**, i8*** %42, i64 1
%45 = getelementptr inbounds [10 x i8*], [10 x i8*]* %14, i64 0, i64 0
store i8** %45, i8*** %44
%46 = getelementptr inbounds i8**, i8*** %44, i64 1
%47 = getelementptr inbounds [10 x i8*], [10 x i8*]* %15, i64 0, i64 0
store i8** %47, i8*** %46
%48 = getelementptr inbounds i8**, i8*** %46, i64 1
%49 = getelementptr inbounds [10 x i8*], [10 x i8*]* %16, i64 0, i64 0
store i8** %49, i8*** %48
%50 = getelementptr inbounds i8**, i8*** %48, i64 1
%51 = getelementptr inbounds [10 x i8*], [10 x i8*]* %17, i64 0, i64 0
store i8** %51, i8*** %50
store i32 0, i32* %19
store i32 0, i32* %20
%52 = load i32, i32* %5
%53 = icmp eq i32 %52, 1
br i1 %53, label %54, label %67
54: ; preds = %3
%55 = load i8*, i8** %6
%56 = load i32*, i32** %4
%57 = load i32, i32* %19
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds i32, i32* %56, i64 %58
%60 = load i32, i32* %59
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 %61
%63 = load i8*, i8** %62
%64 = call i32 @strcat(i8* %55, i8* %63)
%65 = load i8*, i8** %6
%66 = call i32 @strcat(i8* %65, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %279
67: ; preds = %3
%68 = load i32, i32* %5
%69 = icmp eq i32 %68, 2
br i1 %69, label %70, label %92
70: ; preds = %67
%71 = load i8*, i8** %6
%72 = load i32*, i32** %4
%73 = load i32, i32* %19
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32, i32* %72, i64 %74
%76 = load i32, i32* %75
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [10 x i8**], [10 x i8**]* %18, i64 0, i64 %77
%79 = load i8**, i8*** %78
%80 = load i32*, i32** %4
%81 = load i32, i32* %19
%82 = add nsw i32 %81, 1
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds i32, i32* %80, i64 %83
%85 = load i32, i32* %84
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i8*, i8** %79, i64 %86
%88 = load i8*, i8** %87
%89 = call i32 @strcat(i8* %71, i8* %88)
%90 = load i8*, i8** %6
%91 = call i32 @strcat(i8* %90, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %278
92: ; preds = %67
%93 = load i32, i32* %5
%94 = icmp eq i32 %93, 3
br i1 %94, label %95, label %137
95: ; preds = %92
%96 = load i8*, i8** %6
%97 = load i32*, i32** %4
%98 = load i32, i32* %19
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds i32, i32* %97, i64 %99
%101 = load i32, i32* %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 %102
%104 = load i8*, i8** %103
%105 = call i32 @strcat(i8* %96, i8* %104)
%106 = load i8*, i8** %6
%107 = call i32 @strcat(i8* %106, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%108 = load i32, i32* %19
%109 = add nsw i32 %108, 1
store i32 %109, i32* %19
%110 = load i8*, i8** %6
%111 = getelementptr inbounds [10 x i8*], [10 x i8*]* %7, i64 0, i64 1
%112 = load i8*, i8** %111
%113 = call i32 @strcat(i8* %110, i8* %112)
%114 = load i8*, i8** %6
%115 = call i32 @strcat(i8* %114, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%116 = load i8*, i8** %6
%117 = load i32*, i32** %4
%118 = load i32, i32* %19
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i32, i32* %117, i64 %119
%121 = load i32, i32* %120
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [10 x i8**], [10 x i8**]* %18, i64 0, i64 %122
%124 = load i8**, i8*** %123
%125 = load i32*, i32** %4
%126 = load i32, i32* %19
%127 = add nsw i32 %126, 1
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i32, i32* %125, i64 %128
%130 = load i32, i32* %129
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i8*, i8** %124, i64 %131
%133 = load i8*, i8** %132
%134 = call i32 @strcat(i8* %116, i8* %133)
%135 = load i8*, i8** %6
%136 = call i32 @strcat(i8* %135, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %277
137: ; preds = %92
%138 = load i32, i32* %5
%139 = icmp sgt i32 %138, 3
br i1 %139, label %140, label %276
140: ; preds = %137
store i32 0, i32* %20
%141 = load i32, i32* %5
%142 = srem i32 %141, 2
%143 = icmp ne i32 %142, 0
%144 = zext i1 %143 to i64
%145 = select i1 %143, i32 0, i32 1
store i32 %145, i32* %19
%146 = load i32, i32* %19
%147 = icmp ne i32 %146, 0
br i1 %147, label %148, label %175
148: ; preds = %140
%149 = load i8*, i8** %6
%150 = load i32*, i32** %4
%151 = getelementptr inbounds i32, i32* %150, i64 0
%152 = load i32, i32* %151
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 %153
%155 = load i8*, i8** %154
%156 = call i32 @strcat(i8* %149, i8* %155)
%157 = load i8*, i8** %6
%158 = call i32 @strcat(i8* %157, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%159 = load i32, i32* %20
%160 = add nsw i32 %159, 1
store i32 %160, i32* %20
%161 = load i8*, i8** %6
%162 = load i32, i32* %5
%163 = load i32, i32* %19
%164 = sub nsw i32 %162, %163
%165 = sdiv i32 %164, 2
%166 = add nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [10 x i8*], [10 x i8*]* %7, i64 0, i64 %167
%169 = load i8*, i8** %168
%170 = call i32 @strcat(i8* %161, i8* %169)
%171 = load i8*, i8** %6
%172 = call i32 @strcat(i8* %171, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%173 = load i32, i32* %20
%174 = add nsw i32 %173, 1
store i32 %174, i32* %20
br label %175
175: ; preds = %148, %140
br label %176
176: ; preds = %218, %175
%177 = load i32, i32* %19
%178 = load i32, i32* %5
%179 = sub nsw i32 %178, 3
%180 = icmp slt i32 %177, %179
br i1 %180, label %181, label %221
181: ; preds = %176
%182 = load i8*, i8** %6
%183 = load i32*, i32** %4
%184 = load i32, i32* %19
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i32, i32* %183, i64 %185
%187 = load i32, i32* %186
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds [10 x i8**], [10 x i8**]* %18, i64 0, i64 %188
%190 = load i8**, i8*** %189
%191 = load i32*, i32** %4
%192 = load i32, i32* %19
%193 = add nsw i32 %192, 1
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds i32, i32* %191, i64 %194
%196 = load i32, i32* %195
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds i8*, i8** %190, i64 %197
%199 = load i8*, i8** %198
%200 = call i32 @strcat(i8* %182, i8* %199)
%201 = load i8*, i8** %6
%202 = call i32 @strcat(i8* %201, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%203 = load i32, i32* %20
%204 = add nsw i32 %203, 1
store i32 %204, i32* %20
%205 = load i8*, i8** %6
%206 = load i32, i32* %5
%207 = load i32, i32* %19
%208 = sub nsw i32 %206, %207
%209 = sdiv i32 %208, 2
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [10 x i8*], [10 x i8*]* %7, i64 0, i64 %210
%212 = load i8*, i8** %211
%213 = call i32 @strcat(i8* %205, i8* %212)
%214 = load i8*, i8** %6
%215 = call i32 @strcat(i8* %214, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%216 = load i32, i32* %20
%217 = add nsw i32 %216, 1
store i32 %217, i32* %20
br label %218
218: ; preds = %181
%219 = load i32, i32* %19
%220 = add nsw i32 %219, 2
store i32 %220, i32* %19
br label %176
221: ; preds = %176
%222 = load i32*, i32** %4
%223 = load i32, i32* %5
%224 = sub nsw i32 %223, 3
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i32, i32* %222, i64 %225
%227 = load i32, i32* %226
%228 = icmp ne i32 %227, 0
br i1 %228, label %229, label %253
229: ; preds = %221
%230 = load i8*, i8** %6
%231 = load i32*, i32** %4
%232 = load i32, i32* %5
%233 = sub nsw i32 %232, 3
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i32, i32* %231, i64 %234
%236 = load i32, i32* %235
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 %237
%239 = load i8*, i8** %238
%240 = call i32 @strcat(i8* %230, i8* %239)
%241 = load i8*, i8** %6
%242 = call i32 @strcat(i8* %241, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%243 = load i32, i32* %20
%244 = add nsw i32 %243, 1
store i32 %244, i32* %20
%245 = load i8*, i8** %6
%246 = getelementptr inbounds [10 x i8*], [10 x i8*]* %7, i64 0, i64 1
%247 = load i8*, i8** %246
%248 = call i32 @strcat(i8* %245, i8* %247)
%249 = load i8*, i8** %6
%250 = call i32 @strcat(i8* %249, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%251 = load i32, i32* %20
%252 = add nsw i32 %251, 1
store i32 %252, i32* %20
br label %253
253: ; preds = %229, %221
%254 = load i8*, i8** %6
%255 = load i32*, i32** %4
%256 = load i32, i32* %5
%257 = sub nsw i32 %256, 2
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds i32, i32* %255, i64 %258
%260 = load i32, i32* %259
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [10 x i8**], [10 x i8**]* %18, i64 0, i64 %261
%263 = load i8**, i8*** %262
%264 = load i32*, i32** %4
%265 = load i32, i32* %5
%266 = sub nsw i32 %265, 1
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds i32, i32* %264, i64 %267
%269 = load i32, i32* %268
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds i8*, i8** %263, i64 %270
%272 = load i8*, i8** %271
%273 = call i32 @strcat(i8* %254, i8* %272)
%274 = load i8*, i8** %6
%275 = call i32 @strcat(i8* %274, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %276
276: ; preds = %253, %137
br label %277
277: ; preds = %276, %95
br label %278
278: ; preds = %277, %70
br label %279
279: ; preds = %278, %54
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c" \00"
@.str.1 = [4 x i8] c"sh8\00"
@.str.2 = [7 x i8] c"h1 z2r\00"
@.str.3 = [5 x i8] c"l2kh\00"
@.str.4 = [8 x i8] c"k12 tt4\00"
@.str.5 = [6 x i8] c"1 r1b\00"
@.str.6 = [8 x i8] c"kh1 r1b\00"
@.str.7 = [4 x i8] c"n4l\00"
@.str.8 = [7 x i8] c"p1 d1m\00"
@.str.9 = [9 x i8] c"sh1n 0kh\00"
@__const.mr_parsenum.scales = [10 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i32 0, i32 0)]
@.str.10 = [8 x i8] c"sh6n 0y\00"
@.str.11 = [3 x i8] c"8k\00"
@.str.12 = [5 x i8] c"d12n\00"
@.str.13 = [4 x i8] c"t4n\00"
@.str.14 = [5 x i8] c"ch2r\00"
@.str.15 = [5 x i8] c"p2ch\00"
@.str.16 = [6 x i8] c"s1 h2\00"
@.str.17 = [4 x i8] c"s2t\00"
@.str.18 = [5 x i8] c"2tth\00"
@.str.19 = [3 x i8] c"n6\00"
@__const.mr_parsenum.units = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i32 0, i32 0)]
@.str.20 = [6 x i8] c"d1 h2\00"
@.str.21 = [6 x i8] c"1k r2\00"
@.str.22 = [6 x i8] c"b2 r2\00"
@.str.23 = [6 x i8] c"t8 r2\00"
@.str.24 = [8 x i8] c"ch13 d2\00"
@.str.25 = [11 x i8] c"p1n dh1 r2\00"
@.str.26 = [8 x i8] c"s12 ll2\00"
@.str.27 = [7 x i8] c"s1t r2\00"
@.str.28 = [8 x i8] c"1tth r2\00"
@.str.29 = [15 x i8] c"8 k12 nna2 v3s\00"
@__const.mr_parsenum.teens = [10 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.24, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.29, i32 0, i32 0)]
@.str.30 = [4 x i8] c"v4s\00"
@.str.31 = [7 x i8] c"8k v4s\00"
@.str.32 = [7 x i8] c"b2 v4s\00"
@.str.33 = [7 x i8] c"t8 v4s\00"
@.str.34 = [9 x i8] c"ch12 v4s\00"
@.str.35 = [12 x i8] c"p1n ch1 v4s\00"
@.str.36 = [8 x i8] c"s1v v4s\00"
@.str.37 = [11 x i8] c"s1t t2 v4s\00"
@.str.38 = [14 x i8] c"1tth tth2 v4s\00"
@.str.39 = [13 x i8] c"8 k12nna t4s\00"
@__const.mr_parsenum.twenties = [10 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.39, i32 0, i32 0)]
@.str.40 = [4 x i8] c"t4s\00"
@.str.41 = [7 x i8] c"8k t4s\00"
@.str.42 = [8 x i8] c"b1t t4s\00"
@.str.43 = [8 x i8] c"t8h t4s\00"
@.str.44 = [9 x i8] c"ch13 t4s\00"
@.str.45 = [8 x i8] c"p1s t4s\00"
@.str.46 = [10 x i8] c"chh1t t4s\00"
@.str.47 = [8 x i8] c"s1d t4s\00"
@.str.48 = [8 x i8] c"1dd t4s\00"
@.str.49 = [18 x i8] c"8 k12nna ch2 ll4s\00"
@__const.mr_parsenum.thirties = [10 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.41, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.44, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.45, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.46, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.47, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.49, i32 0, i32 0)]
@.str.50 = [9 x i8] c"ch2 ll4s\00"
@.str.51 = [15 x i8] c"8k k8 ch2 ll4s\00"
@.str.52 = [12 x i8] c"b8 ch2 ll4s\00"
@.str.53 = [14 x i8] c"tHr8 ch2 ll4s\00"
@.str.54 = [17 x i8] c"ch1v v8 ch2 ll4s\00"
@.str.55 = [21 x i8] c"p1n 0ch ch8 ch2 ll4s\00"
@.str.56 = [15 x i8] c"s8 h8 ch2 ll4s\00"
@.str.57 = [16 x i8] c"s1t t8 ch2 ll4s\00"
@.str.58 = [19 x i8] c"1tth tth8 ch2 ll4s\00"
@.str.59 = [17 x i8] c"8 k12nna p1n n2s\00"
@__const.mr_parsenum.forties = [10 x i8*] [i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.50, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.51, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.52, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.53, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.54, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.56, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.57, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.58, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.59, i32 0, i32 0)]
@.str.60 = [8 x i8] c"p1n n2s\00"
@.str.61 = [10 x i8] c"8k k2 v1n\00"
@.str.62 = [7 x i8] c"b2 v1n\00"
@.str.63 = [12 x i8] c"tHr8 p1n 0n\00"
@.str.64 = [9 x i8] c"ch12 p1n\00"
@.str.65 = [15 x i8] c"p1n ch2 v1n 0n\00"
@.str.66 = [10 x i8] c"chh1p p1n\00"
@.str.67 = [11 x i8] c"s1t t2 v1n\00"
@.str.68 = [14 x i8] c"1tth tth2 v1n\00"
@.str.69 = [15 x i8] c"8 k12nna s2tth\00"
@__const.mr_parsenum.fifties = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.60, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.61, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.62, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.63, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.64, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.65, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.66, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.67, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.68, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.69, i32 0, i32 0)]
@.str.70 = [6 x i8] c"s2tth\00"
@.str.71 = [13 x i8] c"8k s1sh 0tth\00"
@.str.72 = [13 x i8] c"b2 s1sh 0tth\00"
@.str.73 = [15 x i8] c"tHr8 s1sh 0tth\00"
@.str.74 = [15 x i8] c"ch13 s1sh 0tth\00"
@.str.75 = [13 x i8] c"p2 s1sh 0tth\00"
@.str.76 = [16 x i8] c"s1 h2 s1sh 0tth\00"
@.str.77 = [16 x i8] c"s1 d5 s1sh 0tth\00"
@.str.78 = [16 x i8] c"1 dd5 s1sh 0tth\00"
@.str.79 = [17 x i8] c"8 k12nna s1t t1r\00"
@__const.mr_parsenum.sixties = [10 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.70, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.71, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.72, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.73, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.74, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.75, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.76, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.77, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.78, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.79, i32 0, i32 0)]
@.str.80 = [8 x i8] c"s1t t1r\00"
@.str.81 = [14 x i8] c"8k k2 h1t t1r\00"
@.str.82 = [11 x i8] c"b2 h1t t1r\00"
@.str.83 = [13 x i8] c"tHr8 h1t t1r\00"
@.str.84 = [17 x i8] c"ch13r y2 h1t t1r\00"
@.str.85 = [21 x i8] c"p1n 0ch ch2 h1t t1r \00"
@.str.86 = [15 x i8] c"sh1 h2 h1t t1r\00"
@.str.87 = [15 x i8] c"s1t y2 h1t t1r\00"
@.str.88 = [16 x i8] c"1tth y2 h1t t1r\00"
@.str.89 = [16 x i8] c"8 k12 nna9n sh4\00"
@__const.mr_parsenum.seventies = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.80, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.81, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.82, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.83, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.84, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.85, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.86, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.87, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.88, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.89, i32 0, i32 0)]
@.str.90 = [7 x i8] c"9n sh4\00"
@.str.91 = [13 x i8] c"8k y2 9n sh4\00"
@.str.92 = [12 x i8] c"bHy2 9n sh4\00"
@.str.93 = [16 x i8] c"0t 0r y2 9n sh4\00"
@.str.94 = [16 x i8] c"ch13r y2 9n sh4\00"
@.str.95 = [18 x i8] c"p1n chHy2 9n sh4\00"
@.str.96 = [15 x i8] c"sh1h y2 9n sh4\00"
@.str.97 = [14 x i8] c"s1t y2 9n sh4\00"
@.str.98 = [20 x i8] c"1tth 0tth y2 9n sh4\00"
@.str.99 = [17 x i8] c"8 k12nna n1v v1d\00"
@__const.mr_parsenum.eighties = [10 x i8*] [i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.90, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.91, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.92, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.93, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.94, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.95, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.96, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.97, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.98, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.99, i32 0, i32 0)]
@.str.100 = [8 x i8] c"n1v v1d\00"
@.str.101 = [10 x i8] c"8k y2 n1v\00"
@.str.102 = [9 x i8] c"bHy2 n1v\00"
@.str.103 = [14 x i8] c"0t 0r y2n n1v\00"
@.str.104 = [14 x i8] c"ch13r y2n n1v\00"
@.str.105 = [16 x i8] c"p1n chHy2n n1v\00"
@.str.106 = [14 x i8] c"sh1h y2 nna1v\00"
@.str.107 = [15 x i8] c"s1t tHy2n n1v\00"
@.str.108 = [18 x i8] c"1tth 0tth y2n n1v\00"
@.str.109 = [12 x i8] c"n1v y2n n1v\00"
@__const.mr_parsenum.nineties = [10 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.100, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.101, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.102, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.103, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.104, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.105, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.106, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.107, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.108, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.109, i32 0, i32 0)]
@.str.110 = [8 x i8] c" G3000 \00"
define void @mr_parsenum(i32* nocapture %0, i32 %1, i8* %2) {
%4 = alloca [10 x i8*]
%5 = alloca [10 x i8*]
%6 = alloca [10 x i8*]
%7 = alloca [10 x i8*]
%8 = alloca [10 x i8*]
%9 = alloca [10 x i8*]
%10 = alloca [10 x i8*]
%11 = alloca [10 x i8*]
%12 = alloca [10 x i8*]
%13 = alloca [10 x i8*]
%14 = alloca [10 x i8**]
%15 = bitcast [10 x i8*]* %4 to i8*
%16 = bitcast [10 x i8*]* %5 to i8*
%17 = bitcast [10 x i8*]* %6 to i8*
%18 = bitcast [10 x i8*]* %7 to i8*
%19 = bitcast [10 x i8*]* %8 to i8*
%20 = bitcast [10 x i8*]* %9 to i8*
%21 = bitcast [10 x i8*]* %10 to i8*
%22 = bitcast [10 x i8*]* %11 to i8*
%23 = bitcast [10 x i8*]* %12 to i8*
%24 = bitcast [10 x i8*]* %13 to i8*
%25 = bitcast [10 x i8**]* %14 to i8*
%26 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 0
%27 = getelementptr inbounds [10 x i8*], [10 x i8*]* %4, i64 0, i64 0
store i8** %27, i8*** %26
%28 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 1
%29 = getelementptr inbounds [10 x i8*], [10 x i8*]* %5, i64 0, i64 0
store i8** %29, i8*** %28
%30 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 2
%31 = getelementptr inbounds [10 x i8*], [10 x i8*]* %6, i64 0, i64 0
store i8** %31, i8*** %30
%32 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 3
%33 = getelementptr inbounds [10 x i8*], [10 x i8*]* %7, i64 0, i64 0
store i8** %33, i8*** %32
%34 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 4
%35 = getelementptr inbounds [10 x i8*], [10 x i8*]* %8, i64 0, i64 0
store i8** %35, i8*** %34
%36 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 5
%37 = getelementptr inbounds [10 x i8*], [10 x i8*]* %9, i64 0, i64 0
store i8** %37, i8*** %36
%38 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 6
%39 = getelementptr inbounds [10 x i8*], [10 x i8*]* %10, i64 0, i64 0
store i8** %39, i8*** %38
%40 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 7
%41 = getelementptr inbounds [10 x i8*], [10 x i8*]* %11, i64 0, i64 0
store i8** %41, i8*** %40
%42 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 8
%43 = getelementptr inbounds [10 x i8*], [10 x i8*]* %12, i64 0, i64 0
store i8** %43, i8*** %42
%44 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 9
%45 = getelementptr inbounds [10 x i8*], [10 x i8*]* %13, i64 0, i64 0
store i8** %45, i8*** %44
switch i32 %1, label %77 [
i32 1, label %46
i32 2, label %50
i32 3, label %59
]
46: ; preds = %3
%47 = load i32, i32* %0
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [10 x i8*], [10 x i8*]* %4, i64 0, i64 %48
br label %158
50: ; preds = %3
%51 = load i32, i32* %0
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 %52
%54 = load i8**, i8*** %53
%55 = getelementptr inbounds i32, i32* %0, i64 1
%56 = load i32, i32* %55
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds i8*, i8** %54, i64 %57
br label %158
59: ; preds = %3
%60 = load i32, i32* %0
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [10 x i8*], [10 x i8*]* %4, i64 0, i64 %61
%63 = load i8*, i8** %62
%64 = call i32 @strcat(i8* %2, i8* %63)
%65 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%66 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%67 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%68 = getelementptr inbounds i32, i32* %0, i64 1
%69 = load i32, i32* %68
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 %70
%72 = load i8**, i8*** %71
%73 = getelementptr inbounds i32, i32* %0, i64 2
%74 = load i32, i32* %73
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i8*, i8** %72, i64 %75
br label %158
77: ; preds = %3
%78 = icmp sgt i32 %1, 3
br i1 %78, label %79, label %163
79: ; preds = %77
%80 = and i32 %1, 1
%81 = xor i32 %80, 1
%82 = icmp eq i32 %81, 0
br i1 %82, label %98, label %83
83: ; preds = %79
%84 = load i32, i32* %0
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [10 x i8*], [10 x i8*]* %4, i64 0, i64 %85
%87 = load i8*, i8** %86
%88 = call i32 @strcat(i8* %2, i8* %87)
%89 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%90 = add nsw i32 %1, -1
%91 = lshr i32 %90, 1
%92 = add nuw nsw i32 %91, 1
%93 = zext i32 %92 to i64
%94 = getelementptr inbounds [10 x i8*], [10 x i8*]* @__const.mr_parsenum.scales, i64 0, i64 %93
%95 = load i8*, i8** %94
%96 = call i32 @strcat(i8* %2, i8* %95)
%97 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %98
98: ; preds = %83, %79
%99 = add nsw i32 %1, -3
%100 = icmp slt i32 %81, %99
br i1 %100, label %101, label %131
101: ; preds = %98
%102 = and i32 %1, 1
%103 = xor i32 %102, 1
%104 = zext i32 %103 to i64
br label %105
105: ; preds = %101, %105
%106 = phi i64 [ %104, %101 ], [ %128, %105 ]
%107 = getelementptr inbounds i32, i32* %0, i64 %106
%108 = load i32, i32* %107
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 %109
%111 = load i8**, i8*** %110
%112 = add nuw nsw i64 %106, 1
%113 = getelementptr inbounds i32, i32* %0, i64 %112
%114 = load i32, i32* %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds i8*, i8** %111, i64 %115
%117 = load i8*, i8** %116
%118 = call i32 @strcat(i8* %2, i8* %117)
%119 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%120 = trunc i64 %106 to i32
%121 = sub nsw i32 %1, %120
%122 = sdiv i32 %121, 2
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [10 x i8*], [10 x i8*]* @__const.mr_parsenum.scales, i64 0, i64 %123
%125 = load i8*, i8** %124
%126 = call i32 @strcat(i8* %2, i8* %125)
%127 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%128 = add nuw i64 %106, 2
%129 = trunc i64 %128 to i32
%130 = icmp sgt i32 %99, %129
br i1 %130, label %105, label %131
131: ; preds = %105, %98
%132 = sext i32 %99 to i64
%133 = getelementptr inbounds i32, i32* %0, i64 %132
%134 = load i32, i32* %133
%135 = icmp eq i32 %134, 0
br i1 %135, label %144, label %136
136: ; preds = %131
%137 = sext i32 %134 to i64
%138 = getelementptr inbounds [10 x i8*], [10 x i8*]* %4, i64 0, i64 %137
%139 = load i8*, i8** %138
%140 = call i32 @strcat(i8* %2, i8* %139)
%141 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
%142 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%143 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %144
144: ; preds = %136, %131
%145 = add nsw i32 %1, -2
%146 = zext i32 %145 to i64
%147 = getelementptr inbounds i32, i32* %0, i64 %146
%148 = load i32, i32* %147
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [10 x i8**], [10 x i8**]* %14, i64 0, i64 %149
%151 = load i8**, i8*** %150
%152 = add nsw i32 %1, -1
%153 = zext i32 %152 to i64
%154 = getelementptr inbounds i32, i32* %0, i64 %153
%155 = load i32, i32* %154
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds i8*, i8** %151, i64 %156
br label %158
158: ; preds = %46, %59, %144, %50
%159 = phi i8** [ %58, %50 ], [ %157, %144 ], [ %76, %59 ], [ %49, %46 ]
%160 = load i8*, i8** %159
%161 = call i32 @strcat(i8* %2, i8* %160)
%162 = call i32 @strcat(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.110, i64 0, i64 0))
br label %163
163: ; preds = %158, %77
ret void
}