#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*/ error(char *);
void verify(long magic) {
  if (magic != ((0) | ((((4 * (8)) + 0) * (8)) + 7)) &&
      magic != ((0) | ((((4 * (11)) + 0) * (11)) + 7)) &&
      magic != ((0) | ((((4 * (12)) + 0) * (12)) + 7)) &&
      magic != ((0) | ((((4 * (13)) + 0) * (13)) + 7)) &&
      magic != ((0) | ((((4 * (16)) + 0) * (16)) + 7)) &&
      magic != ((0) | ((((4 * (17)) + 0) * (17)) + 7)) &&
      magic != ((0) | ((((4 * (18)) + 0) * (18)) + 7)) &&
      magic != ((0) | ((((4 * (19)) + 0) * (19)) + 7)) &&
      magic != ((0) | ((((4 * (20)) + 0) * (20)) + 7)) &&
      magic != ((0) | ((((4 * (21)) + 0) * (21)) + 7)) &&
      magic != ((0) | ((((4 * (22)) + 0) * (22)) + 7)) &&
      magic != ((0) | ((((4 * (23)) + 0) * (23)) + 7)) &&
      magic != ((0) | ((((4 * (24)) + 0) * (24)) + 7)) &&
      magic != ((0) | ((((4 * (25)) + 0) * (25)) + 7)))
    error("Error: not a Plan 9 binary.");
  else if (magic != ((0) | ((((4 * (11)) + 0) * (11)) + 7)))
    error("Error: wrong architecture, must be i386.");
}


x86 assembly (clang, -O0):
<verify>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
cmpq   $0x107,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x1eb,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x247,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x2ab,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x407,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x48b,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x517,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x5ab,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x647,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x6eb,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x797,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x84b,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x907,-0x8(%rbp)
je     11f1 <verify+0xe1>
cmpq   $0x9cb,-0x8(%rbp)
je     11f1 <verify+0xe1>
lea    0xe19(%rip),%rdi
call   1030 <error@plt>
jmp    1210 <verify+0x100>
cmpq   $0x1eb,-0x8(%rbp)
je     120b <verify+0xfb>
lea    0xe16(%rip),%rdi
call   1030 <error@plt>
jmp    1210 <verify+0x100>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<verify>:
mov    %rdi,%rax
lea    0xee6(%rip),%rdi
cmp    $0x5aa,%rax
jg     1148 <verify+0x38>
cmp    $0x2aa,%rax
jle    116a <verify+0x5a>
cmp    $0x48a,%rax
jg     119e <verify+0x8e>
cmp    $0x2ab,%rax
je     11c0 <verify+0xb0>
cmp    $0x407,%rax
je     11c0 <verify+0xb0>
jmp    11c7 <verify+0xb7>
cmp    $0x796,%rax
jle    1184 <verify+0x74>
cmp    $0x906,%rax
jg     11b0 <verify+0xa0>
cmp    $0x797,%rax
je     11c0 <verify+0xb0>
cmp    $0x84b,%rax
je     11c0 <verify+0xb0>
jmp    11c7 <verify+0xb7>
cmp    $0x107,%rax
je     11c0 <verify+0xb0>
cmp    $0x1eb,%rax
je     11cc <verify+0xbc>
cmp    $0x247,%rax
je     11c0 <verify+0xb0>
jmp    11c7 <verify+0xb7>
cmp    $0x5ab,%rax
je     11c0 <verify+0xb0>
cmp    $0x647,%rax
je     11c0 <verify+0xb0>
cmp    $0x6eb,%rax
je     11c0 <verify+0xb0>
jmp    11c7 <verify+0xb7>
cmp    $0x48b,%rax
je     11c0 <verify+0xb0>
cmp    $0x517,%rax
je     11c0 <verify+0xb0>
jmp    11c7 <verify+0xb7>
cmp    $0x9cb,%rax
je     11c0 <verify+0xb0>
cmp    $0x907,%rax
jne    11c7 <verify+0xb7>
lea    0xe55(%rip),%rdi
jmp    1030 <error@plt>
ret

LLVM IR (-O0):
@.str = [28 x i8] c"Error: not a Plan 9 binary.\00"
@.str.1 = [41 x i8] c"Error: wrong architecture, must be i386.\00"
define void @verify(i64 %0) {
%2 = alloca i64
store i64 %0, i64* %2
%3 = load i64, i64* %2
%4 = icmp ne i64 %3, 263
br i1 %4, label %5, label %46
5: ; preds = %1
%6 = load i64, i64* %2
%7 = icmp ne i64 %6, 491
br i1 %7, label %8, label %46
8: ; preds = %5
%9 = load i64, i64* %2
%10 = icmp ne i64 %9, 583
br i1 %10, label %11, label %46
11: ; preds = %8
%12 = load i64, i64* %2
%13 = icmp ne i64 %12, 683
br i1 %13, label %14, label %46
14: ; preds = %11
%15 = load i64, i64* %2
%16 = icmp ne i64 %15, 1031
br i1 %16, label %17, label %46
17: ; preds = %14
%18 = load i64, i64* %2
%19 = icmp ne i64 %18, 1163
br i1 %19, label %20, label %46
20: ; preds = %17
%21 = load i64, i64* %2
%22 = icmp ne i64 %21, 1303
br i1 %22, label %23, label %46
23: ; preds = %20
%24 = load i64, i64* %2
%25 = icmp ne i64 %24, 1451
br i1 %25, label %26, label %46
26: ; preds = %23
%27 = load i64, i64* %2
%28 = icmp ne i64 %27, 1607
br i1 %28, label %29, label %46
29: ; preds = %26
%30 = load i64, i64* %2
%31 = icmp ne i64 %30, 1771
br i1 %31, label %32, label %46
32: ; preds = %29
%33 = load i64, i64* %2
%34 = icmp ne i64 %33, 1943
br i1 %34, label %35, label %46
35: ; preds = %32
%36 = load i64, i64* %2
%37 = icmp ne i64 %36, 2123
br i1 %37, label %38, label %46
38: ; preds = %35
%39 = load i64, i64* %2
%40 = icmp ne i64 %39, 2311
br i1 %40, label %41, label %46
41: ; preds = %38
%42 = load i64, i64* %2
%43 = icmp ne i64 %42, 2507
br i1 %43, label %44, label %46
44: ; preds = %41
%45 = call i32 @error(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0))
br label %52
46: ; preds = %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8, %5, %1
%47 = load i64, i64* %2
%48 = icmp ne i64 %47, 491
br i1 %48, label %49, label %51
49: ; preds = %46
%50 = call i32 @error(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0))
br label %51
51: ; preds = %49, %46
br label %52
52: ; preds = %51, %44
ret void
}

LLVM IR (-O2):
@.str = [28 x i8] c"Error: not a Plan 9 binary.\00"
@.str.1 = [41 x i8] c"Error: wrong architecture, must be i386.\00"
define void @verify(i64 %0) {
switch i64 %0, label %3 [
i64 491, label %6
i64 263, label %2
i64 583, label %2
i64 683, label %2
i64 1031, label %2
i64 1163, label %2
i64 1303, label %2
i64 1451, label %2
i64 1607, label %2
i64 1771, label %2
i64 1943, label %2
i64 2123, label %2
i64 2311, label %2
i64 2507, label %2
]
2: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %3
3: ; preds = %1, %2
%4 = phi i8* [ getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0), %2 ], [ getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0), %1 ]
%5 = tail call i32 @error(i8* %4)
br label %6
6: ; preds = %3, %1
ret void
}