#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ exit(int);
int isupper(int);
int IsUpper(int enc, int c) {
  if (enc == 0)
    return isupper(c);
  if (c >= 0x41 && c <= 0x5a)
    return 1;
  switch (enc) {
  case 1:
  case 2:
  case 10:
    if (c >= 0xc0 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    break;
  case 3:
    if (c == 0xa1 || c == 0xa3)
      return 1;
    if (c == 0xa5 || c == 0xa6)
      return 1;
    if (c >= 0xa9 && c <= 0xac)
      return 1;
    if (c >= 0xae && c <= 0xaf)
      return 1;
    if (c >= 0xc0 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    break;
  case 4:
    if (c == 0xa1)
      return 1;
    if (c == 0xa6)
      return 1;
    if (c >= 0xa9 && c <= 0xac)
      return 1;
    if (c == 0xaf)
      return 1;
    if (c >= 0xc0 && c <= 0xc2)
      return 1;
    if (c >= 0xc4 && c <= 0xcf)
      return 1;
    if (c >= 0xd1 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    break;
  case 5:
    if (c == 0xa1 || c == 0xa3)
      return 1;
    if (c == 0xa5 || c == 0xa6)
      return 1;
    if (c >= 0xa9 && c <= 0xac)
      return 1;
    if (c == 0xae)
      return 1;
    if (c == 0xbd)
      return 1;
    if (c >= 0xc0 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    break;
  case 6:
    if (c >= 0xa1 && c <= 0xcf && c != 0xad)
      return 1;
    break;
  case 7:
    break;
  case 8:
    if (c == 0xb6)
      return 1;
    if (c >= 0xb8 && c <= 0xba)
      return 1;
    if (c == 0xbc)
      return 1;
    if (c >= 0xbe && c <= 0xbf)
      return 1;
    if (c >= 0xc1 && c <= 0xdb && c != 0xd2)
      return 1;
    break;
  case 9:
  case 12:
    break;
  case 11:
    if (c >= 0xa1 && c <= 0xa6)
      return 1;
    if (c >= 0xa8 && c <= 0xac)
      return 1;
    if (c == 0xae || c == 0xaf)
      return 1;
    if (c >= 0xc0 && c <= 0xde)
      return 1;
    break;
  case 13:
    if (c == 0xa8)
      return 1;
    if (c == 0xaa)
      return 1;
    if (c == 0xaf)
      return 1;
    if (c >= 0xc0 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    break;
  case 14:
    if (c == 0xa1)
      return 1;
    if (c == 0xa4 || c == 0xa6)
      return 1;
    if (c == 0xa8)
      return 1;
    if (c == 0xaa || c == 0xac)
      return 1;
    if (c == 0xaf || c == 0xb0)
      return 1;
    if (c == 0xb2 || c == 0xb4 || c == 0xb7)
      return 1;
    if (c == 0xbb || c == 0xbd)
      return 1;
    if (c >= 0xc0 && c <= 0xde)
      return 1;
    break;
  case 15:
    if (c >= 0xc0 && c <= 0xd6)
      return 1;
    if (c >= 0xd8 && c <= 0xde)
      return 1;
    if (c == 0xa6)
      return 1;
    if (c == 0xb4)
      return 1;
    if (c == 0xbc)
      return 1;
    if (c == 0xbe)
      return 1;
    break;
  case 16:
    if (c == 0xa1)
      return 1;
    if (c == 0xa3)
      return 1;
    if (c == 0xa6)
      return 1;
    if (c == 0xaa)
      return 1;
    if (c == 0xac)
      return 1;
    if (c == 0xaf)
      return 1;
    if (c == 0xb2)
      return 1;
    if (c == 0xb4)
      return 1;
    if (c == 0xbc)
      return 1;
    if (c == 0xbe)
      return 1;
    if (c >= 0xc0 && c <= 0xde)
      return 1;
    break;
  case 18:
    if (c == 0xb3)
      return 1;
  case 17:
    if (c >= 0xe0 && c <= 0xff)
      return 1;
    break;
  default:
    exit(-1);
  }
  return 0;
}


x86 assembly (clang, -O0):
<IsUpper>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    1148 <IsUpper+0x28>
mov    -0xc(%rbp),%edi
call   1030 <isupper@plt>
mov    %eax,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0x41,-0xc(%rbp)
jl     1168 <IsUpper+0x48>
cmpl   $0x5a,-0xc(%rbp)
jg     1168 <IsUpper+0x48>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x11,%eax
ja     1a4a <IsUpper+0x92a>
mov    -0x18(%rbp),%rax
lea    0xe78(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpl   $0xc0,-0xc(%rbp)
jl     11b7 <IsUpper+0x97>
cmpl   $0xd6,-0xc(%rbp)
jg     11b7 <IsUpper+0x97>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     11dd <IsUpper+0xbd>
cmpl   $0xde,-0xc(%rbp)
jg     11dd <IsUpper+0xbd>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
je     11fc <IsUpper+0xdc>
cmpl   $0xa3,-0xc(%rbp)
jne    1208 <IsUpper+0xe8>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa5,-0xc(%rbp)
je     1222 <IsUpper+0x102>
cmpl   $0xa6,-0xc(%rbp)
jne    122e <IsUpper+0x10e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa9,-0xc(%rbp)
jl     1254 <IsUpper+0x134>
cmpl   $0xac,-0xc(%rbp)
jg     1254 <IsUpper+0x134>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xae,-0xc(%rbp)
jl     127a <IsUpper+0x15a>
cmpl   $0xaf,-0xc(%rbp)
jg     127a <IsUpper+0x15a>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     12a0 <IsUpper+0x180>
cmpl   $0xd6,-0xc(%rbp)
jg     12a0 <IsUpper+0x180>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     12c6 <IsUpper+0x1a6>
cmpl   $0xde,-0xc(%rbp)
jg     12c6 <IsUpper+0x1a6>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
jne    12e4 <IsUpper+0x1c4>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa6,-0xc(%rbp)
jne    12fd <IsUpper+0x1dd>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa9,-0xc(%rbp)
jl     1323 <IsUpper+0x203>
cmpl   $0xac,-0xc(%rbp)
jg     1323 <IsUpper+0x203>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaf,-0xc(%rbp)
jne    133c <IsUpper+0x21c>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     1362 <IsUpper+0x242>
cmpl   $0xc2,-0xc(%rbp)
jg     1362 <IsUpper+0x242>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc4,-0xc(%rbp)
jl     1388 <IsUpper+0x268>
cmpl   $0xcf,-0xc(%rbp)
jg     1388 <IsUpper+0x268>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd1,-0xc(%rbp)
jl     13ae <IsUpper+0x28e>
cmpl   $0xd6,-0xc(%rbp)
jg     13ae <IsUpper+0x28e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     13d4 <IsUpper+0x2b4>
cmpl   $0xde,-0xc(%rbp)
jg     13d4 <IsUpper+0x2b4>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
je     13f3 <IsUpper+0x2d3>
cmpl   $0xa3,-0xc(%rbp)
jne    13ff <IsUpper+0x2df>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa5,-0xc(%rbp)
je     1419 <IsUpper+0x2f9>
cmpl   $0xa6,-0xc(%rbp)
jne    1425 <IsUpper+0x305>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa9,-0xc(%rbp)
jl     144b <IsUpper+0x32b>
cmpl   $0xac,-0xc(%rbp)
jg     144b <IsUpper+0x32b>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xae,-0xc(%rbp)
jne    1464 <IsUpper+0x344>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbd,-0xc(%rbp)
jne    147d <IsUpper+0x35d>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     14a3 <IsUpper+0x383>
cmpl   $0xd6,-0xc(%rbp)
jg     14a3 <IsUpper+0x383>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     14c9 <IsUpper+0x3a9>
cmpl   $0xde,-0xc(%rbp)
jg     14c9 <IsUpper+0x3a9>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
jl     1501 <IsUpper+0x3e1>
cmpl   $0xcf,-0xc(%rbp)
jg     1501 <IsUpper+0x3e1>
cmpl   $0xad,-0xc(%rbp)
je     1501 <IsUpper+0x3e1>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xb6,-0xc(%rbp)
jne    1524 <IsUpper+0x404>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xb8,-0xc(%rbp)
jl     154a <IsUpper+0x42a>
cmpl   $0xba,-0xc(%rbp)
jg     154a <IsUpper+0x42a>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbc,-0xc(%rbp)
jne    1563 <IsUpper+0x443>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbe,-0xc(%rbp)
jl     1589 <IsUpper+0x469>
cmpl   $0xbf,-0xc(%rbp)
jg     1589 <IsUpper+0x469>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc1,-0xc(%rbp)
jl     15bc <IsUpper+0x49c>
cmpl   $0xdb,-0xc(%rbp)
jg     15bc <IsUpper+0x49c>
cmpl   $0xd2,-0xc(%rbp)
je     15bc <IsUpper+0x49c>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
jl     15ec <IsUpper+0x4cc>
cmpl   $0xa6,-0xc(%rbp)
jg     15ec <IsUpper+0x4cc>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa8,-0xc(%rbp)
jl     1612 <IsUpper+0x4f2>
cmpl   $0xac,-0xc(%rbp)
jg     1612 <IsUpper+0x4f2>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xae,-0xc(%rbp)
je     162c <IsUpper+0x50c>
cmpl   $0xaf,-0xc(%rbp)
jne    1638 <IsUpper+0x518>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     165e <IsUpper+0x53e>
cmpl   $0xde,-0xc(%rbp)
jg     165e <IsUpper+0x53e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa8,-0xc(%rbp)
jne    167c <IsUpper+0x55c>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaa,-0xc(%rbp)
jne    1695 <IsUpper+0x575>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaf,-0xc(%rbp)
jne    16ae <IsUpper+0x58e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     16d4 <IsUpper+0x5b4>
cmpl   $0xd6,-0xc(%rbp)
jg     16d4 <IsUpper+0x5b4>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     16fa <IsUpper+0x5da>
cmpl   $0xde,-0xc(%rbp)
jg     16fa <IsUpper+0x5da>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
jne    1718 <IsUpper+0x5f8>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa4,-0xc(%rbp)
je     1732 <IsUpper+0x612>
cmpl   $0xa6,-0xc(%rbp)
jne    173e <IsUpper+0x61e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa8,-0xc(%rbp)
jne    1757 <IsUpper+0x637>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaa,-0xc(%rbp)
je     1771 <IsUpper+0x651>
cmpl   $0xac,-0xc(%rbp)
jne    177d <IsUpper+0x65d>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaf,-0xc(%rbp)
je     1797 <IsUpper+0x677>
cmpl   $0xb0,-0xc(%rbp)
jne    17a3 <IsUpper+0x683>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xb2,-0xc(%rbp)
je     17ca <IsUpper+0x6aa>
cmpl   $0xb4,-0xc(%rbp)
je     17ca <IsUpper+0x6aa>
cmpl   $0xb7,-0xc(%rbp)
jne    17d6 <IsUpper+0x6b6>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbb,-0xc(%rbp)
je     17f0 <IsUpper+0x6d0>
cmpl   $0xbd,-0xc(%rbp)
jne    17fc <IsUpper+0x6dc>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     1822 <IsUpper+0x702>
cmpl   $0xde,-0xc(%rbp)
jg     1822 <IsUpper+0x702>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xc0,-0xc(%rbp)
jl     184d <IsUpper+0x72d>
cmpl   $0xd6,-0xc(%rbp)
jg     184d <IsUpper+0x72d>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xd8,-0xc(%rbp)
jl     1873 <IsUpper+0x753>
cmpl   $0xde,-0xc(%rbp)
jg     1873 <IsUpper+0x753>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa6,-0xc(%rbp)
jne    188c <IsUpper+0x76c>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xb4,-0xc(%rbp)
jne    18a5 <IsUpper+0x785>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbc,-0xc(%rbp)
jne    18be <IsUpper+0x79e>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbe,-0xc(%rbp)
jne    18d7 <IsUpper+0x7b7>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xa1,-0xc(%rbp)
jne    18f5 <IsUpper+0x7d5>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa3,-0xc(%rbp)
jne    190e <IsUpper+0x7ee>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xa6,-0xc(%rbp)
jne    1927 <IsUpper+0x807>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaa,-0xc(%rbp)
jne    1940 <IsUpper+0x820>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xac,-0xc(%rbp)
jne    1959 <IsUpper+0x839>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xaf,-0xc(%rbp)
jne    1972 <IsUpper+0x852>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xb2,-0xc(%rbp)
jne    198b <IsUpper+0x86b>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xb4,-0xc(%rbp)
jne    19a4 <IsUpper+0x884>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbc,-0xc(%rbp)
jne    19bd <IsUpper+0x89d>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xbe,-0xc(%rbp)
jne    19d6 <IsUpper+0x8b6>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
cmpl   $0xc0,-0xc(%rbp)
jl     19fc <IsUpper+0x8dc>
cmpl   $0xde,-0xc(%rbp)
jg     19fc <IsUpper+0x8dc>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
cmpl   $0xb3,-0xc(%rbp)
jne    1a1a <IsUpper+0x8fa>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a1f <IsUpper+0x8ff>
cmpl   $0xe0,-0xc(%rbp)
jl     1a45 <IsUpper+0x925>
cmpl   $0xff,-0xc(%rbp)
jg     1a45 <IsUpper+0x925>
movl   $0x1,-0x4(%rbp)
jmp    1a5b <IsUpper+0x93b>
jmp    1a54 <IsUpper+0x934>
mov    $0xffffffff,%edi
call   1040 <exit@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<IsUpper>:
push   %rax
test   %edi,%edi
je     1134 <IsUpper+0x14>
lea    -0x41(%rsi),%ecx
mov    $0x1,%eax
cmp    $0x1a,%ecx
jae    113c <IsUpper+0x1c>
pop    %rcx
ret
mov    %esi,%edi
pop    %rax
jmp    1030 <isupper@plt>
add    $0xffffffff,%edi
cmp    $0x11,%edi
ja     1379 <IsUpper+0x259>
lea    0xeb1(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
lea    -0xc0(%rsi),%ecx
cmp    $0x17,%ecx
jb     1132 <IsUpper+0x12>
add    $0xffffff28,%esi
cmp    $0x7,%esi
jae    1375 <IsUpper+0x255>
jmp    1132 <IsUpper+0x12>
lea    -0xc0(%rsi),%ecx
cmp    $0x17,%ecx
jb     1132 <IsUpper+0x12>
add    $0xffffff5f,%esi
cmp    $0x3d,%esi
ja     1375 <IsUpper+0x255>
movabs $0x3f80000000006f35,%rcx
jmp    11d2 <IsUpper+0xb2>
cmp    $0xa1,%esi
je     1132 <IsUpper+0x12>
cmp    $0xa6,%esi
je     1132 <IsUpper+0x12>
lea    -0xc4(%rsi),%ecx
cmp    $0xc,%ecx
jb     1132 <IsUpper+0x12>
add    $0xffffff57,%esi
cmp    $0x35,%esi
ja     1375 <IsUpper+0x255>
movabs $0x3fbf000380004f,%rcx
bt     %rsi,%rcx
jb     1132 <IsUpper+0x12>
jmp    1375 <IsUpper+0x255>
lea    -0xa1(%rsi),%ecx
cmp    $0x1c,%ecx
ja     1158 <IsUpper+0x38>
mov    $0x10002f35,%edx
jmp    1294 <IsUpper+0x174>
cmp    $0xad,%esi
je     1375 <IsUpper+0x255>
add    $0xffffff5f,%esi
cmp    $0x2f,%esi
jb     1132 <IsUpper+0x12>
jmp    1375 <IsUpper+0x255>
lea    -0xb6(%rsi),%ecx
cmp    $0xa,%ecx
jae    1233 <IsUpper+0x113>
mov    $0x35d,%edx
bt     %ecx,%edx
jb     1132 <IsUpper+0x12>
cmp    $0xd2,%esi
je     1375 <IsUpper+0x255>
add    $0xffffff3f,%esi
cmp    $0x1b,%esi
jb     1132 <IsUpper+0x12>
jmp    1375 <IsUpper+0x255>
lea    -0xc0(%rsi),%ecx
cmp    $0x1f,%ecx
jb     1132 <IsUpper+0x12>
add    $0xffffff5f,%esi
cmp    $0xf,%esi
jae    1375 <IsUpper+0x255>
movslq %esi,%rax
lea    0xdcd(%rip),%rcx
mov    (%rcx,%rax,4),%eax
pop    %rcx
ret
lea    -0xa8(%rsi),%ecx
cmp    $0x7,%ecx
ja     1158 <IsUpper+0x38>
mov    $0x85,%edx
bt     %ecx,%edx
jb     1132 <IsUpper+0x12>
jmp    1158 <IsUpper+0x38>
lea    -0xa1(%rsi),%ecx
cmp    $0xc,%ecx
jae    12bb <IsUpper+0x19b>
mov    $0xaa9,%edx
bt     %ecx,%edx
jb     1132 <IsUpper+0x12>
lea    -0xaf(%rsi),%ecx
cmp    $0x2,%ecx
jb     1132 <IsUpper+0x12>
lea    -0xb2(%rsi),%ecx
cmp    $0xc,%ecx
jae    1349 <IsUpper+0x229>
mov    $0xa25,%edx
bt     %ecx,%edx
jb     1132 <IsUpper+0x12>
add    $0xffffff40,%esi
cmp    $0x1e,%esi
ja     1375 <IsUpper+0x255>
jmp    1132 <IsUpper+0x12>
lea    -0xc0(%rsi),%ecx
cmp    $0x17,%ecx
jb     1132 <IsUpper+0x12>
lea    -0xd8(%rsi),%ecx
cmp    $0x7,%ecx
jb     1132 <IsUpper+0x12>
add    $0xffffff5a,%esi
cmp    $0x18,%esi
ja     1375 <IsUpper+0x255>
mov    $0x1404001,%ecx
bt     %esi,%ecx
jb     1132 <IsUpper+0x12>
jmp    1375 <IsUpper+0x255>
lea    -0xa1(%rsi),%ecx
cmp    $0x1d,%ecx
ja     1349 <IsUpper+0x229>
mov    $0x280a4a25,%edx
bt     %ecx,%edx
jb     1132 <IsUpper+0x12>
add    $0xffffff40,%esi
cmp    $0x1f,%esi
jb     1132 <IsUpper+0x12>
jmp    1375 <IsUpper+0x255>
cmp    $0xb3,%esi
je     1132 <IsUpper+0x12>
and    $0xffffffe0,%esi
cmp    $0xe0,%esi
je     1132 <IsUpper+0x12>
xor    %eax,%eax
pop    %rcx
ret
mov    $0xffffffff,%edi
call   1040 <exit@plt>

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

LLVM IR (-O2):
@switch.table.IsUpper = [15 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 1, i32 1]
define i32 @IsUpper(i32 %0, i32 %1) {
%3 = icmp eq i32 %0, 0
br i1 %3, label %4, label %6
4: ; preds = %2
%5 = tail call i32 @isupper(i32 %1)
br label %117
6: ; preds = %2
%7 = add i32 %1, -65
%8 = icmp ult i32 %7, 26
br i1 %8, label %117, label %9
9: ; preds = %6
switch i32 %0, label %89 [
i32 1, label %10
i32 2, label %10
i32 10, label %10
i32 3, label %16
i32 4, label %20
i32 5, label %25
i32 6, label %32
i32 7, label %91
i32 8, label %37
i32 9, label %91
i32 12, label %91
i32 11, label %45
i32 13, label %51
i32 14, label %58
i32 15, label %70
i32 16, label %77
i32 18, label %81
i32 17, label %86
]
10: ; preds = %9, %9, %9
%11 = add i32 %1, -192
%12 = icmp ult i32 %11, 23
%13 = add i32 %1, -216
%14 = icmp ult i32 %13, 7
%15 = or i1 %12, %14
br i1 %15, label %117, label %91
16: ; preds = %9
%17 = add i32 %1, -192
%18 = icmp ult i32 %17, 23
br i1 %18, label %117, label %19
19: ; preds = %16
switch i32 %1, label %91 [
i32 222, label %117
i32 221, label %117
i32 220, label %117
i32 219, label %117
i32 218, label %117
i32 217, label %117
i32 216, label %117
i32 175, label %117
i32 174, label %117
i32 172, label %117
i32 171, label %117
i32 170, label %117
i32 169, label %117
i32 166, label %117
i32 165, label %117
i32 163, label %117
i32 161, label %117
]
20: ; preds = %9
switch i32 %1, label %21 [
i32 161, label %117
i32 166, label %117
]
21: ; preds = %20
%22 = add i32 %1, -196
%23 = icmp ult i32 %22, 12
br i1 %23, label %117, label %24
24: ; preds = %21
switch i32 %1, label %91 [
i32 222, label %117
i32 221, label %117
i32 220, label %117
i32 219, label %117
i32 218, label %117
i32 217, label %117
i32 216, label %117
i32 214, label %117
i32 213, label %117
i32 212, label %117
i32 211, label %117
i32 210, label %117
i32 209, label %117
i32 194, label %117
i32 193, label %117
i32 192, label %117
i32 175, label %117
i32 172, label %117
i32 171, label %117
i32 170, label %117
i32 169, label %117
]
25: ; preds = %9
switch i32 %1, label %26 [
i32 172, label %117
i32 171, label %117
i32 170, label %117
i32 169, label %117
i32 166, label %117
i32 165, label %117
i32 163, label %117
i32 161, label %117
i32 174, label %117
i32 189, label %117
]
26: ; preds = %25
%27 = add i32 %1, -192
%28 = icmp ult i32 %27, 23
%29 = add i32 %1, -216
%30 = icmp ult i32 %29, 7
%31 = or i1 %28, %30
br i1 %31, label %117, label %91
32: ; preds = %9
%33 = add i32 %1, -161
%34 = icmp ult i32 %33, 47
%35 = icmp ne i32 %1, 173
%36 = and i1 %35, %34
br i1 %36, label %117, label %91
37: ; preds = %9
%38 = add i32 %1, -182
%39 = icmp ult i32 %38, 10
br i1 %39, label %92, label %40
40: ; preds = %92, %37
%41 = add i32 %1, -193
%42 = icmp ult i32 %41, 27
%43 = icmp ne i32 %1, 210
%44 = and i1 %43, %42
br i1 %44, label %117, label %91
45: ; preds = %9
%46 = add i32 %1, -192
%47 = icmp ult i32 %46, 31
br i1 %47, label %117, label %48
48: ; preds = %45
%49 = add i32 %1, -161
%50 = icmp ult i32 %49, 15
br i1 %50, label %97, label %91
51: ; preds = %9
switch i32 %1, label %52 [
i32 168, label %117
i32 170, label %117
i32 175, label %117
]
52: ; preds = %51
%53 = add i32 %1, -192
%54 = icmp ult i32 %53, 23
%55 = add i32 %1, -216
%56 = icmp ult i32 %55, 7
%57 = or i1 %54, %56
br i1 %57, label %117, label %91
58: ; preds = %9
%59 = add i32 %1, -161
%60 = icmp ult i32 %59, 12
br i1 %60, label %101, label %61
61: ; preds = %58
%62 = add i32 %1, -175
%63 = icmp ult i32 %62, 2
br i1 %63, label %117, label %64
64: ; preds = %101, %61
%65 = add i32 %1, -178
%66 = icmp ult i32 %65, 12
br i1 %66, label %109, label %67
67: ; preds = %64
%68 = add i32 %1, -192
%69 = icmp ult i32 %68, 31
br i1 %69, label %117, label %91
70: ; preds = %9
%71 = add i32 %1, -192
%72 = icmp ult i32 %71, 23
%73 = add i32 %1, -216
%74 = icmp ult i32 %73, 7
%75 = or i1 %72, %74
br i1 %75, label %117, label %76
76: ; preds = %70
switch i32 %1, label %91 [
i32 166, label %117
i32 180, label %117
i32 188, label %117
i32 190, label %117
]
77: ; preds = %9
switch i32 %1, label %78 [
i32 161, label %117
i32 163, label %117
i32 166, label %117
i32 170, label %117
i32 172, label %117
i32 175, label %117
i32 178, label %117
i32 180, label %117
i32 188, label %117
i32 190, label %117
]
78: ; preds = %77
%79 = add i32 %1, -192
%80 = icmp ult i32 %79, 31
br i1 %80, label %117, label %91
81: ; preds = %9
%82 = icmp eq i32 %1, 179
%83 = and i32 %1, -32
%84 = icmp eq i32 %83, 224
%85 = or i1 %82, %84
br i1 %85, label %117, label %91
86: ; preds = %9
%87 = and i32 %1, -32
%88 = icmp eq i32 %87, 224
br i1 %88, label %117, label %91
89: ; preds = %9
%90 = tail call i32 @exit(i32 -1)
unreachable
91: ; preds = %109, %48, %24, %19, %81, %52, %26, %10, %76, %86, %78, %67, %9, %9, %40, %32, %9
br label %117
92: ; preds = %37
%93 = trunc i32 %38 to i16
%94 = lshr i16 861, %93
%95 = and i16 %94, 1
%96 = icmp eq i16 %95, 0
br i1 %96, label %40, label %117
97: ; preds = %48
%98 = sext i32 %49 to i64
%99 = getelementptr inbounds [15 x i32], [15 x i32]* @switch.table.IsUpper, i64 0, i64 %98
%100 = load i32, i32* %99
br label %117
101: ; preds = %58
%102 = trunc i32 %59 to i16
%103 = lshr i16 2729, %102
%104 = and i16 %103, 1
%105 = icmp ne i16 %104, 0
%106 = add i32 %1, -175
%107 = icmp ult i32 %106, 2
%108 = or i1 %105, %107
br i1 %108, label %117, label %64
109: ; preds = %64
%110 = trunc i32 %65 to i16
%111 = lshr i16 2597, %110
%112 = and i16 %111, 1
%113 = icmp ne i16 %112, 0
%114 = add i32 %1, -192
%115 = icmp ult i32 %114, 31
%116 = or i1 %113, %115
br i1 %116, label %117, label %91
117: ; preds = %109, %101, %92, %97, %45, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %24, %21, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %19, %16, %86, %81, %78, %77, %77, %77, %77, %77, %77, %77, %77, %77, %77, %76, %76, %76, %76, %70, %67, %61, %52, %51, %51, %51, %40, %32, %26, %20, %20, %10, %6, %91, %4
%118 = phi i32 [ %5, %4 ], [ 0, %91 ], [ 1, %6 ], [ 1, %10 ], [ 1, %19 ], [ 1, %20 ], [ 1, %20 ], [ 1, %24 ], [ 1, %25 ], [ 1, %26 ], [ 1, %32 ], [ 1, %40 ], [ 1, %51 ], [ 1, %51 ], [ 1, %51 ], [ 1, %52 ], [ 1, %61 ], [ 1, %67 ], [ 1, %70 ], [ 1, %76 ], [ 1, %76 ], [ 1, %76 ], [ 1, %76 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %77 ], [ 1, %78 ], [ 1, %81 ], [ 1, %86 ], [ 1, %16 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %19 ], [ 1, %21 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %45 ], [ %100, %97 ], [ 1, %92 ], [ 1, %101 ], [ 1, %109 ]
ret i32 %118
}