int qspToWUpper(int c) {
  if (c < 0x100) {
    if (c == 0x00b5)
      return 0x039c;
    if ((c >= 0x00e0 && c <= 0x00fe) || (c >= 0x0061 && c <= 0x007a))
      return (c - 0x20);
    if (c == 0xff)
      return 0x0178;
    return c;
  } else if (c < 0x300) {
    if ((c >= 0x0101 && c <= 0x012f) || (c >= 0x0133 && c <= 0x0137) ||
        (c >= 0x014b && c <= 0x0177) || (c >= 0x01df && c <= 0x01ef) ||
        (c >= 0x01f9 && c <= 0x021f) || (c >= 0x0223 && c <= 0x0233)) {
      if (c & 0x01)
        return (c - 1);
      return c;
    }
    if ((c >= 0x013a && c <= 0x0148) || (c >= 0x01ce && c <= 0x1dc)) {
      if (!(c & 0x01))
        return (c - 1);
      return c;
    }
    if (c == 0x0131)
      return 0x0049;
    if (c == 0x017a || c == 0x017c || c == 0x017e)
      return (c - 1);
    if (c >= 0x017f && c <= 0x0292) {
      int k;
      switch (c) {
      case 0x017f:
        k = 0x0053;
        break;
      case 0x0183:
        k = 0x0182;
        break;
      case 0x0185:
        k = 0x0184;
        break;
      case 0x0188:
        k = 0x0187;
        break;
      case 0x018c:
        k = 0x018b;
        break;
      case 0x0192:
        k = 0x0191;
        break;
      case 0x0195:
        k = 0x01f6;
        break;
      case 0x0199:
        k = 0x0198;
        break;
      case 0x019e:
        k = 0x0220;
        break;
      case 0x01a1:
      case 0x01a3:
      case 0x01a5:
      case 0x01a8:
      case 0x01ad:
      case 0x01b0:
      case 0x01b4:
      case 0x01b6:
      case 0x01b9:
      case 0x01bd:
      case 0x01c5:
      case 0x01c8:
      case 0x01cb:
      case 0x01f2:
      case 0x01f5:
        k = c - 1;
        break;
      case 0x01bf:
        k = 0x01f7;
        break;
      case 0x01c6:
      case 0x01c9:
      case 0x01cc:
        k = c - 2;
        break;
      case 0x01dd:
        k = 0x018e;
        break;
      case 0x01f3:
        k = 0x01f1;
        break;
      case 0x0253:
        k = 0x0181;
        break;
      case 0x0254:
        k = 0x0186;
        break;
      case 0x0256:
        k = 0x0189;
        break;
      case 0x0257:
        k = 0x018a;
        break;
      case 0x0259:
        k = 0x018f;
        break;
      case 0x025b:
        k = 0x0190;
        break;
      case 0x0260:
        k = 0x0193;
        break;
      case 0x0263:
        k = 0x0194;
        break;
      case 0x0268:
        k = 0x0197;
        break;
      case 0x0269:
        k = 0x0196;
        break;
      case 0x026f:
        k = 0x019c;
        break;
      case 0x0272:
        k = 0x019d;
        break;
      case 0x0275:
        k = 0x019f;
        break;
      case 0x0280:
        k = 0x01a6;
        break;
      case 0x0283:
        k = 0x01a9;
        break;
      case 0x0288:
        k = 0x01ae;
        break;
      case 0x028a:
        k = 0x01b1;
        break;
      case 0x028b:
        k = 0x01b2;
        break;
      case 0x0292:
        k = 0x01b7;
        break;
      default:
        k = 0;
      }
      if (k != 0)
        return k;
    }
  } else if (c < 0x0400) {
    if (c == 0x03ac)
      return 0x0386;
    if ((c & 0xfff0) == 0x03a0 && c >= 0x03ad)
      return (c - 0x15);
    if (c >= 0x03b1 && c <= 0x03cb && c != 0x03c2)
      return (c - 0x20);
    if (c == 0x03c2)
      return 0x03a3;
    if (c >= 0x03cc && c <= 0x03f5) {
      int k;
      switch (c) {
      case 0x03cc:
        k = 0x038c;
        break;
      case 0x03cd:
      case 0x03ce:
        k = c - 0x3f;
        break;
      case 0x03d0:
        k = 0x0392;
        break;
      case 0x03d1:
        k = 0x0398;
        break;
      case 0x03d5:
        k = 0x03a6;
        break;
      case 0x03d6:
        k = 0x03a0;
        break;
      case 0x03d9:
      case 0x03db:
      case 0x03dd:
      case 0x03df:
      case 0x03e1:
      case 0x03e3:
      case 0x03e5:
      case 0x03e7:
      case 0x03e9:
      case 0x03eb:
      case 0x03ed:
      case 0x03ef:
        k = c - 1;
        break;
      case 0x03f0:
        k = 0x039a;
        break;
      case 0x03f1:
        k = 0x03a1;
        break;
      case 0x03f2:
        k = 0x03a3;
        break;
      case 0x03f5:
        k = 0x0395;
        break;
      default:
        k = 0;
      }
      if (k != 0)
        return k;
    }
  } else if (c < 0x500) {
    if (c >= 0x0450 && c <= 0x045f)
      return (c - 0x50);
    if (c >= 0x0430 && c <= 0x044f)
      return (c - 0x20);
    if ((c >= 0x0461 && c <= 0x0481) || (c >= 0x048b && c <= 0x04bf) ||
        (c >= 0x04d1 && c <= 0x04f5)) {
      if (c & 0x01)
        return (c - 1);
      return c;
    }
    if (c >= 0x04c2 && c <= 0x04ce) {
      if (!(c & 0x01))
        return (c - 1);
      return c;
    }
    if (c == 0x04f9)
      return 0x04f8;
  } else if (c < 0x1f00) {
    if ((c >= 0x0501 && c <= 0x050f) || (c >= 0x1e01 && c <= 0x1e95) ||
        (c >= 0x1ea1 && c <= 0x1ef9)) {
      if (c & 0x01)
        return (c - 1);
      return c;
    }
    if (c >= 0x0561 && c <= 0x0586)
      return (c - 0x30);
    if (c == 0x1e9b)
      return 0x1e60;
  } else if (c < 0x2000) {
    if ((c >= 0x1f00 && c <= 0x1f07) || (c >= 0x1f10 && c <= 0x1f15) ||
        (c >= 0x1f20 && c <= 0x1f27) || (c >= 0x1f30 && c <= 0x1f37) ||
        (c >= 0x1f40 && c <= 0x1f45) || (c >= 0x1f60 && c <= 0x1f67) ||
        (c >= 0x1f80 && c <= 0x1f87) || (c >= 0x1f90 && c <= 0x1f97) ||
        (c >= 0x1fa0 && c <= 0x1fa7))
      return (c + 0x08);
    if (c >= 0x1f51 && c <= 0x1f57 && (c & 0x01))
      return (c + 0x08);
    if (c >= 0x1f70 && c <= 0x1ff3) {
      int k;
      switch (c) {
      case 0x1fb0:
        k = 0x1fb8;
        break;
      case 0x1fb1:
        k = 0x1fb9;
        break;
      case 0x1f70:
        k = 0x1fba;
        break;
      case 0x1f71:
        k = 0x1fbb;
        break;
      case 0x1fb3:
        k = 0x1fbc;
        break;
      case 0x1fbe:
        k = 0x0399;
        break;
      case 0x1f72:
        k = 0x1fc8;
        break;
      case 0x1f73:
        k = 0x1fc9;
        break;
      case 0x1f74:
        k = 0x1fca;
        break;
      case 0x1f75:
        k = 0x1fcb;
        break;
      case 0x1fd0:
        k = 0x1fd8;
        break;
      case 0x1fd1:
        k = 0x1fd9;
        break;
      case 0x1f76:
        k = 0x1fda;
        break;
      case 0x1f77:
        k = 0x1fdb;
        break;
      case 0x1fe0:
        k = 0x1fe8;
        break;
      case 0x1fe1:
        k = 0x1fe9;
        break;
      case 0x1f7a:
        k = 0x1fea;
        break;
      case 0x1f7b:
        k = 0x1feb;
        break;
      case 0x1fe5:
        k = 0x1fec;
        break;
      case 0x1f78:
        k = 0x1ff8;
        break;
      case 0x1f79:
        k = 0x1ff9;
        break;
      case 0x1f7c:
        k = 0x1ffa;
        break;
      case 0x1f7d:
        k = 0x1ffb;
        break;
      case 0x1ff3:
        k = 0x1ffc;
        break;
      default:
        k = 0;
      }
      if (k != 0)
        return k;
    }
  } else {
    if (c >= 0x2170 && c <= 0x217f)
      return (c - 0x10);
    if (c >= 0x24d0 && c <= 0x24e9)
      return (c - 0x1a);
    if (c >= 0xff41 && c <= 0xff5a)
      return (c - 0x20);
    if (c >= 0x10428 && c <= 0x1044d)
      return (c - 0x28);
  }
  return c;
}


x86 assembly (clang, -O0):
<qspToWUpper>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
cmpl   $0x100,-0x8(%rbp)
jge    118d <qspToWUpper+0x8d>
cmpl   $0xb5,-0x8(%rbp)
jne    112d <qspToWUpper+0x2d>
movl   $0x39c,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0xe0,-0x8(%rbp)
jl     1147 <qspToWUpper+0x47>
cmpl   $0xfe,-0x8(%rbp)
jle    115b <qspToWUpper+0x5b>
cmpl   $0x61,-0x8(%rbp)
jl     1169 <qspToWUpper+0x69>
cmpl   $0x7a,-0x8(%rbp)
jg     1169 <qspToWUpper+0x69>
mov    -0x8(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0xff,-0x8(%rbp)
jne    1182 <qspToWUpper+0x82>
movl   $0x178,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x300,-0x8(%rbp)
jge    1505 <qspToWUpper+0x405>
cmpl   $0x101,-0x8(%rbp)
jl     11b4 <qspToWUpper+0xb4>
cmpl   $0x12f,-0x8(%rbp)
jle    1236 <qspToWUpper+0x136>
cmpl   $0x133,-0x8(%rbp)
jl     11ce <qspToWUpper+0xce>
cmpl   $0x137,-0x8(%rbp)
jle    1236 <qspToWUpper+0x136>
cmpl   $0x14b,-0x8(%rbp)
jl     11e8 <qspToWUpper+0xe8>
cmpl   $0x177,-0x8(%rbp)
jle    1236 <qspToWUpper+0x136>
cmpl   $0x1df,-0x8(%rbp)
jl     1202 <qspToWUpper+0x102>
cmpl   $0x1ef,-0x8(%rbp)
jle    1236 <qspToWUpper+0x136>
cmpl   $0x1f9,-0x8(%rbp)
jl     121c <qspToWUpper+0x11c>
cmpl   $0x21f,-0x8(%rbp)
jle    1236 <qspToWUpper+0x136>
cmpl   $0x223,-0x8(%rbp)
jl     125e <qspToWUpper+0x15e>
cmpl   $0x233,-0x8(%rbp)
jg     125e <qspToWUpper+0x15e>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1253 <qspToWUpper+0x153>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x13a,-0x8(%rbp)
jl     1278 <qspToWUpper+0x178>
cmpl   $0x148,-0x8(%rbp)
jle    1292 <qspToWUpper+0x192>
cmpl   $0x1ce,-0x8(%rbp)
jl     12ba <qspToWUpper+0x1ba>
cmpl   $0x1dc,-0x8(%rbp)
jg     12ba <qspToWUpper+0x1ba>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jne    12af <qspToWUpper+0x1af>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x131,-0x8(%rbp)
jne    12d3 <qspToWUpper+0x1d3>
movl   $0x49,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x17a,-0x8(%rbp)
je     12fa <qspToWUpper+0x1fa>
cmpl   $0x17c,-0x8(%rbp)
je     12fa <qspToWUpper+0x1fa>
cmpl   $0x17e,-0x8(%rbp)
jne    1308 <qspToWUpper+0x208>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x17f,-0x8(%rbp)
jl     1500 <qspToWUpper+0x400>
cmpl   $0x292,-0x8(%rbp)
jg     1500 <qspToWUpper+0x400>
mov    -0x8(%rbp),%eax
add    $0xfffffe81,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x113,%eax
ja     14df <qspToWUpper+0x3df>
mov    -0x20(%rbp),%rax
lea    0xf72(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x53,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x182,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x184,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x187,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x18b,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x191,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1f6,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x198,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x220,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1f7,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
mov    -0x8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x18e,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1f1,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x181,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x186,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x189,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x18a,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x18f,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x190,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x193,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x194,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x197,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x196,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x19c,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x19d,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x19f,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1a6,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1a9,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1ae,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1b1,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1b2,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x1b7,-0xc(%rbp)
jmp    14e6 <qspToWUpper+0x3e6>
movl   $0x0,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     14fb <qspToWUpper+0x3fb>
mov    -0xc(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1500 <qspToWUpper+0x400>
jmp    1c18 <qspToWUpper+0xb18>
cmpl   $0x400,-0x8(%rbp)
jge    169a <qspToWUpper+0x59a>
cmpl   $0x3ac,-0x8(%rbp)
jne    152b <qspToWUpper+0x42b>
movl   $0x386,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
and    $0xfff0,%eax
cmp    $0x3a0,%eax
jne    1559 <qspToWUpper+0x459>
cmpl   $0x3ad,-0x8(%rbp)
jl     1559 <qspToWUpper+0x459>
mov    -0x8(%rbp),%eax
sub    $0x15,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x3b1,-0x8(%rbp)
jl     158e <qspToWUpper+0x48e>
cmpl   $0x3cb,-0x8(%rbp)
jg     158e <qspToWUpper+0x48e>
cmpl   $0x3c2,-0x8(%rbp)
je     158e <qspToWUpper+0x48e>
mov    -0x8(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x3c2,-0x8(%rbp)
jne    15a7 <qspToWUpper+0x4a7>
movl   $0x3a3,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x3cc,-0x8(%rbp)
jl     1695 <qspToWUpper+0x595>
cmpl   $0x3f5,-0x8(%rbp)
jg     1695 <qspToWUpper+0x595>
mov    -0x8(%rbp),%eax
add    $0xfffffc34,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x29,%eax
ja     1674 <qspToWUpper+0x574>
mov    -0x28(%rbp),%rax
lea    0xc2d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x38c,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
mov    -0x8(%rbp),%eax
sub    $0x3f,%eax
mov    %eax,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x392,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x398,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x3a6,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x3a0,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x39a,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x3a1,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x3a3,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x395,-0x10(%rbp)
jmp    167b <qspToWUpper+0x57b>
movl   $0x0,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     1690 <qspToWUpper+0x590>
mov    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1695 <qspToWUpper+0x595>
jmp    1c13 <qspToWUpper+0xb13>
cmpl   $0x500,-0x8(%rbp)
jge    17cd <qspToWUpper+0x6cd>
cmpl   $0x450,-0x8(%rbp)
jl     16cf <qspToWUpper+0x5cf>
cmpl   $0x45f,-0x8(%rbp)
jg     16cf <qspToWUpper+0x5cf>
mov    -0x8(%rbp),%eax
sub    $0x50,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x430,-0x8(%rbp)
jl     16f7 <qspToWUpper+0x5f7>
cmpl   $0x44f,-0x8(%rbp)
jg     16f7 <qspToWUpper+0x5f7>
mov    -0x8(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x461,-0x8(%rbp)
jl     1711 <qspToWUpper+0x611>
cmpl   $0x481,-0x8(%rbp)
jle    1745 <qspToWUpper+0x645>
cmpl   $0x48b,-0x8(%rbp)
jl     172b <qspToWUpper+0x62b>
cmpl   $0x4bf,-0x8(%rbp)
jle    1745 <qspToWUpper+0x645>
cmpl   $0x4d1,-0x8(%rbp)
jl     176d <qspToWUpper+0x66d>
cmpl   $0x4f5,-0x8(%rbp)
jg     176d <qspToWUpper+0x66d>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1762 <qspToWUpper+0x662>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x4c2,-0x8(%rbp)
jl     17af <qspToWUpper+0x6af>
cmpl   $0x4ce,-0x8(%rbp)
jg     17af <qspToWUpper+0x6af>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jne    17a4 <qspToWUpper+0x6a4>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x4f9,-0x8(%rbp)
jne    17c8 <qspToWUpper+0x6c8>
movl   $0x4f8,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1c0e <qspToWUpper+0xb0e>
cmpl   $0x1f00,-0x8(%rbp)
jge    1896 <qspToWUpper+0x796>
cmpl   $0x501,-0x8(%rbp)
jl     17f4 <qspToWUpper+0x6f4>
cmpl   $0x50f,-0x8(%rbp)
jle    1828 <qspToWUpper+0x728>
cmpl   $0x1e01,-0x8(%rbp)
jl     180e <qspToWUpper+0x70e>
cmpl   $0x1e95,-0x8(%rbp)
jle    1828 <qspToWUpper+0x728>
cmpl   $0x1ea1,-0x8(%rbp)
jl     1850 <qspToWUpper+0x750>
cmpl   $0x1ef9,-0x8(%rbp)
jg     1850 <qspToWUpper+0x750>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1845 <qspToWUpper+0x745>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x561,-0x8(%rbp)
jl     1878 <qspToWUpper+0x778>
cmpl   $0x586,-0x8(%rbp)
jg     1878 <qspToWUpper+0x778>
mov    -0x8(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x1e9b,-0x8(%rbp)
jne    1891 <qspToWUpper+0x791>
movl   $0x1e60,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1c09 <qspToWUpper+0xb09>
cmpl   $0x2000,-0x8(%rbp)
jge    1b5f <qspToWUpper+0xa5f>
cmpl   $0x1f00,-0x8(%rbp)
jl     18bd <qspToWUpper+0x7bd>
cmpl   $0x1f07,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f10,-0x8(%rbp)
jl     18d7 <qspToWUpper+0x7d7>
cmpl   $0x1f15,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f20,-0x8(%rbp)
jl     18f1 <qspToWUpper+0x7f1>
cmpl   $0x1f27,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f30,-0x8(%rbp)
jl     190b <qspToWUpper+0x80b>
cmpl   $0x1f37,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f40,-0x8(%rbp)
jl     1925 <qspToWUpper+0x825>
cmpl   $0x1f45,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f60,-0x8(%rbp)
jl     193f <qspToWUpper+0x83f>
cmpl   $0x1f67,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f80,-0x8(%rbp)
jl     1959 <qspToWUpper+0x859>
cmpl   $0x1f87,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1f90,-0x8(%rbp)
jl     1973 <qspToWUpper+0x873>
cmpl   $0x1f97,-0x8(%rbp)
jle    198d <qspToWUpper+0x88d>
cmpl   $0x1fa0,-0x8(%rbp)
jl     199b <qspToWUpper+0x89b>
cmpl   $0x1fa7,-0x8(%rbp)
jg     199b <qspToWUpper+0x89b>
mov    -0x8(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x1f51,-0x8(%rbp)
jl     19d2 <qspToWUpper+0x8d2>
cmpl   $0x1f57,-0x8(%rbp)
jg     19d2 <qspToWUpper+0x8d2>
mov    -0x8(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     19d2 <qspToWUpper+0x8d2>
mov    -0x8(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x1f70,-0x8(%rbp)
jl     1b5a <qspToWUpper+0xa5a>
cmpl   $0x1ff3,-0x8(%rbp)
jg     1b5a <qspToWUpper+0xa5a>
mov    -0x8(%rbp),%eax
add    $0xffffe090,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x83,%eax
ja     1b39 <qspToWUpper+0xa39>
mov    -0x30(%rbp),%rax
lea    0x5f0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1fb8,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fb9,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fba,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fbb,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fbc,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x399,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fc8,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fc9,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fca,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fcb,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fd8,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fd9,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fda,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fdb,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fe8,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fe9,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fea,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1feb,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1fec,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1ff8,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1ff9,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1ffa,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1ffb,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x1ffc,-0x14(%rbp)
jmp    1b40 <qspToWUpper+0xa40>
movl   $0x0,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1b55 <qspToWUpper+0xa55>
mov    -0x14(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1b5a <qspToWUpper+0xa5a>
jmp    1c04 <qspToWUpper+0xb04>
cmpl   $0x2170,-0x8(%rbp)
jl     1b87 <qspToWUpper+0xa87>
cmpl   $0x217f,-0x8(%rbp)
jg     1b87 <qspToWUpper+0xa87>
mov    -0x8(%rbp),%eax
sub    $0x10,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x24d0,-0x8(%rbp)
jl     1baf <qspToWUpper+0xaaf>
cmpl   $0x24e9,-0x8(%rbp)
jg     1baf <qspToWUpper+0xaaf>
mov    -0x8(%rbp),%eax
sub    $0x1a,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0xff41,-0x8(%rbp)
jl     1bd7 <qspToWUpper+0xad7>
cmpl   $0xff5a,-0x8(%rbp)
jg     1bd7 <qspToWUpper+0xad7>
mov    -0x8(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
cmpl   $0x10428,-0x8(%rbp)
jl     1bff <qspToWUpper+0xaff>
cmpl   $0x1044d,-0x8(%rbp)
jg     1bff <qspToWUpper+0xaff>
mov    -0x8(%rbp),%eax
sub    $0x28,%eax
mov    %eax,-0x4(%rbp)
jmp    1c23 <qspToWUpper+0xb23>
jmp    1c04 <qspToWUpper+0xb04>
jmp    1c09 <qspToWUpper+0xb09>
jmp    1c0e <qspToWUpper+0xb0e>
jmp    1c13 <qspToWUpper+0xb13>
jmp    1c18 <qspToWUpper+0xb18>
jmp    1c1d <qspToWUpper+0xb1d>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<qspToWUpper>:
cmp    $0xff,%edi
jg     111a <qspToWUpper+0x1a>
mov    $0x39c,%eax
cmp    $0xb5,%edi
jne    11b5 <qspToWUpper+0xb5>
ret
cmp    $0x2ff,%edi
ja     11df <qspToWUpper+0xdf>
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm0
paddd  0xee9(%rip),%xmm0
pxor   0xef1(%rip),%xmm0
movdqa 0xef9(%rip),%xmm1
pcmpgtd %xmm0,%xmm1
movmskps %xmm1,%eax
test   %eax,%eax
jne    13d7 <qspToWUpper+0x2d7>
lea    -0x101(%rdi),%eax
cmp    $0x2f,%eax
jb     13d7 <qspToWUpper+0x2d7>
lea    -0x133(%rdi),%eax
cmp    $0x4,%eax
jbe    13d7 <qspToWUpper+0x2d7>
lea    -0x13a(%rdi),%eax
cmp    $0xf,%eax
jb     13cc <qspToWUpper+0x2cc>
lea    -0x1ce(%rdi),%eax
cmp    $0xe,%eax
jbe    13cc <qspToWUpper+0x2cc>
lea    -0x17a(%rdi),%eax
cmp    $0x4,%eax
ja     135c <qspToWUpper+0x25c>
mov    $0x15,%ecx
bt     %eax,%ecx
jae    135c <qspToWUpper+0x25c>
add    $0xffffffff,%edi
mov    %edi,%eax
ret
lea    -0xe0(%rdi),%eax
cmp    $0x1f,%eax
jb     12ec <qspToWUpper+0x1ec>
lea    -0x61(%rdi),%eax
cmp    $0x19,%eax
jbe    12ec <qspToWUpper+0x1ec>
cmp    $0xff,%edi
mov    $0x178,%eax
cmovne %edi,%eax
ret
cmp    $0x3ff,%edi
ja     1212 <qspToWUpper+0x112>
mov    $0x386,%eax
cmp    $0x3ac,%edi
je     1119 <qspToWUpper+0x19>
jbe    1280 <qspToWUpper+0x180>
mov    %edi,%eax
and    $0xfff0,%eax
cmp    $0x3a0,%eax
jne    1280 <qspToWUpper+0x180>
add    $0xffffffeb,%edi
mov    %edi,%eax
ret
cmp    $0x4ff,%edi
ja     1230 <qspToWUpper+0x130>
mov    %edi,%eax
and    $0xfffffff0,%eax
cmp    $0x450,%eax
jne    12dd <qspToWUpper+0x1dd>
add    $0xffffffb0,%edi
mov    %edi,%eax
ret
cmp    $0x1eff,%edi
ja     12f2 <qspToWUpper+0x1f2>
lea    -0x1ea1(%rdi),%eax
cmp    $0x59,%eax
jb     13d7 <qspToWUpper+0x2d7>
lea    -0x501(%rdi),%eax
cmp    $0xf,%eax
jb     13d7 <qspToWUpper+0x2d7>
lea    -0x1e01(%rdi),%eax
cmp    $0x94,%eax
jbe    13d7 <qspToWUpper+0x2d7>
lea    -0x561(%rdi),%eax
cmp    $0x25,%eax
ja     13ef <qspToWUpper+0x2ef>
add    $0xffffffd0,%edi
mov    %edi,%eax
ret
cmp    $0x3c2,%edi
je     1293 <qspToWUpper+0x193>
lea    -0x3b1(%rdi),%eax
cmp    $0x1a,%eax
jbe    12ec <qspToWUpper+0x1ec>
mov    $0x3a3,%eax
cmp    $0x3c2,%edi
je     1119 <qspToWUpper+0x19>
lea    -0x3cc(%rdi),%ecx
cmp    $0x29,%ecx
ja     146d <qspToWUpper+0x36d>
ja     146d <qspToWUpper+0x36d>
movabs $0x27aaaaaa637,%rax
bt     %rcx,%rax
mov    %edi,%eax
jae    1119 <qspToWUpper+0x19>
movslq %ecx,%rax
lea    0x13d7(%rip),%rcx
mov    (%rcx,%rax,4),%eax
ret
lea    -0x430(%rdi),%eax
cmp    $0x1f,%eax
ja     13a0 <qspToWUpper+0x2a0>
add    $0xffffffe0,%edi
mov    %edi,%eax
ret
cmp    $0x1fff,%edi
ja     13dd <qspToWUpper+0x2dd>
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm0
pand   0xcf1(%rip),%xmm0
pcmpeqd 0xcf9(%rip),%xmm0
movmskps %xmm0,%eax
test   %eax,%eax
jne    1356 <qspToWUpper+0x256>
lea    -0x1f40(%rdi),%eax
cmp    $0x6,%eax
jb     1356 <qspToWUpper+0x256>
cmp    $0x1f08,%edi
jb     1356 <qspToWUpper+0x256>
lea    -0x1f10(%rdi),%eax
cmp    $0x5,%eax
jbe    1356 <qspToWUpper+0x256>
lea    -0x1f58(%rdi),%eax
cmp    $0xfffffff9,%eax
jb     1412 <qspToWUpper+0x312>
mov    %edi,%eax
and    $0x1,%eax
je     1412 <qspToWUpper+0x312>
add    $0x8,%edi
mov    %edi,%eax
ret
mov    $0x49,%eax
cmp    $0x131,%edi
je     1119 <qspToWUpper+0x19>
lea    -0x17f(%rdi),%ecx
cmp    $0x113,%ecx
ja     146d <qspToWUpper+0x36d>
ja     146d <qspToWUpper+0x36d>
mov    $0x53,%eax
lea    0xecf(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
add    $0xfffffffe,%edi
mov    %edi,%eax
ret
lea    -0x4d1(%rdi),%eax
cmp    $0x25,%eax
jb     13d7 <qspToWUpper+0x2d7>
lea    -0x461(%rdi),%eax
cmp    $0x21,%eax
jb     13d7 <qspToWUpper+0x2d7>
lea    -0x48b(%rdi),%eax
cmp    $0x34,%eax
jbe    13d7 <qspToWUpper+0x2d7>
lea    -0x4c2(%rdi),%eax
cmp    $0xc,%eax
ja     143d <qspToWUpper+0x33d>
mov    %edi,%eax
and    $0x1,%eax
add    %edi,%eax
add    $0xffffffff,%eax
ret
and    $0xfffffffe,%edi
mov    %edi,%eax
ret
mov    %edi,%eax
and    $0xfffffff0,%eax
cmp    $0x2170,%eax
jne    1402 <qspToWUpper+0x302>
add    $0xfffffff0,%edi
mov    %edi,%eax
ret
mov    $0x1e60,%eax
cmp    $0x1e9b,%edi
je     1119 <qspToWUpper+0x19>
jmp    146d <qspToWUpper+0x36d>
lea    -0x24d0(%rdi),%eax
cmp    $0x19,%eax
ja     1450 <qspToWUpper+0x350>
add    $0xffffffe6,%edi
jmp    146d <qspToWUpper+0x36d>
lea    -0x1f70(%rdi),%ecx
cmp    $0x83,%ecx
ja     146d <qspToWUpper+0x36d>
ja     146d <qspToWUpper+0x36d>
mov    $0x1fb8,%eax
lea    0xc22(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x1fba,%eax
ret
mov    $0x4f8,%eax
cmp    $0x4f9,%edi
je     1119 <qspToWUpper+0x19>
jmp    146d <qspToWUpper+0x36d>
lea    -0xff41(%rdi),%eax
cmp    $0x19,%eax
jbe    12ec <qspToWUpper+0x1ec>
lea    -0x10428(%rdi),%eax
cmp    $0x25,%eax
ja     146d <qspToWUpper+0x36d>
add    $0xffffffd8,%edi
mov    %edi,%eax
ret
mov    $0x182,%eax
ret
mov    $0x184,%eax
ret
mov    $0x187,%eax
ret
mov    $0x18b,%eax
ret
mov    $0x191,%eax
ret
mov    $0x1f6,%eax
ret
mov    $0x198,%eax
ret
mov    $0x220,%eax
ret
mov    $0x1f7,%eax
ret
mov    $0x18e,%eax
ret
mov    $0x1f1,%eax
ret
mov    $0x181,%eax
ret
mov    $0x186,%eax
ret
mov    $0x189,%eax
ret
mov    $0x18a,%eax
ret
mov    $0x18f,%eax
ret
mov    $0x190,%eax
ret
mov    $0x193,%eax
ret
mov    $0x194,%eax
ret
mov    $0x197,%eax
ret
mov    $0x196,%eax
ret
mov    $0x19c,%eax
ret
mov    $0x19d,%eax
ret
mov    $0x19f,%eax
ret
mov    $0x1a6,%eax
ret
mov    $0x1a9,%eax
ret
mov    $0x1ae,%eax
ret
mov    $0x1b1,%eax
ret
mov    $0x1b2,%eax
ret
mov    $0x1b7,%eax
ret
mov    $0x1fbb,%eax
ret
mov    $0x1fc8,%eax
ret
mov    $0x1fc9,%eax
ret
mov    $0x1fca,%eax
ret
mov    $0x1fcb,%eax
ret
mov    $0x1fda,%eax
ret
mov    $0x1fdb,%eax
ret
mov    $0x1ff8,%eax
ret
mov    $0x1ff9,%eax
ret
mov    $0x1fea,%eax
ret
mov    $0x1feb,%eax
ret
mov    $0x1ffa,%eax
ret
mov    $0x1ffb,%eax
ret
mov    $0x1fb9,%eax
ret
mov    $0x1fbc,%eax
ret
mov    $0x399,%eax
ret
mov    $0x1fd8,%eax
ret
mov    $0x1fd9,%eax
ret
mov    $0x1fe8,%eax
ret
mov    $0x1fe9,%eax
ret
mov    $0x1fec,%eax
ret
mov    $0x1ffc,%eax
ret

LLVM IR (-O0):
define i32 @qspToWUpper(i32 %0) {
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
store i32 %0, i32* %3
%7 = load i32, i32* %3
%8 = icmp slt i32 %7, 256
br i1 %8, label %9, label %34
9: ; preds = %1
%10 = load i32, i32* %3
%11 = icmp eq i32 %10, 181
br i1 %11, label %12, label %13
12: ; preds = %9
store i32 924, i32* %2
br label %505
13: ; preds = %9
%14 = load i32, i32* %3
%15 = icmp sge i32 %14, 224
br i1 %15, label %16, label %19
16: ; preds = %13
%17 = load i32, i32* %3
%18 = icmp sle i32 %17, 254
br i1 %18, label %25, label %19
19: ; preds = %16, %13
%20 = load i32, i32* %3
%21 = icmp sge i32 %20, 97
br i1 %21, label %22, label %28
22: ; preds = %19
%23 = load i32, i32* %3
%24 = icmp sle i32 %23, 122
br i1 %24, label %25, label %28
25: ; preds = %22, %16
%26 = load i32, i32* %3
%27 = sub nsw i32 %26, 32
store i32 %27, i32* %2
br label %505
28: ; preds = %22, %19
%29 = load i32, i32* %3
%30 = icmp eq i32 %29, 255
br i1 %30, label %31, label %32
31: ; preds = %28
store i32 376, i32* %2
br label %505
32: ; preds = %28
%33 = load i32, i32* %3
store i32 %33, i32* %2
br label %505
34: ; preds = %1
%35 = load i32, i32* %3
%36 = icmp slt i32 %35, 768
br i1 %36, label %37, label %172
37: ; preds = %34
%38 = load i32, i32* %3
%39 = icmp sge i32 %38, 257
br i1 %39, label %40, label %43
40: ; preds = %37
%41 = load i32, i32* %3
%42 = icmp sle i32 %41, 303
br i1 %42, label %73, label %43
43: ; preds = %40, %37
%44 = load i32, i32* %3
%45 = icmp sge i32 %44, 307
br i1 %45, label %46, label %49
46: ; preds = %43
%47 = load i32, i32* %3
%48 = icmp sle i32 %47, 311
br i1 %48, label %73, label %49
49: ; preds = %46, %43
%50 = load i32, i32* %3
%51 = icmp sge i32 %50, 331
br i1 %51, label %52, label %55
52: ; preds = %49
%53 = load i32, i32* %3
%54 = icmp sle i32 %53, 375
br i1 %54, label %73, label %55
55: ; preds = %52, %49
%56 = load i32, i32* %3
%57 = icmp sge i32 %56, 479
br i1 %57, label %58, label %61
58: ; preds = %55
%59 = load i32, i32* %3
%60 = icmp sle i32 %59, 495
br i1 %60, label %73, label %61
61: ; preds = %58, %55
%62 = load i32, i32* %3
%63 = icmp sge i32 %62, 505
br i1 %63, label %64, label %67
64: ; preds = %61
%65 = load i32, i32* %3
%66 = icmp sle i32 %65, 543
br i1 %66, label %73, label %67
67: ; preds = %64, %61
%68 = load i32, i32* %3
%69 = icmp sge i32 %68, 547
br i1 %69, label %70, label %82
70: ; preds = %67
%71 = load i32, i32* %3
%72 = icmp sle i32 %71, 563
br i1 %72, label %73, label %82
73: ; preds = %70, %64, %58, %52, %46, %40
%74 = load i32, i32* %3
%75 = and i32 %74, 1
%76 = icmp ne i32 %75, 0
br i1 %76, label %77, label %80
77: ; preds = %73
%78 = load i32, i32* %3
%79 = sub nsw i32 %78, 1
store i32 %79, i32* %2
br label %505
80: ; preds = %73
%81 = load i32, i32* %3
store i32 %81, i32* %2
br label %505
82: ; preds = %70, %67
%83 = load i32, i32* %3
%84 = icmp sge i32 %83, 314
br i1 %84, label %85, label %88
85: ; preds = %82
%86 = load i32, i32* %3
%87 = icmp sle i32 %86, 328
br i1 %87, label %94, label %88
88: ; preds = %85, %82
%89 = load i32, i32* %3
%90 = icmp sge i32 %89, 462
br i1 %90, label %91, label %103
91: ; preds = %88
%92 = load i32, i32* %3
%93 = icmp sle i32 %92, 476
br i1 %93, label %94, label %103
94: ; preds = %91, %85
%95 = load i32, i32* %3
%96 = and i32 %95, 1
%97 = icmp ne i32 %96, 0
br i1 %97, label %101, label %98
98: ; preds = %94
%99 = load i32, i32* %3
%100 = sub nsw i32 %99, 1
store i32 %100, i32* %2
br label %505
101: ; preds = %94
%102 = load i32, i32* %3
store i32 %102, i32* %2
br label %505
103: ; preds = %91, %88
%104 = load i32, i32* %3
%105 = icmp eq i32 %104, 305
br i1 %105, label %106, label %107
106: ; preds = %103
store i32 73, i32* %2
br label %505
107: ; preds = %103
%108 = load i32, i32* %3
%109 = icmp eq i32 %108, 378
br i1 %109, label %116, label %110
110: ; preds = %107
%111 = load i32, i32* %3
%112 = icmp eq i32 %111, 380
br i1 %112, label %116, label %113
113: ; preds = %110
%114 = load i32, i32* %3
%115 = icmp eq i32 %114, 382
br i1 %115, label %116, label %119
116: ; preds = %113, %110, %107
%117 = load i32, i32* %3
%118 = sub nsw i32 %117, 1
store i32 %118, i32* %2
br label %505
119: ; preds = %113
%120 = load i32, i32* %3
%121 = icmp sge i32 %120, 383
br i1 %121, label %122, label %171
122: ; preds = %119
%123 = load i32, i32* %3
%124 = icmp sle i32 %123, 658
br i1 %124, label %125, label %171
125: ; preds = %122
%126 = load i32, i32* %3
switch i32 %126, label %164 [
i32 383, label %127
i32 387, label %128
i32 389, label %129
i32 392, label %130
i32 396, label %131
i32 402, label %132
i32 405, label %133
i32 409, label %134
i32 414, label %135
i32 417, label %136
i32 419, label %136
i32 421, label %136
i32 424, label %136
i32 429, label %136
i32 432, label %136
i32 436, label %136
i32 438, label %136
i32 441, label %136
i32 445, label %136
i32 453, label %136
i32 456, label %136
i32 459, label %136
i32 498, label %136
i32 501, label %136
i32 447, label %139
i32 454, label %140
i32 457, label %140
i32 460, label %140
i32 477, label %143
i32 499, label %144
i32 595, label %145
i32 596, label %146
i32 598, label %147
i32 599, label %148
i32 601, label %149
i32 603, label %150
i32 608, label %151
i32 611, label %152
i32 616, label %153
i32 617, label %154
i32 623, label %155
i32 626, label %156
i32 629, label %157
i32 640, label %158
i32 643, label %159
i32 648, label %160
i32 650, label %161
i32 651, label %162
i32 658, label %163
]
127: ; preds = %125
store i32 83, i32* %4
br label %165
128: ; preds = %125
store i32 386, i32* %4
br label %165
129: ; preds = %125
store i32 388, i32* %4
br label %165
130: ; preds = %125
store i32 391, i32* %4
br label %165
131: ; preds = %125
store i32 395, i32* %4
br label %165
132: ; preds = %125
store i32 401, i32* %4
br label %165
133: ; preds = %125
store i32 502, i32* %4
br label %165
134: ; preds = %125
store i32 408, i32* %4
br label %165
135: ; preds = %125
store i32 544, i32* %4
br label %165
136: ; preds = %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125
%137 = load i32, i32* %3
%138 = sub nsw i32 %137, 1
store i32 %138, i32* %4
br label %165
139: ; preds = %125
store i32 503, i32* %4
br label %165
140: ; preds = %125, %125, %125
%141 = load i32, i32* %3
%142 = sub nsw i32 %141, 2
store i32 %142, i32* %4
br label %165
143: ; preds = %125
store i32 398, i32* %4
br label %165
144: ; preds = %125
store i32 497, i32* %4
br label %165
145: ; preds = %125
store i32 385, i32* %4
br label %165
146: ; preds = %125
store i32 390, i32* %4
br label %165
147: ; preds = %125
store i32 393, i32* %4
br label %165
148: ; preds = %125
store i32 394, i32* %4
br label %165
149: ; preds = %125
store i32 399, i32* %4
br label %165
150: ; preds = %125
store i32 400, i32* %4
br label %165
151: ; preds = %125
store i32 403, i32* %4
br label %165
152: ; preds = %125
store i32 404, i32* %4
br label %165
153: ; preds = %125
store i32 407, i32* %4
br label %165
154: ; preds = %125
store i32 406, i32* %4
br label %165
155: ; preds = %125
store i32 412, i32* %4
br label %165
156: ; preds = %125
store i32 413, i32* %4
br label %165
157: ; preds = %125
store i32 415, i32* %4
br label %165
158: ; preds = %125
store i32 422, i32* %4
br label %165
159: ; preds = %125
store i32 425, i32* %4
br label %165
160: ; preds = %125
store i32 430, i32* %4
br label %165
161: ; preds = %125
store i32 433, i32* %4
br label %165
162: ; preds = %125
store i32 434, i32* %4
br label %165
163: ; preds = %125
store i32 439, i32* %4
br label %165
164: ; preds = %125
store i32 0, i32* %4
br label %165
165: ; preds = %164, %163, %162, %161, %160, %159, %158, %157, %156, %155, %154, %153, %152, %151, %150, %149, %148, %147, %146, %145, %144, %143, %140, %139, %136, %135, %134, %133, %132, %131, %130, %129, %128, %127
%166 = load i32, i32* %4
%167 = icmp ne i32 %166, 0
br i1 %167, label %168, label %170
168: ; preds = %165
%169 = load i32, i32* %4
store i32 %169, i32* %2
br label %505
170: ; preds = %165
br label %171
171: ; preds = %170, %122, %119
br label %502
172: ; preds = %34
%173 = load i32, i32* %3
%174 = icmp slt i32 %173, 1024
br i1 %174, label %175, label %236
175: ; preds = %172
%176 = load i32, i32* %3
%177 = icmp eq i32 %176, 940
br i1 %177, label %178, label %179
178: ; preds = %175
store i32 902, i32* %2
br label %505
179: ; preds = %175
%180 = load i32, i32* %3
%181 = and i32 %180, 65520
%182 = icmp eq i32 %181, 928
br i1 %182, label %183, label %189
183: ; preds = %179
%184 = load i32, i32* %3
%185 = icmp sge i32 %184, 941
br i1 %185, label %186, label %189
186: ; preds = %183
%187 = load i32, i32* %3
%188 = sub nsw i32 %187, 21
store i32 %188, i32* %2
br label %505
189: ; preds = %183, %179
%190 = load i32, i32* %3
%191 = icmp sge i32 %190, 945
br i1 %191, label %192, label %201
192: ; preds = %189
%193 = load i32, i32* %3
%194 = icmp sle i32 %193, 971
br i1 %194, label %195, label %201
195: ; preds = %192
%196 = load i32, i32* %3
%197 = icmp ne i32 %196, 962
br i1 %197, label %198, label %201
198: ; preds = %195
%199 = load i32, i32* %3
%200 = sub nsw i32 %199, 32
store i32 %200, i32* %2
br label %505
201: ; preds = %195, %192, %189
%202 = load i32, i32* %3
%203 = icmp eq i32 %202, 962
br i1 %203, label %204, label %205
204: ; preds = %201
store i32 931, i32* %2
br label %505
205: ; preds = %201
%206 = load i32, i32* %3
%207 = icmp sge i32 %206, 972
br i1 %207, label %208, label %235
208: ; preds = %205
%209 = load i32, i32* %3
%210 = icmp sle i32 %209, 1013
br i1 %210, label %211, label %235
211: ; preds = %208
%212 = load i32, i32* %3
switch i32 %212, label %228 [
i32 972, label %213
i32 973, label %214
i32 974, label %214
i32 976, label %217
i32 977, label %218
i32 981, label %219
i32 982, label %220
i32 985, label %221
i32 987, label %221
i32 989, label %221
i32 991, label %221
i32 993, label %221
i32 995, label %221
i32 997, label %221
i32 999, label %221
i32 1001, label %221
i32 1003, label %221
i32 1005, label %221
i32 1007, label %221
i32 1008, label %224
i32 1009, label %225
i32 1010, label %226
i32 1013, label %227
]
213: ; preds = %211
store i32 908, i32* %5
br label %229
214: ; preds = %211, %211
%215 = load i32, i32* %3
%216 = sub nsw i32 %215, 63
store i32 %216, i32* %5
br label %229
217: ; preds = %211
store i32 914, i32* %5
br label %229
218: ; preds = %211
store i32 920, i32* %5
br label %229
219: ; preds = %211
store i32 934, i32* %5
br label %229
220: ; preds = %211
store i32 928, i32* %5
br label %229
221: ; preds = %211, %211, %211, %211, %211, %211, %211, %211, %211, %211, %211, %211
%222 = load i32, i32* %3
%223 = sub nsw i32 %222, 1
store i32 %223, i32* %5
br label %229
224: ; preds = %211
store i32 922, i32* %5
br label %229
225: ; preds = %211
store i32 929, i32* %5
br label %229
226: ; preds = %211
store i32 931, i32* %5
br label %229
227: ; preds = %211
store i32 917, i32* %5
br label %229
228: ; preds = %211
store i32 0, i32* %5
br label %229
229: ; preds = %228, %227, %226, %225, %224, %221, %220, %219, %218, %217, %214, %213
%230 = load i32, i32* %5
%231 = icmp ne i32 %230, 0
br i1 %231, label %232, label %234
232: ; preds = %229
%233 = load i32, i32* %5
store i32 %233, i32* %2
br label %505
234: ; preds = %229
br label %235
235: ; preds = %234, %208, %205
br label %501
236: ; preds = %172
%237 = load i32, i32* %3
%238 = icmp slt i32 %237, 1280
br i1 %238, label %239, label %304
239: ; preds = %236
%240 = load i32, i32* %3
%241 = icmp sge i32 %240, 1104
br i1 %241, label %242, label %248
242: ; preds = %239
%243 = load i32, i32* %3
%244 = icmp sle i32 %243, 1119
br i1 %244, label %245, label %248
245: ; preds = %242
%246 = load i32, i32* %3
%247 = sub nsw i32 %246, 80
store i32 %247, i32* %2
br label %505
248: ; preds = %242, %239
%249 = load i32, i32* %3
%250 = icmp sge i32 %249, 1072
br i1 %250, label %251, label %257
251: ; preds = %248
%252 = load i32, i32* %3
%253 = icmp sle i32 %252, 1103
br i1 %253, label %254, label %257
254: ; preds = %251
%255 = load i32, i32* %3
%256 = sub nsw i32 %255, 32
store i32 %256, i32* %2
br label %505
257: ; preds = %251, %248
%258 = load i32, i32* %3
%259 = icmp sge i32 %258, 1121
br i1 %259, label %260, label %263
260: ; preds = %257
%261 = load i32, i32* %3
%262 = icmp sle i32 %261, 1153
br i1 %262, label %275, label %263
263: ; preds = %260, %257
%264 = load i32, i32* %3
%265 = icmp sge i32 %264, 1163
br i1 %265, label %266, label %269
266: ; preds = %263
%267 = load i32, i32* %3
%268 = icmp sle i32 %267, 1215
br i1 %268, label %275, label %269
269: ; preds = %266, %263
%270 = load i32, i32* %3
%271 = icmp sge i32 %270, 1233
br i1 %271, label %272, label %284
272: ; preds = %269
%273 = load i32, i32* %3
%274 = icmp sle i32 %273, 1269
br i1 %274, label %275, label %284
275: ; preds = %272, %266, %260
%276 = load i32, i32* %3
%277 = and i32 %276, 1
%278 = icmp ne i32 %277, 0
br i1 %278, label %279, label %282
279: ; preds = %275
%280 = load i32, i32* %3
%281 = sub nsw i32 %280, 1
store i32 %281, i32* %2
br label %505
282: ; preds = %275
%283 = load i32, i32* %3
store i32 %283, i32* %2
br label %505
284: ; preds = %272, %269
%285 = load i32, i32* %3
%286 = icmp sge i32 %285, 1218
br i1 %286, label %287, label %299
287: ; preds = %284
%288 = load i32, i32* %3
%289 = icmp sle i32 %288, 1230
br i1 %289, label %290, label %299
290: ; preds = %287
%291 = load i32, i32* %3
%292 = and i32 %291, 1
%293 = icmp ne i32 %292, 0
br i1 %293, label %297, label %294
294: ; preds = %290
%295 = load i32, i32* %3
%296 = sub nsw i32 %295, 1
store i32 %296, i32* %2
br label %505
297: ; preds = %290
%298 = load i32, i32* %3
store i32 %298, i32* %2
br label %505
299: ; preds = %287, %284
%300 = load i32, i32* %3
%301 = icmp eq i32 %300, 1273
br i1 %301, label %302, label %303
302: ; preds = %299
store i32 1272, i32* %2
br label %505
303: ; preds = %299
br label %500
304: ; preds = %236
%305 = load i32, i32* %3
%306 = icmp slt i32 %305, 7936
br i1 %306, label %307, label %348
307: ; preds = %304
%308 = load i32, i32* %3
%309 = icmp sge i32 %308, 1281
br i1 %309, label %310, label %313
310: ; preds = %307
%311 = load i32, i32* %3
%312 = icmp sle i32 %311, 1295
br i1 %312, label %325, label %313
313: ; preds = %310, %307
%314 = load i32, i32* %3
%315 = icmp sge i32 %314, 7681
br i1 %315, label %316, label %319
316: ; preds = %313
%317 = load i32, i32* %3
%318 = icmp sle i32 %317, 7829
br i1 %318, label %325, label %319
319: ; preds = %316, %313
%320 = load i32, i32* %3
%321 = icmp sge i32 %320, 7841
br i1 %321, label %322, label %334
322: ; preds = %319
%323 = load i32, i32* %3
%324 = icmp sle i32 %323, 7929
br i1 %324, label %325, label %334
325: ; preds = %322, %316, %310
%326 = load i32, i32* %3
%327 = and i32 %326, 1
%328 = icmp ne i32 %327, 0
br i1 %328, label %329, label %332
329: ; preds = %325
%330 = load i32, i32* %3
%331 = sub nsw i32 %330, 1
store i32 %331, i32* %2
br label %505
332: ; preds = %325
%333 = load i32, i32* %3
store i32 %333, i32* %2
br label %505
334: ; preds = %322, %319
%335 = load i32, i32* %3
%336 = icmp sge i32 %335, 1377
br i1 %336, label %337, label %343
337: ; preds = %334
%338 = load i32, i32* %3
%339 = icmp sle i32 %338, 1414
br i1 %339, label %340, label %343
340: ; preds = %337
%341 = load i32, i32* %3
%342 = sub nsw i32 %341, 48
store i32 %342, i32* %2
br label %505
343: ; preds = %337, %334
%344 = load i32, i32* %3
%345 = icmp eq i32 %344, 7835
br i1 %345, label %346, label %347
346: ; preds = %343
store i32 7776, i32* %2
br label %505
347: ; preds = %343
br label %499
348: ; preds = %304
%349 = load i32, i32* %3
%350 = icmp slt i32 %349, 8192
br i1 %350, label %351, label %461
351: ; preds = %348
%352 = load i32, i32* %3
%353 = icmp sge i32 %352, 7936
br i1 %353, label %354, label %357
354: ; preds = %351
%355 = load i32, i32* %3
%356 = icmp sle i32 %355, 7943
br i1 %356, label %405, label %357
357: ; preds = %354, %351
%358 = load i32, i32* %3
%359 = icmp sge i32 %358, 7952
br i1 %359, label %360, label %363
360: ; preds = %357
%361 = load i32, i32* %3
%362 = icmp sle i32 %361, 7957
br i1 %362, label %405, label %363
363: ; preds = %360, %357
%364 = load i32, i32* %3
%365 = icmp sge i32 %364, 7968
br i1 %365, label %366, label %369
366: ; preds = %363
%367 = load i32, i32* %3
%368 = icmp sle i32 %367, 7975
br i1 %368, label %405, label %369
369: ; preds = %366, %363
%370 = load i32, i32* %3
%371 = icmp sge i32 %370, 7984
br i1 %371, label %372, label %375
372: ; preds = %369
%373 = load i32, i32* %3
%374 = icmp sle i32 %373, 7991
br i1 %374, label %405, label %375
375: ; preds = %372, %369
%376 = load i32, i32* %3
%377 = icmp sge i32 %376, 8000
br i1 %377, label %378, label %381
378: ; preds = %375
%379 = load i32, i32* %3
%380 = icmp sle i32 %379, 8005
br i1 %380, label %405, label %381
381: ; preds = %378, %375
%382 = load i32, i32* %3
%383 = icmp sge i32 %382, 8032
br i1 %383, label %384, label %387
384: ; preds = %381
%385 = load i32, i32* %3
%386 = icmp sle i32 %385, 8039
br i1 %386, label %405, label %387
387: ; preds = %384, %381
%388 = load i32, i32* %3
%389 = icmp sge i32 %388, 8064
br i1 %389, label %390, label %393
390: ; preds = %387
%391 = load i32, i32* %3
%392 = icmp sle i32 %391, 8071
br i1 %392, label %405, label %393
393: ; preds = %390, %387
%394 = load i32, i32* %3
%395 = icmp sge i32 %394, 8080
br i1 %395, label %396, label %399
396: ; preds = %393
%397 = load i32, i32* %3
%398 = icmp sle i32 %397, 8087
br i1 %398, label %405, label %399
399: ; preds = %396, %393
%400 = load i32, i32* %3
%401 = icmp sge i32 %400, 8096
br i1 %401, label %402, label %408
402: ; preds = %399
%403 = load i32, i32* %3
%404 = icmp sle i32 %403, 8103
br i1 %404, label %405, label %408
405: ; preds = %402, %396, %390, %384, %378, %372, %366, %360, %354
%406 = load i32, i32* %3
%407 = add nsw i32 %406, 8
store i32 %407, i32* %2
br label %505
408: ; preds = %402, %399
%409 = load i32, i32* %3
%410 = icmp sge i32 %409, 8017
br i1 %410, label %411, label %421
411: ; preds = %408
%412 = load i32, i32* %3
%413 = icmp sle i32 %412, 8023
br i1 %413, label %414, label %421
414: ; preds = %411
%415 = load i32, i32* %3
%416 = and i32 %415, 1
%417 = icmp ne i32 %416, 0
br i1 %417, label %418, label %421
418: ; preds = %414
%419 = load i32, i32* %3
%420 = add nsw i32 %419, 8
store i32 %420, i32* %2
br label %505
421: ; preds = %414, %411, %408
%422 = load i32, i32* %3
%423 = icmp sge i32 %422, 8048
br i1 %423, label %424, label %460
424: ; preds = %421
%425 = load i32, i32* %3
%426 = icmp sle i32 %425, 8179
br i1 %426, label %427, label %460
427: ; preds = %424
%428 = load i32, i32* %3
switch i32 %428, label %453 [
i32 8112, label %429
i32 8113, label %430
i32 8048, label %431
i32 8049, label %432
i32 8115, label %433
i32 8126, label %434
i32 8050, label %435
i32 8051, label %436
i32 8052, label %437
i32 8053, label %438
i32 8144, label %439
i32 8145, label %440
i32 8054, label %441
i32 8055, label %442
i32 8160, label %443
i32 8161, label %444
i32 8058, label %445
i32 8059, label %446
i32 8165, label %447
i32 8056, label %448
i32 8057, label %449
i32 8060, label %450
i32 8061, label %451
i32 8179, label %452
]
429: ; preds = %427
store i32 8120, i32* %6
br label %454
430: ; preds = %427
store i32 8121, i32* %6
br label %454
431: ; preds = %427
store i32 8122, i32* %6
br label %454
432: ; preds = %427
store i32 8123, i32* %6
br label %454
433: ; preds = %427
store i32 8124, i32* %6
br label %454
434: ; preds = %427
store i32 921, i32* %6
br label %454
435: ; preds = %427
store i32 8136, i32* %6
br label %454
436: ; preds = %427
store i32 8137, i32* %6
br label %454
437: ; preds = %427
store i32 8138, i32* %6
br label %454
438: ; preds = %427
store i32 8139, i32* %6
br label %454
439: ; preds = %427
store i32 8152, i32* %6
br label %454
440: ; preds = %427
store i32 8153, i32* %6
br label %454
441: ; preds = %427
store i32 8154, i32* %6
br label %454
442: ; preds = %427
store i32 8155, i32* %6
br label %454
443: ; preds = %427
store i32 8168, i32* %6
br label %454
444: ; preds = %427
store i32 8169, i32* %6
br label %454
445: ; preds = %427
store i32 8170, i32* %6
br label %454
446: ; preds = %427
store i32 8171, i32* %6
br label %454
447: ; preds = %427
store i32 8172, i32* %6
br label %454
448: ; preds = %427
store i32 8184, i32* %6
br label %454
449: ; preds = %427
store i32 8185, i32* %6
br label %454
450: ; preds = %427
store i32 8186, i32* %6
br label %454
451: ; preds = %427
store i32 8187, i32* %6
br label %454
452: ; preds = %427
store i32 8188, i32* %6
br label %454
453: ; preds = %427
store i32 0, i32* %6
br label %454
454: ; preds = %453, %452, %451, %450, %449, %448, %447, %446, %445, %444, %443, %442, %441, %440, %439, %438, %437, %436, %435, %434, %433, %432, %431, %430, %429
%455 = load i32, i32* %6
%456 = icmp ne i32 %455, 0
br i1 %456, label %457, label %459
457: ; preds = %454
%458 = load i32, i32* %6
store i32 %458, i32* %2
br label %505
459: ; preds = %454
br label %460
460: ; preds = %459, %424, %421
br label %498
461: ; preds = %348
%462 = load i32, i32* %3
%463 = icmp sge i32 %462, 8560
br i1 %463, label %464, label %470
464: ; preds = %461
%465 = load i32, i32* %3
%466 = icmp sle i32 %465, 8575
br i1 %466, label %467, label %470
467: ; preds = %464
%468 = load i32, i32* %3
%469 = sub nsw i32 %468, 16
store i32 %469, i32* %2
br label %505
470: ; preds = %464, %461
%471 = load i32, i32* %3
%472 = icmp sge i32 %471, 9424
br i1 %472, label %473, label %479
473: ; preds = %470
%474 = load i32, i32* %3
%475 = icmp sle i32 %474, 9449
br i1 %475, label %476, label %479
476: ; preds = %473
%477 = load i32, i32* %3
%478 = sub nsw i32 %477, 26
store i32 %478, i32* %2
br label %505
479: ; preds = %473, %470
%480 = load i32, i32* %3
%481 = icmp sge i32 %480, 65345
br i1 %481, label %482, label %488
482: ; preds = %479
%483 = load i32, i32* %3
%484 = icmp sle i32 %483, 65370
br i1 %484, label %485, label %488
485: ; preds = %482
%486 = load i32, i32* %3
%487 = sub nsw i32 %486, 32
store i32 %487, i32* %2
br label %505
488: ; preds = %482, %479
%489 = load i32, i32* %3
%490 = icmp sge i32 %489, 66600
br i1 %490, label %491, label %497
491: ; preds = %488
%492 = load i32, i32* %3
%493 = icmp sle i32 %492, 66637
br i1 %493, label %494, label %497
494: ; preds = %491
%495 = load i32, i32* %3
%496 = sub nsw i32 %495, 40
store i32 %496, i32* %2
br label %505
497: ; preds = %491, %488
br label %498
498: ; preds = %497, %460
br label %499
499: ; preds = %498, %347
br label %500
500: ; preds = %499, %303
br label %501
501: ; preds = %500, %235
br label %502
502: ; preds = %501, %171
br label %503
503: ; preds = %502
%504 = load i32, i32* %3
store i32 %504, i32* %2
br label %505
505: ; preds = %503, %494, %485, %476, %467, %457, %418, %405, %346, %340, %332, %329, %302, %297, %294, %282, %279, %254, %245, %232, %204, %198, %186, %178, %168, %116, %106, %101, %98, %80, %77, %32, %31, %25, %12
%506 = load i32, i32* %2
ret i32 %506
}

LLVM IR (-O2):
@switch.table.qspToWUpper = [42 x i32] [i32 908, i32 910, i32 911, i32 908, i32 914, i32 920, i32 908, i32 908, i32 908, i32 934, i32 928, i32 908, i32 908, i32 984, i32 908, i32 986, i32 908, i32 988, i32 908, i32 990, i32 908, i32 992, i32 908, i32 994, i32 908, i32 996, i32 908, i32 998, i32 908, i32 1000, i32 908, i32 1002, i32 908, i32 1004, i32 908, i32 1006, i32 922, i32 929, i32 931, i32 908, i32 908, i32 917]
define i32 @qspToWUpper(i32 %0) {
%2 = icmp slt i32 %0, 256
br i1 %2, label %3, label %16
3: ; preds = %1
%4 = icmp eq i32 %0, 181
br i1 %4, label %247, label %5
5: ; preds = %3
%6 = add i32 %0, -224
%7 = icmp ult i32 %6, 31
%8 = add i32 %0, -97
%9 = icmp ult i32 %8, 26
%10 = or i1 %7, %9
br i1 %10, label %11, label %13
11: ; preds = %5
%12 = add nsw i32 %0, -32
br label %247
13: ; preds = %5
%14 = icmp eq i32 %0, 255
%15 = select i1 %14, i32 376, i32 %0
br label %247
16: ; preds = %1
%17 = icmp ult i32 %0, 768
br i1 %17, label %18, label %84
18: ; preds = %16
%19 = add nsw i32 %0, -257
%20 = icmp ult i32 %19, 47
%21 = add nsw i32 %0, -307
%22 = icmp ult i32 %21, 5
%23 = insertelement <4 x i32> poison, i32 %0, i64 0
%24 = shufflevector <4 x i32> %23, <4 x i32> poison, <4 x i32> zeroinitializer
%25 = add nsw <4 x i32> %24, <i32 -547, i32 -505, i32 -479, i32 -331>
%26 = icmp ult <4 x i32> %25, <i32 17, i32 39, i32 17, i32 45>
%27 = bitcast <4 x i1> %26 to i4
%28 = icmp ne i4 %27, 0
%29 = or i1 %28, %20
%30 = or i1 %29, %22
br i1 %30, label %31, label %33
31: ; preds = %18
%32 = and i32 %0, -2
br label %247
33: ; preds = %18
%34 = add nsw i32 %0, -314
%35 = icmp ult i32 %34, 15
%36 = add nsw i32 %0, -462
%37 = icmp ult i32 %36, 15
%38 = or i1 %35, %37
br i1 %38, label %39, label %43
39: ; preds = %33
%40 = and i32 %0, 1
%41 = add nsw i32 %0, -1
%42 = add nuw nsw i32 %41, %40
br label %247
43: ; preds = %33
switch i32 %0, label %46 [
i32 305, label %247
i32 382, label %44
i32 380, label %44
i32 378, label %44
]
44: ; preds = %43, %43, %43
%45 = add nsw i32 %0, -1
br label %247
46: ; preds = %43
%47 = add nsw i32 %0, -383
%48 = icmp ult i32 %47, 276
br i1 %48, label %49, label %237
49: ; preds = %46
switch i32 %0, label %237 [
i32 383, label %247
i32 387, label %50
i32 389, label %51
i32 392, label %52
i32 396, label %53
i32 402, label %54
i32 405, label %55
i32 409, label %56
i32 414, label %57
i32 417, label %58
i32 419, label %58
i32 421, label %58
i32 424, label %58
i32 429, label %58
i32 432, label %58
i32 436, label %58
i32 438, label %58
i32 441, label %58
i32 445, label %58
i32 453, label %58
i32 456, label %58
i32 459, label %58
i32 498, label %58
i32 501, label %58
i32 447, label %60
i32 454, label %61
i32 457, label %61
i32 460, label %61
i32 477, label %63
i32 499, label %64
i32 595, label %65
i32 596, label %66
i32 598, label %67
i32 599, label %68
i32 601, label %69
i32 603, label %70
i32 608, label %71
i32 611, label %72
i32 616, label %73
i32 617, label %74
i32 623, label %75
i32 626, label %76
i32 629, label %77
i32 640, label %78
i32 643, label %79
i32 648, label %80
i32 650, label %81
i32 651, label %82
i32 658, label %83
]
50: ; preds = %49
br label %247
51: ; preds = %49
br label %247
52: ; preds = %49
br label %247
53: ; preds = %49
br label %247
54: ; preds = %49
br label %247
55: ; preds = %49
br label %247
56: ; preds = %49
br label %247
57: ; preds = %49
br label %247
58: ; preds = %49, %49, %49, %49, %49, %49, %49, %49, %49, %49, %49, %49, %49, %49, %49
%59 = add nsw i32 %0, -1
br label %247
60: ; preds = %49
br label %247
61: ; preds = %49, %49, %49
%62 = add nsw i32 %0, -2
br label %247
63: ; preds = %49
br label %247
64: ; preds = %49
br label %247
65: ; preds = %49
br label %247
66: ; preds = %49
br label %247
67: ; preds = %49
br label %247
68: ; preds = %49
br label %247
69: ; preds = %49
br label %247
70: ; preds = %49
br label %247
71: ; preds = %49
br label %247
72: ; preds = %49
br label %247
73: ; preds = %49
br label %247
74: ; preds = %49
br label %247
75: ; preds = %49
br label %247
76: ; preds = %49
br label %247
77: ; preds = %49
br label %247
78: ; preds = %49
br label %247
79: ; preds = %49
br label %247
80: ; preds = %49
br label %247
81: ; preds = %49
br label %247
82: ; preds = %49
br label %247
83: ; preds = %49
br label %247
84: ; preds = %16
%85 = icmp ult i32 %0, 1024
br i1 %85, label %86, label %110
86: ; preds = %84
%87 = icmp eq i32 %0, 940
br i1 %87, label %247, label %88
88: ; preds = %86
%89 = and i32 %0, 65520
%90 = icmp eq i32 %89, 928
%91 = icmp ugt i32 %0, 940
%92 = and i1 %91, %90
br i1 %92, label %93, label %95
93: ; preds = %88
%94 = add nsw i32 %0, -21
br label %247
95: ; preds = %88
%96 = add nsw i32 %0, -945
%97 = icmp ult i32 %96, 27
%98 = icmp ne i32 %0, 962
%99 = and i1 %98, %97
br i1 %99, label %100, label %102
100: ; preds = %95
%101 = add nsw i32 %0, -32
br label %247
102: ; preds = %95
%103 = icmp eq i32 %0, 962
br i1 %103, label %247, label %104
104: ; preds = %102
%105 = add nsw i32 %0, -972
%106 = icmp ult i32 %105, 42
br i1 %106, label %107, label %237
107: ; preds = %104
%108 = add i32 %0, -972
%109 = icmp ult i32 %108, 42
br i1 %109, label %238, label %237
110: ; preds = %84
%111 = icmp ult i32 %0, 1280
br i1 %111, label %112, label %142
112: ; preds = %110
%113 = and i32 %0, -16
%114 = icmp eq i32 %113, 1104
br i1 %114, label %115, label %117
115: ; preds = %112
%116 = add nsw i32 %0, -80
br label %247
117: ; preds = %112
%118 = add nsw i32 %0, -1072
%119 = icmp ult i32 %118, 32
br i1 %119, label %120, label %122
120: ; preds = %117
%121 = add nsw i32 %0, -32
br label %247
122: ; preds = %117
%123 = add nsw i32 %0, -1121
%124 = icmp ult i32 %123, 33
%125 = add nsw i32 %0, -1163
%126 = icmp ult i32 %125, 53
%127 = or i1 %124, %126
%128 = add nsw i32 %0, -1233
%129 = icmp ult i32 %128, 37
%130 = or i1 %129, %127
br i1 %130, label %131, label %133
131: ; preds = %122
%132 = and i32 %0, -2
br label %247
133: ; preds = %122
%134 = add nsw i32 %0, -1218
%135 = icmp ult i32 %134, 13
br i1 %135, label %136, label %140
136: ; preds = %133
%137 = and i32 %0, 1
%138 = add nsw i32 %0, -1
%139 = add nuw nsw i32 %138, %137
br label %247
140: ; preds = %133
%141 = icmp eq i32 %0, 1273
br i1 %141, label %247, label %237
142: ; preds = %110
%143 = icmp ult i32 %0, 7936
br i1 %143, label %144, label %162
144: ; preds = %142
%145 = add nsw i32 %0, -1281
%146 = icmp ult i32 %145, 15
%147 = add nsw i32 %0, -7681
%148 = icmp ult i32 %147, 149
%149 = or i1 %146, %148
%150 = add nsw i32 %0, -7841
%151 = icmp ult i32 %150, 89
%152 = or i1 %151, %149
br i1 %152, label %153, label %155
153: ; preds = %144
%154 = and i32 %0, -2
br label %247
155: ; preds = %144
%156 = add nsw i32 %0, -1377
%157 = icmp ult i32 %156, 38
br i1 %157, label %158, label %160
158: ; preds = %155
%159 = add nsw i32 %0, -48
br label %247
160: ; preds = %155
%161 = icmp eq i32 %0, 7835
br i1 %161, label %247, label %237
162: ; preds = %142
%163 = icmp ult i32 %0, 8192
br i1 %163, label %164, label %217
164: ; preds = %162
%165 = icmp ult i32 %0, 7944
%166 = add nsw i32 %0, -7952
%167 = icmp ult i32 %166, 6
%168 = insertelement <2 x i32> poison, i32 %0, i64 0
%169 = shufflevector <2 x i32> %168, <2 x i32> poison, <2 x i32> zeroinitializer
%170 = and <2 x i32> %169, <i32 -8, i32 -24>
%171 = shufflevector <2 x i32> %170, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
%172 = icmp eq <4 x i32> %171, <i32 8096, i32 8064, i32 8032, i32 7968>
%173 = add nsw i32 %0, -8000
%174 = icmp ult i32 %173, 6
%175 = bitcast <4 x i1> %172 to i4
%176 = icmp ne i4 %175, 0
%177 = or i1 %176, %174
%178 = or i1 %177, %165
%179 = or i1 %178, %167
br i1 %179, label %180, label %182
180: ; preds = %164
%181 = add nuw nsw i32 %0, 8
br label %247
182: ; preds = %164
%183 = add nsw i32 %0, -8024
%184 = icmp ult i32 %183, -7
%185 = and i32 %0, 1
%186 = icmp eq i32 %185, 0
%187 = or i1 %184, %186
br i1 %187, label %190, label %188
188: ; preds = %182
%189 = add nuw nsw i32 %0, 8
br label %247
190: ; preds = %182
%191 = add nsw i32 %0, -8048
%192 = icmp ult i32 %191, 132
br i1 %192, label %193, label %237
193: ; preds = %190
switch i32 %0, label %237 [
i32 8112, label %247
i32 8113, label %194
i32 8048, label %195
i32 8049, label %196
i32 8115, label %197
i32 8126, label %198
i32 8050, label %199
i32 8051, label %200
i32 8052, label %201
i32 8053, label %202
i32 8144, label %203
i32 8145, label %204
i32 8054, label %205
i32 8055, label %206
i32 8160, label %207
i32 8161, label %208
i32 8058, label %209
i32 8059, label %210
i32 8165, label %211
i32 8056, label %212
i32 8057, label %213
i32 8060, label %214
i32 8061, label %215
i32 8179, label %216
]
194: ; preds = %193
br label %247
195: ; preds = %193
br label %247
196: ; preds = %193
br label %247
197: ; preds = %193
br label %247
198: ; preds = %193
br label %247
199: ; preds = %193
br label %247
200: ; preds = %193
br label %247
201: ; preds = %193
br label %247
202: ; preds = %193
br label %247
203: ; preds = %193
br label %247
204: ; preds = %193
br label %247
205: ; preds = %193
br label %247
206: ; preds = %193
br label %247
207: ; preds = %193
br label %247
208: ; preds = %193
br label %247
209: ; preds = %193
br label %247
210: ; preds = %193
br label %247
211: ; preds = %193
br label %247
212: ; preds = %193
br label %247
213: ; preds = %193
br label %247
214: ; preds = %193
br label %247
215: ; preds = %193
br label %247
216: ; preds = %193
br label %247
217: ; preds = %162
%218 = and i32 %0, -16
%219 = icmp eq i32 %218, 8560
br i1 %219, label %220, label %222
220: ; preds = %217
%221 = add nsw i32 %0, -16
br label %247
222: ; preds = %217
%223 = add nsw i32 %0, -9424
%224 = icmp ult i32 %223, 26
br i1 %224, label %225, label %227
225: ; preds = %222
%226 = add nsw i32 %0, -26
br label %247
227: ; preds = %222
%228 = add nsw i32 %0, -65345
%229 = icmp ult i32 %228, 26
br i1 %229, label %230, label %232
230: ; preds = %227
%231 = add nsw i32 %0, -32
br label %247
232: ; preds = %227
%233 = add nsw i32 %0, -66600
%234 = icmp ult i32 %233, 38
br i1 %234, label %235, label %237
235: ; preds = %232
%236 = add nsw i32 %0, -40
br label %247
237: ; preds = %238, %107, %193, %49, %46, %140, %190, %232, %160, %104
br label %247
238: ; preds = %107
%239 = zext i32 %108 to i64
%240 = lshr i64 2725872576055, %239
%241 = and i64 %240, 1
%242 = icmp eq i64 %241, 0
br i1 %242, label %237, label %243
243: ; preds = %238
%244 = sext i32 %108 to i64
%245 = getelementptr inbounds [42 x i32], [42 x i32]* @switch.table.qspToWUpper, i64 0, i64 %244
%246 = load i32, i32* %245
br label %247
247: ; preds = %243, %193, %194, %195, %196, %197, %198, %199, %200, %201, %202, %203, %204, %205, %206, %207, %208, %209, %210, %211, %212, %213, %214, %215, %216, %49, %50, %51, %52, %53, %54, %55, %56, %57, %58, %60, %61, %63, %64, %65, %66, %67, %68, %69, %70, %71, %72, %73, %74, %75, %76, %77, %78, %79, %80, %81, %82, %83, %153, %136, %131, %39, %31, %43, %160, %140, %102, %86, %13, %3, %237, %235, %230, %225, %220, %188, %180, %158, %120, %115, %100, %93, %44, %11
%248 = phi i32 [ %12, %11 ], [ %45, %44 ], [ %0, %237 ], [ %94, %93 ], [ %101, %100 ], [ %116, %115 ], [ %121, %120 ], [ %159, %158 ], [ %181, %180 ], [ %189, %188 ], [ %221, %220 ], [ %226, %225 ], [ %231, %230 ], [ %236, %235 ], [ 924, %3 ], [ %15, %13 ], [ 73, %43 ], [ 902, %86 ], [ 931, %102 ], [ 1272, %140 ], [ 7776, %160 ], [ %32, %31 ], [ %42, %39 ], [ %132, %131 ], [ %139, %136 ], [ %154, %153 ], [ 83, %49 ], [ 386, %50 ], [ 388, %51 ], [ 391, %52 ], [ 395, %53 ], [ 401, %54 ], [ 502, %55 ], [ 408, %56 ], [ 544, %57 ], [ %59, %58 ], [ 503, %60 ], [ %62, %61 ], [ 398, %63 ], [ 497, %64 ], [ 385, %65 ], [ 390, %66 ], [ 393, %67 ], [ 394, %68 ], [ 399, %69 ], [ 400, %70 ], [ 403, %71 ], [ 404, %72 ], [ 407, %73 ], [ 406, %74 ], [ 412, %75 ], [ 413, %76 ], [ 415, %77 ], [ 422, %78 ], [ 425, %79 ], [ 430, %80 ], [ 433, %81 ], [ 434, %82 ], [ 439, %83 ], [ 8120, %193 ], [ 8121, %194 ], [ 8122, %195 ], [ 8123, %196 ], [ 8124, %197 ], [ 921, %198 ], [ 8136, %199 ], [ 8137, %200 ], [ 8138, %201 ], [ 8139, %202 ], [ 8152, %203 ], [ 8153, %204 ], [ 8154, %205 ], [ 8155, %206 ], [ 8168, %207 ], [ 8169, %208 ], [ 8170, %209 ], [ 8171, %210 ], [ 8172, %211 ], [ 8184, %212 ], [ 8185, %213 ], [ 8186, %214 ], [ 8187, %215 ], [ 8188, %216 ], [ %246, %243 ]
ret i32 %248
}