#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 is_valid_in_NewOrderSingle(size_t __tag) {
  switch (__tag) {
  case 49:
  case 56:
  case 115:
  case 128:
  case 34:
  case 50:
  case 142:
  case 57:
  case 143:
  case 116:
  case 144:
  case 129:
  case 145:
  case 43:
  case 97:
  case 52:
  case 122:
  case 369:
  case 627:
  case 11:
  case 526:
  case 583:
  case 453:
  case 229:
  case 75:
  case 1:
  case 660:
  case 581:
  case 589:
  case 590:
  case 591:
  case 70:
  case 76:
  case 63:
  case 64:
  case 544:
  case 635:
  case 21:
  case 18:
  case 110:
  case 111:
  case 100:
  case 386:
  case 81:
  case 55:
  case 65:
  case 48:
  case 22:
  case 454:
  case 460:
  case 461:
  case 167:
  case 762:
  case 200:
  case 541:
  case 201:
  case 224:
  case 225:
  case 239:
  case 226:
  case 227:
  case 228:
  case 255:
  case 543:
  case 470:
  case 471:
  case 472:
  case 240:
  case 202:
  case 947:
  case 206:
  case 231:
  case 223:
  case 207:
  case 106:
  case 348:
  case 349:
  case 107:
  case 350:
  case 351:
  case 691:
  case 667:
  case 875:
  case 876:
  case 864:
  case 873:
  case 874:
  case 913:
  case 914:
  case 915:
  case 918:
  case 788:
  case 916:
  case 917:
  case 919:
  case 898:
  case 711:
  case 140:
  case 54:
  case 114:
  case 60:
  case 232:
  case 854:
  case 38:
  case 152:
  case 516:
  case 468:
  case 469:
  case 40:
  case 423:
  case 44:
  case 99:
  case 218:
  case 220:
  case 221:
  case 222:
  case 662:
  case 663:
  case 699:
  case 761:
  case 235:
  case 236:
  case 701:
  case 696:
  case 697:
  case 698:
  case 15:
  case 376:
  case 377:
  case 23:
  case 117:
  case 59:
  case 168:
  case 432:
  case 126:
  case 427:
  case 12:
  case 13:
  case 479:
  case 497:
  case 528:
  case 529:
  case 582:
  case 121:
  case 120:
  case 775:
  case 58:
  case 354:
  case 355:
  case 193:
  case 192:
  case 640:
  case 77:
  case 203:
  case 210:
  case 211:
  case 835:
  case 836:
  case 837:
  case 838:
  case 840:
  case 388:
  case 389:
  case 841:
  case 842:
  case 843:
  case 844:
  case 846:
  case 847:
  case 848:
  case 849:
  case 480:
  case 481:
  case 513:
  case 494:
    return 1;
  default:
    return 0;
  }
}


x86 assembly (clang, -O0):
<is_valid_in_NewOrderSingle>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x18(%rbp)
sub    $0x3b2,%rax
ja     1140 <is_valid_in_NewOrderSingle+0x40>
mov    -0x18(%rbp),%rax
lea    0xed5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1,-0x4(%rbp)
jmp    1147 <is_valid_in_NewOrderSingle+0x47>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_valid_in_NewOrderSingle>:
add    $0xffffffffffffffff,%rdi
cmp    $0x3b2,%rdi
ja     1123 <is_valid_in_NewOrderSingle+0x23>
mov    $0x1,%eax
lea    0xee7(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
ret
xor    %eax,%eax
ret

LLVM IR (-O0):
define i32 @is_valid_in_NewOrderSingle(i64 %0) {
%2 = alloca i32
%3 = alloca i64
store i64 %0, i64* %3
%4 = load i64, i64* %3
switch i64 %4, label %6 [
i64 49, label %5
i64 56, label %5
i64 115, label %5
i64 128, label %5
i64 34, label %5
i64 50, label %5
i64 142, label %5
i64 57, label %5
i64 143, label %5
i64 116, label %5
i64 144, label %5
i64 129, label %5
i64 145, label %5
i64 43, label %5
i64 97, label %5
i64 52, label %5
i64 122, label %5
i64 369, label %5
i64 627, label %5
i64 11, label %5
i64 526, label %5
i64 583, label %5
i64 453, label %5
i64 229, label %5
i64 75, label %5
i64 1, label %5
i64 660, label %5
i64 581, label %5
i64 589, label %5
i64 590, label %5
i64 591, label %5
i64 70, label %5
i64 76, label %5
i64 63, label %5
i64 64, label %5
i64 544, label %5
i64 635, label %5
i64 21, label %5
i64 18, label %5
i64 110, label %5
i64 111, label %5
i64 100, label %5
i64 386, label %5
i64 81, label %5
i64 55, label %5
i64 65, label %5
i64 48, label %5
i64 22, label %5
i64 454, label %5
i64 460, label %5
i64 461, label %5
i64 167, label %5
i64 762, label %5
i64 200, label %5
i64 541, label %5
i64 201, label %5
i64 224, label %5
i64 225, label %5
i64 239, label %5
i64 226, label %5
i64 227, label %5
i64 228, label %5
i64 255, label %5
i64 543, label %5
i64 470, label %5
i64 471, label %5
i64 472, label %5
i64 240, label %5
i64 202, label %5
i64 947, label %5
i64 206, label %5
i64 231, label %5
i64 223, label %5
i64 207, label %5
i64 106, label %5
i64 348, label %5
i64 349, label %5
i64 107, label %5
i64 350, label %5
i64 351, label %5
i64 691, label %5
i64 667, label %5
i64 875, label %5
i64 876, label %5
i64 864, label %5
i64 873, label %5
i64 874, label %5
i64 913, label %5
i64 914, label %5
i64 915, label %5
i64 918, label %5
i64 788, label %5
i64 916, label %5
i64 917, label %5
i64 919, label %5
i64 898, label %5
i64 711, label %5
i64 140, label %5
i64 54, label %5
i64 114, label %5
i64 60, label %5
i64 232, label %5
i64 854, label %5
i64 38, label %5
i64 152, label %5
i64 516, label %5
i64 468, label %5
i64 469, label %5
i64 40, label %5
i64 423, label %5
i64 44, label %5
i64 99, label %5
i64 218, label %5
i64 220, label %5
i64 221, label %5
i64 222, label %5
i64 662, label %5
i64 663, label %5
i64 699, label %5
i64 761, label %5
i64 235, label %5
i64 236, label %5
i64 701, label %5
i64 696, label %5
i64 697, label %5
i64 698, label %5
i64 15, label %5
i64 376, label %5
i64 377, label %5
i64 23, label %5
i64 117, label %5
i64 59, label %5
i64 168, label %5
i64 432, label %5
i64 126, label %5
i64 427, label %5
i64 12, label %5
i64 13, label %5
i64 479, label %5
i64 497, label %5
i64 528, label %5
i64 529, label %5
i64 582, label %5
i64 121, label %5
i64 120, label %5
i64 775, label %5
i64 58, label %5
i64 354, label %5
i64 355, label %5
i64 193, label %5
i64 192, label %5
i64 640, label %5
i64 77, label %5
i64 203, label %5
i64 210, label %5
i64 211, label %5
i64 835, label %5
i64 836, label %5
i64 837, label %5
i64 838, label %5
i64 840, label %5
i64 388, label %5
i64 389, label %5
i64 841, label %5
i64 842, label %5
i64 843, label %5
i64 844, label %5
i64 846, label %5
i64 847, label %5
i64 848, label %5
i64 849, label %5
i64 480, label %5
i64 481, label %5
i64 513, label %5
i64 494, label %5
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i32 1, i32* %2
br label %7
6: ; preds = %1
store i32 0, i32* %2
br label %7
7: ; preds = %6, %5
%8 = load i32, i32* %2
ret i32 %8
}

LLVM IR (-O2):
define i32 @is_valid_in_NewOrderSingle(i64 %0) {
switch i64 %0, label %2 [
i64 49, label %3
i64 56, label %3
i64 115, label %3
i64 128, label %3
i64 34, label %3
i64 50, label %3
i64 142, label %3
i64 57, label %3
i64 143, label %3
i64 116, label %3
i64 144, label %3
i64 129, label %3
i64 145, label %3
i64 43, label %3
i64 97, label %3
i64 52, label %3
i64 122, label %3
i64 369, label %3
i64 627, label %3
i64 11, label %3
i64 526, label %3
i64 583, label %3
i64 453, label %3
i64 229, label %3
i64 75, label %3
i64 1, label %3
i64 660, label %3
i64 581, label %3
i64 589, label %3
i64 590, label %3
i64 591, label %3
i64 70, label %3
i64 76, label %3
i64 63, label %3
i64 64, label %3
i64 544, label %3
i64 635, label %3
i64 21, label %3
i64 18, label %3
i64 110, label %3
i64 111, label %3
i64 100, label %3
i64 386, label %3
i64 81, label %3
i64 55, label %3
i64 65, label %3
i64 48, label %3
i64 22, label %3
i64 454, label %3
i64 460, label %3
i64 461, label %3
i64 167, label %3
i64 762, label %3
i64 200, label %3
i64 541, label %3
i64 201, label %3
i64 224, label %3
i64 225, label %3
i64 239, label %3
i64 226, label %3
i64 227, label %3
i64 228, label %3
i64 255, label %3
i64 543, label %3
i64 470, label %3
i64 471, label %3
i64 472, label %3
i64 240, label %3
i64 202, label %3
i64 947, label %3
i64 206, label %3
i64 231, label %3
i64 223, label %3
i64 207, label %3
i64 106, label %3
i64 348, label %3
i64 349, label %3
i64 107, label %3
i64 350, label %3
i64 351, label %3
i64 691, label %3
i64 667, label %3
i64 875, label %3
i64 876, label %3
i64 864, label %3
i64 873, label %3
i64 874, label %3
i64 913, label %3
i64 914, label %3
i64 915, label %3
i64 918, label %3
i64 788, label %3
i64 916, label %3
i64 917, label %3
i64 919, label %3
i64 898, label %3
i64 711, label %3
i64 140, label %3
i64 54, label %3
i64 114, label %3
i64 60, label %3
i64 232, label %3
i64 854, label %3
i64 38, label %3
i64 152, label %3
i64 516, label %3
i64 468, label %3
i64 469, label %3
i64 40, label %3
i64 423, label %3
i64 44, label %3
i64 99, label %3
i64 218, label %3
i64 220, label %3
i64 221, label %3
i64 222, label %3
i64 662, label %3
i64 663, label %3
i64 699, label %3
i64 761, label %3
i64 235, label %3
i64 236, label %3
i64 701, label %3
i64 696, label %3
i64 697, label %3
i64 698, label %3
i64 15, label %3
i64 376, label %3
i64 377, label %3
i64 23, label %3
i64 117, label %3
i64 59, label %3
i64 168, label %3
i64 432, label %3
i64 126, label %3
i64 427, label %3
i64 12, label %3
i64 13, label %3
i64 479, label %3
i64 497, label %3
i64 528, label %3
i64 529, label %3
i64 582, label %3
i64 121, label %3
i64 120, label %3
i64 775, label %3
i64 58, label %3
i64 354, label %3
i64 355, label %3
i64 193, label %3
i64 192, label %3
i64 640, label %3
i64 77, label %3
i64 203, label %3
i64 210, label %3
i64 211, label %3
i64 835, label %3
i64 836, label %3
i64 837, label %3
i64 838, label %3
i64 840, label %3
i64 388, label %3
i64 389, label %3
i64 841, label %3
i64 842, label %3
i64 843, label %3
i64 844, label %3
i64 846, label %3
i64 847, label %3
i64 848, label %3
i64 849, label %3
i64 480, label %3
i64 481, label %3
i64 513, label %3
i64 494, label %3
]
2: ; preds = %1
br label %3
3: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %2
%4 = phi i32 [ 0, %2 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ], [ 1, %1 ]
ret i32 %4
}