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

/* Variables and functions */
int getc(int /*<<< orphan*/ *);
int /*<<< orphan*/ ungetc(int, int /*<<< orphan*/ *);
void han2zen(FILE *in, int *one, int *two, int incode) {
  int junk, maru, nigori;
  maru = nigori = 0;
  if (incode == 5) {
    *two = getc(in);
    if (*two == 222) {
      if ((((*one >= 182) && (*one <= 196)) ||
           ((*one >= 202) && (*one <= 206))) ||
          (*one == 179))
        nigori = 1;
      else
        ungetc(*two, in);
    } else if (*two == 223) {
      if ((*one >= 202) && (*one <= 206))
        maru = 1;
      else
        ungetc(*two, in);
    } else
      ungetc(*two, in);
  } else if (incode == 4) {
    junk = getc(in);
    if (junk == 142) {
      *two = getc(in);
      if (*two == 222) {
        if ((((*one >= 182) && (*one <= 196)) ||
             ((*one >= 202) && (*one <= 206))) ||
            (*one == 179))
          nigori = 1;
        else {
          ungetc(*two, in);
          ungetc(junk, in);
        }
      } else if (*two == 223) {
        if ((*one >= 202) && (*one <= 206))
          maru = 1;
        else {
          ungetc(*two, in);
          ungetc(junk, in);
        }
      } else {
        ungetc(*two, in);
        ungetc(junk, in);
      }
    } else
      ungetc(junk, in);
  }
  switch (*one) {
  case 161:
    *one = 129;
    *two = 66;
    break;
  case 162:
    *one = 129;
    *two = 117;
    break;
  case 163:
    *one = 129;
    *two = 118;
    break;
  case 164:
    *one = 129;
    *two = 65;
    break;
  case 165:
    *one = 129;
    *two = 69;
    break;
  case 166:
    *one = 131;
    *two = 146;
    break;
  case 167:
    *one = 131;
    *two = 64;
    break;
  case 168:
    *one = 131;
    *two = 66;
    break;
  case 169:
    *one = 131;
    *two = 68;
    break;
  case 170:
    *one = 131;
    *two = 70;
    break;
  case 171:
    *one = 131;
    *two = 72;
    break;
  case 172:
    *one = 131;
    *two = 131;
    break;
  case 173:
    *one = 131;
    *two = 133;
    break;
  case 174:
    *one = 131;
    *two = 135;
    break;
  case 175:
    *one = 131;
    *two = 98;
    break;
  case 176:
    *one = 129;
    *two = 91;
    break;
  case 177:
    *one = 131;
    *two = 65;
    break;
  case 178:
    *one = 131;
    *two = 67;
    break;
  case 179:
    *one = 131;
    *two = 69;
    break;
  case 180:
    *one = 131;
    *two = 71;
    break;
  case 181:
    *one = 131;
    *two = 73;
    break;
  case 182:
    *one = 131;
    *two = 74;
    break;
  case 183:
    *one = 131;
    *two = 76;
    break;
  case 184:
    *one = 131;
    *two = 78;
    break;
  case 185:
    *one = 131;
    *two = 80;
    break;
  case 186:
    *one = 131;
    *two = 82;
    break;
  case 187:
    *one = 131;
    *two = 84;
    break;
  case 188:
    *one = 131;
    *two = 86;
    break;
  case 189:
    *one = 131;
    *two = 88;
    break;
  case 190:
    *one = 131;
    *two = 90;
    break;
  case 191:
    *one = 131;
    *two = 92;
    break;
  case 192:
    *one = 131;
    *two = 94;
    break;
  case 193:
    *one = 131;
    *two = 96;
    break;
  case 194:
    *one = 131;
    *two = 99;
    break;
  case 195:
    *one = 131;
    *two = 101;
    break;
  case 196:
    *one = 131;
    *two = 103;
    break;
  case 197:
    *one = 131;
    *two = 105;
    break;
  case 198:
    *one = 131;
    *two = 106;
    break;
  case 199:
    *one = 131;
    *two = 107;
    break;
  case 200:
    *one = 131;
    *two = 108;
    break;
  case 201:
    *one = 131;
    *two = 109;
    break;
  case 202:
    *one = 131;
    *two = 110;
    break;
  case 203:
    *one = 131;
    *two = 113;
    break;
  case 204:
    *one = 131;
    *two = 116;
    break;
  case 205:
    *one = 131;
    *two = 119;
    break;
  case 206:
    *one = 131;
    *two = 122;
    break;
  case 207:
    *one = 131;
    *two = 125;
    break;
  case 208:
    *one = 131;
    *two = 126;
    break;
  case 209:
    *one = 131;
    *two = 128;
    break;
  case 210:
    *one = 131;
    *two = 129;
    break;
  case 211:
    *one = 131;
    *two = 130;
    break;
  case 212:
    *one = 131;
    *two = 132;
    break;
  case 213:
    *one = 131;
    *two = 134;
    break;
  case 214:
    *one = 131;
    *two = 136;
    break;
  case 215:
    *one = 131;
    *two = 137;
    break;
  case 216:
    *one = 131;
    *two = 138;
    break;
  case 217:
    *one = 131;
    *two = 139;
    break;
  case 218:
    *one = 131;
    *two = 140;
    break;
  case 219:
    *one = 131;
    *two = 141;
    break;
  case 220:
    *one = 131;
    *two = 143;
    break;
  case 221:
    *one = 131;
    *two = 147;
    break;
  case 222:
    *one = 129;
    *two = 74;
    break;
  case 223:
    *one = 129;
    *two = 75;
    break;
  }
  if (nigori) {
    if (((*two >= 74) && (*two <= 103)) || ((*two >= 110) && (*two <= 122)))
      (*two)++;
    else if ((*one == 131) && (*two == 69))
      *two = 148;
  } else if ((maru) && ((*two >= 110) && (*two <= 122)))
    *two += 2;
}


x86 assembly (clang, -O0):
<han2zen>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x5,-0x1c(%rbp)
jne    1249 <han2zen+0x129>
mov    -0x8(%rbp),%rdi
call   1040 <getc@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0xde,(%rax)
jne    11e0 <han2zen+0xc0>
mov    -0x10(%rbp),%rax
cmpl   $0xb6,(%rax)
jl     1190 <han2zen+0x70>
mov    -0x10(%rbp),%rax
cmpl   $0xc4,(%rax)
jle    11c0 <han2zen+0xa0>
mov    -0x10(%rbp),%rax
cmpl   $0xca,(%rax)
jl     11b0 <han2zen+0x90>
mov    -0x10(%rbp),%rax
cmpl   $0xce,(%rax)
jle    11c0 <han2zen+0xa0>
mov    -0x10(%rbp),%rax
cmpl   $0xb3,(%rax)
jne    11cc <han2zen+0xac>
movl   $0x1,-0x28(%rbp)
jmp    11db <han2zen+0xbb>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    1244 <han2zen+0x124>
mov    -0x18(%rbp),%rax
cmpl   $0xdf,(%rax)
jne    1230 <han2zen+0x110>
mov    -0x10(%rbp),%rax
cmpl   $0xca,(%rax)
jl     121c <han2zen+0xfc>
mov    -0x10(%rbp),%rax
cmpl   $0xce,(%rax)
jg     121c <han2zen+0xfc>
movl   $0x1,-0x24(%rbp)
jmp    122b <han2zen+0x10b>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    123f <han2zen+0x11f>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    1244 <han2zen+0x124>
jmp    13a0 <han2zen+0x280>
cmpl   $0x4,-0x1c(%rbp)
jne    139b <han2zen+0x27b>
mov    -0x8(%rbp),%rdi
call   1040 <getc@plt>
mov    %eax,-0x20(%rbp)
cmpl   $0x8e,-0x20(%rbp)
jne    138a <han2zen+0x26a>
mov    -0x8(%rbp),%rdi
call   1040 <getc@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0xde,(%rax)
jne    1309 <han2zen+0x1e9>
mov    -0x10(%rbp),%rax
cmpl   $0xb6,(%rax)
jl     12ad <han2zen+0x18d>
mov    -0x10(%rbp),%rax
cmpl   $0xc4,(%rax)
jle    12dd <han2zen+0x1bd>
mov    -0x10(%rbp),%rax
cmpl   $0xca,(%rax)
jl     12cd <han2zen+0x1ad>
mov    -0x10(%rbp),%rax
cmpl   $0xce,(%rax)
jle    12dd <han2zen+0x1bd>
mov    -0x10(%rbp),%rax
cmpl   $0xb3,(%rax)
jne    12e9 <han2zen+0x1c9>
movl   $0x1,-0x28(%rbp)
jmp    1304 <han2zen+0x1e4>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
mov    -0x20(%rbp),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    1385 <han2zen+0x265>
mov    -0x18(%rbp),%rax
cmpl   $0xdf,(%rax)
jne    1365 <han2zen+0x245>
mov    -0x10(%rbp),%rax
cmpl   $0xca,(%rax)
jl     1345 <han2zen+0x225>
mov    -0x10(%rbp),%rax
cmpl   $0xce,(%rax)
jg     1345 <han2zen+0x225>
movl   $0x1,-0x24(%rbp)
jmp    1360 <han2zen+0x240>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
mov    -0x20(%rbp),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    1380 <han2zen+0x260>
mov    -0x18(%rbp),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
mov    -0x20(%rbp),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    1385 <han2zen+0x265>
jmp    1396 <han2zen+0x276>
mov    -0x20(%rbp),%edi
mov    -0x8(%rbp),%rsi
call   1030 <ungetc@plt>
jmp    139b <han2zen+0x27b>
jmp    13a0 <han2zen+0x280>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
add    $0xffffff5f,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x3e,%eax
ja     19f0 <han2zen+0x8d0>
mov    -0x30(%rbp),%rax
lea    0xc3b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x42,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x75,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x76,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x41,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x45,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x92,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x40,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x42,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x44,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x46,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x48,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x83,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x85,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x87,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x62,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5b,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x41,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x43,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x45,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x47,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x49,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x4a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x4c,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x4e,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x50,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x52,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x54,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x56,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x58,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5c,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x5e,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x60,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x63,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x65,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x67,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x69,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x6a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x6b,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x6c,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x6d,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x6e,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x71,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x74,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x77,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x7a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x7d,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x7e,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x80,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x81,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x82,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x84,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x86,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x88,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x89,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x8a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x8b,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x8c,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x8d,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x8f,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x83,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x93,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x4a,(%rax)
jmp    19f0 <han2zen+0x8d0>
mov    -0x10(%rbp),%rax
movl   $0x81,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x4b,(%rax)
cmpl   $0x0,-0x28(%rbp)
je     1a6f <han2zen+0x94f>
mov    -0x18(%rbp),%rax
cmpl   $0x4a,(%rax)
jl     1a14 <han2zen+0x8f4>
mov    -0x18(%rbp),%rax
cmpl   $0x67,(%rax)
jle    1a2e <han2zen+0x90e>
mov    -0x18(%rbp),%rax
cmpl   $0x6e,(%rax)
jl     1a3e <han2zen+0x91e>
mov    -0x18(%rbp),%rax
cmpl   $0x7a,(%rax)
jg     1a3e <han2zen+0x91e>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
jmp    1a6a <han2zen+0x94a>
mov    -0x10(%rbp),%rax
cmpl   $0x83,(%rax)
jne    1a65 <han2zen+0x945>
mov    -0x18(%rbp),%rax
cmpl   $0x45,(%rax)
jne    1a65 <han2zen+0x945>
mov    -0x18(%rbp),%rax
movl   $0x94,(%rax)
jmp    1a6a <han2zen+0x94a>
jmp    1aa3 <han2zen+0x983>
cmpl   $0x0,-0x24(%rbp)
je     1a9e <han2zen+0x97e>
mov    -0x18(%rbp),%rax
cmpl   $0x6e,(%rax)
jl     1a9e <han2zen+0x97e>
mov    -0x18(%rbp),%rax
cmpl   $0x7a,(%rax)
jg     1a9e <han2zen+0x97e>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0x2,%ecx
mov    %ecx,(%rax)
jmp    1aa3 <han2zen+0x983>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<han2zen>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%rbx
mov    $0x1,%bpl
cmp    $0x4,%ecx
je     1197 <han2zen+0x77>
cmp    $0x5,%ecx
jne    123d <han2zen+0x11d>
mov    %rbx,%rdi
call   1040 <getc@plt>
mov    %eax,(%r14)
cmp    $0xdf,%eax
je     11d7 <han2zen+0xb7>
cmp    $0xde,%eax
jne    1233 <han2zen+0x113>
mov    (%r15),%ecx
lea    -0xb6(%rcx),%eax
cmp    $0xf,%eax
jb     11d1 <han2zen+0xb1>
add    $0xffffff4d,%ecx
mov    $0xde,%eax
cmp    $0x1c,%ecx
jae    1233 <han2zen+0x113>
mov    $0xf800001,%edx
bt     %ecx,%edx
jae    1233 <han2zen+0x113>
jmp    12bc <han2zen+0x19c>
mov    %rbx,%rdi
call   1040 <getc@plt>
cmp    $0x8e,%eax
jne    1233 <han2zen+0x113>
mov    %rbx,%rdi
call   1040 <getc@plt>
mov    %eax,(%r14)
cmp    $0xdf,%eax
je     11ec <han2zen+0xcc>
cmp    $0xde,%eax
jne    1224 <han2zen+0x104>
mov    (%r15),%ecx
lea    -0xb6(%rcx),%eax
cmp    $0xf,%eax
jae    1206 <han2zen+0xe6>
mov    $0x1,%al
xor    %ebp,%ebp
jmp    1242 <han2zen+0x122>
mov    (%r15),%ecx
lea    -0xca(%rcx),%edx
mov    $0xdf,%eax
cmp    $0x5,%edx
jb     11ff <han2zen+0xdf>
jmp    1233 <han2zen+0x113>
mov    (%r15),%ecx
lea    -0xca(%rcx),%edx
mov    $0xdf,%eax
cmp    $0x5,%edx
jae    1224 <han2zen+0x104>
mov    $0x1,%bpl
xor    %eax,%eax
jmp    1242 <han2zen+0x122>
add    $0xffffff4d,%ecx
mov    $0xde,%eax
cmp    $0x1c,%ecx
jae    1224 <han2zen+0x104>
mov    $0xf800001,%edx
bt     %ecx,%edx
jb     12bc <han2zen+0x19c>
mov    %eax,%edi
mov    %rbx,%rsi
call   1030 <ungetc@plt>
mov    $0x8e,%eax
mov    %eax,%edi
mov    %rbx,%rsi
call   1030 <ungetc@plt>
mov    (%r15),%ecx
mov    $0x1,%al
add    $0xffffff5f,%ecx
cmp    $0x3e,%ecx
ja     126a <han2zen+0x14a>
movslq %ecx,%rcx
lea    0xda9(%rip),%rdx
mov    (%rdx,%rcx,4),%edx
lea    0xe9b(%rip),%rsi
mov    (%rsi,%rcx,4),%ecx
mov    %edx,(%r15)
mov    %ecx,(%r14)
test   %bpl,%bpl
je     1283 <han2zen+0x163>
test   %al,%al
jne    12b1 <han2zen+0x191>
mov    (%r14),%eax
lea    -0x6e(%rax),%ecx
cmp    $0xc,%ecx
ja     12b1 <han2zen+0x191>
add    $0x2,%eax
jmp    12ae <han2zen+0x18e>
mov    (%r14),%eax
lea    -0x4a(%rax),%ecx
cmp    $0x1e,%ecx
jb     12ab <han2zen+0x18b>
lea    -0x6e(%rax),%ecx
cmp    $0xc,%ecx
jbe    12ab <han2zen+0x18b>
cmpl   $0x83,(%r15)
jne    12b1 <han2zen+0x191>
cmp    $0x45,%eax
mov    $0x94,%eax
je     12ae <han2zen+0x18e>
jmp    12b1 <han2zen+0x191>
add    $0x1,%eax
mov    %eax,(%r14)
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ebp,%ebp
jmp    123d <han2zen+0x11d>

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

LLVM IR (-O2):
@switch.table.han2zen = [63 x i32] [i32 129, i32 129, i32 129, i32 129, i32 129, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 129, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 131, i32 129, i32 129]
@switch.table.han2zen.1 = [63 x i32] [i32 66, i32 117, i32 118, i32 65, i32 69, i32 146, i32 64, i32 66, i32 68, i32 70, i32 72, i32 131, i32 133, i32 135, i32 98, i32 91, i32 65, i32 67, i32 69, i32 71, i32 73, i32 74, i32 76, i32 78, i32 80, i32 82, i32 84, i32 86, i32 88, i32 90, i32 92, i32 94, i32 96, i32 99, i32 101, i32 103, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 113, i32 116, i32 119, i32 122, i32 125, i32 126, i32 128, i32 129, i32 130, i32 132, i32 134, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 143, i32 147, i32 74, i32 75]
define void @han2zen(i32* nocapture %0, i32* %1, i32* %2, i32 %3) {
switch i32 %3, label %48 [
i32 5, label %5
i32 4, label %18
]
5: ; preds = %4
%6 = tail call i32 @getc(i32* %0)
store i32 %6, i32* %2
switch i32 %6, label %37 [
i32 222, label %7
i32 223, label %14
]
7: ; preds = %5
%8 = load i32, i32* %1
%9 = add i32 %8, -182
%10 = icmp ult i32 %9, 15
br i1 %10, label %51, label %11
11: ; preds = %7
%12 = add i32 %8, -179
%13 = icmp ult i32 %12, 28
br i1 %13, label %40, label %37
14: ; preds = %5
%15 = load i32, i32* %1
%16 = add i32 %15, -202
%17 = icmp ult i32 %16, 5
br i1 %17, label %51, label %37
18: ; preds = %4
%19 = tail call i32 @getc(i32* %0)
%20 = icmp eq i32 %19, 142
br i1 %20, label %21, label %37
21: ; preds = %18
%22 = tail call i32 @getc(i32* %0)
store i32 %22, i32* %2
switch i32 %22, label %34 [
i32 222, label %23
i32 223, label %30
]
23: ; preds = %21
%24 = load i32, i32* %1
%25 = add i32 %24, -182
%26 = icmp ult i32 %25, 15
br i1 %26, label %51, label %27
27: ; preds = %23
%28 = add i32 %24, -179
%29 = icmp ult i32 %28, 28
br i1 %29, label %44, label %34
30: ; preds = %21
%31 = load i32, i32* %1
%32 = add i32 %31, -202
%33 = icmp ult i32 %32, 5
br i1 %33, label %51, label %34
34: ; preds = %44, %27, %21, %30
%35 = phi i32 [ 222, %27 ], [ 223, %30 ], [ %22, %21 ], [ 222, %44 ]
%36 = tail call i32 @ungetc(i32 %35, i32* %0)
br label %37
37: ; preds = %40, %11, %34, %18, %5, %14
%38 = phi i32 [ 222, %11 ], [ 223, %14 ], [ %6, %5 ], [ %19, %18 ], [ 142, %34 ], [ 222, %40 ]
%39 = tail call i32 @ungetc(i32 %38, i32* %0)
br label %48
40: ; preds = %11
%41 = lshr i32 260046849, %12
%42 = and i32 %41, 1
%43 = icmp eq i32 %42, 0
br i1 %43, label %37, label %48
44: ; preds = %27
%45 = lshr i32 260046849, %28
%46 = and i32 %45, 1
%47 = icmp eq i32 %46, 0
br i1 %47, label %34, label %48
48: ; preds = %44, %40, %37, %4
%49 = phi i1 [ true, %4 ], [ true, %37 ], [ false, %40 ], [ false, %44 ]
%50 = load i32, i32* %1
br label %51
51: ; preds = %48, %30, %23, %14, %7
%52 = phi i32 [ %50, %48 ], [ %31, %30 ], [ %24, %23 ], [ %15, %14 ], [ %8, %7 ]
%53 = phi i1 [ true, %48 ], [ false, %30 ], [ true, %23 ], [ false, %14 ], [ true, %7 ]
%54 = phi i1 [ %49, %48 ], [ true, %30 ], [ false, %23 ], [ true, %14 ], [ false, %7 ]
%55 = add i32 %52, -161
%56 = icmp ult i32 %55, 63
br i1 %56, label %57, label %64
57: ; preds = %51
%58 = sext i32 %55 to i64
%59 = getelementptr inbounds [63 x i32], [63 x i32]* @switch.table.han2zen, i64 0, i64 %58
%60 = load i32, i32* %59
%61 = sext i32 %55 to i64
%62 = getelementptr inbounds [63 x i32], [63 x i32]* @switch.table.han2zen.1, i64 0, i64 %61
%63 = load i32, i32* %62
store i32 %60, i32* %1
store i32 %63, i32* %2
br label %64
64: ; preds = %51, %57
br i1 %54, label %79, label %65
65: ; preds = %64
%66 = load i32, i32* %2
%67 = add i32 %66, -74
%68 = icmp ult i32 %67, 30
%69 = add i32 %66, -110
%70 = icmp ult i32 %69, 13
%71 = or i1 %68, %70
br i1 %71, label %72, label %74
72: ; preds = %65
%73 = add nuw nsw i32 %66, 1
br label %86
74: ; preds = %65
%75 = load i32, i32* %1
%76 = icmp eq i32 %75, 131
%77 = icmp eq i32 %66, 69
%78 = select i1 %76, i1 %77, i1 false
br i1 %78, label %86, label %88
79: ; preds = %64
br i1 %53, label %88, label %80
80: ; preds = %79
%81 = load i32, i32* %2
%82 = add i32 %81, -110
%83 = icmp ult i32 %82, 13
br i1 %83, label %84, label %88
84: ; preds = %80
%85 = add nuw nsw i32 %81, 2
br label %86
86: ; preds = %74, %72, %84
%87 = phi i32 [ %85, %84 ], [ %73, %72 ], [ 148, %74 ]
store i32 %87, i32* %2
br label %88
88: ; preds = %86, %79, %80, %74
ret void
}