#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*/ abort();
int main1() {
  int i;
  int ia[64];
  int ib[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  int ic[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  char ca[64];
  char cb[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  char cc[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  short sa[64];
  short sb[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  short sc[64] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
                  1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0};
  for (i = 0; i < 64; i++) {
    ia[i] = (ib[i] | ic[i]);
  }
  for (i = 0; i < 64; i++) {
    if (ia[i] != (ib[i] | ic[i]))
      abort();
  }
  for (i = 0; i < 64; i++) {
    ca[i] = (cb[i] | cc[i]);
  }
  for (i = 0; i < 64; i++) {
    if (ca[i] != (cb[i] | cc[i]))
      abort();
  }
  for (i = 0; i < 64; i++) {
    sa[i] = (sb[i] | sc[i]);
  }
  for (i = 0; i < 64; i++) {
    if (sa[i] != (sb[i] | sc[i]))
      abort();
  }
  return 0;
}


x86 assembly (clang, -O0):
<main1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x550,%rsp
lea    -0x210(%rbp),%rdi
lea    0xec7(%rip),%rsi
mov    $0x100,%edx
call   1040 <memcpy@plt>
lea    -0x310(%rbp),%rdi
lea    0xfaf(%rip),%rsi
mov    $0x100,%edx
call   1040 <memcpy@plt>
lea    -0x390(%rbp),%rdi
lea    0x1097(%rip),%rsi
mov    $0x40,%edx
call   1040 <memcpy@plt>
lea    -0x3d0(%rbp),%rdi
lea    0x10bf(%rip),%rsi
mov    $0x40,%edx
call   1040 <memcpy@plt>
lea    -0x4d0(%rbp),%rdi
lea    0x10e7(%rip),%rsi
mov    $0x80,%edx
call   1040 <memcpy@plt>
lea    -0x550(%rbp),%rdi
lea    0x114f(%rip),%rsi
mov    $0x80,%edx
call   1040 <memcpy@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    11fb <main1+0xdb>
movslq -0x4(%rbp),%rax
mov    -0x210(%rbp,%rax,4),%ecx
movslq -0x4(%rbp),%rax
or     -0x310(%rbp,%rax,4),%ecx
movslq -0x4(%rbp),%rax
mov    %ecx,-0x110(%rbp,%rax,4)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    11c2 <main1+0xa2>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    124f <main1+0x12f>
movslq -0x4(%rbp),%rax
mov    -0x110(%rbp,%rax,4),%eax
movslq -0x4(%rbp),%rcx
mov    -0x210(%rbp,%rcx,4),%ecx
movslq -0x4(%rbp),%rdx
or     -0x310(%rbp,%rdx,4),%ecx
cmp    %ecx,%eax
je     123c <main1+0x11c>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1241 <main1+0x121>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1202 <main1+0xe2>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    1295 <main1+0x175>
movslq -0x4(%rbp),%rax
movsbl -0x390(%rbp,%rax,1),%eax
ff
movslq -0x4(%rbp),%rcx
movsbl -0x3d0(%rbp,%rcx,1),%ecx
ff
or     %ecx,%eax
mov    %al,%cl
movslq -0x4(%rbp),%rax
mov    %cl,-0x350(%rbp,%rax,1)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1256 <main1+0x136>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    12ee <main1+0x1ce>
movslq -0x4(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
movslq -0x4(%rbp),%rcx
movsbl -0x390(%rbp,%rcx,1),%ecx
ff
movslq -0x4(%rbp),%rdx
movsbl -0x3d0(%rbp,%rdx,1),%edx
ff
or     %edx,%ecx
cmp    %ecx,%eax
je     12db <main1+0x1bb>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    12e0 <main1+0x1c0>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    129c <main1+0x17c>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    1336 <main1+0x216>
movslq -0x4(%rbp),%rax
movswl -0x4d0(%rbp,%rax,2),%eax
ff
movslq -0x4(%rbp),%rcx
movswl -0x550(%rbp,%rcx,2),%ecx
ff
or     %ecx,%eax
mov    %ax,%cx
movslq -0x4(%rbp),%rax
mov    %cx,-0x450(%rbp,%rax,2)
ff
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    12f5 <main1+0x1d5>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    138f <main1+0x26f>
movslq -0x4(%rbp),%rax
movswl -0x450(%rbp,%rax,2),%eax
ff
movslq -0x4(%rbp),%rcx
movswl -0x4d0(%rbp,%rcx,2),%ecx
ff
movslq -0x4(%rbp),%rdx
movswl -0x550(%rbp,%rdx,2),%edx
ff
or     %edx,%ecx
cmp    %ecx,%eax
je     137c <main1+0x25c>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1381 <main1+0x261>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    133d <main1+0x21d>
xor    %eax,%eax
add    $0x550,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main1>:
sub    $0x1c8,%rsp
movaps 0xee2(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xee3(%rip),%xmm1
movaps %xmm1,0xd0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm1,0xf0(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm1,0x110(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm1,0x130(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm1,0x150(%rsp)
movaps %xmm0,0x160(%rsp)
movaps %xmm1,0x170(%rsp)
movaps %xmm0,0x180(%rsp)
movaps %xmm1,0x190(%rsp)
movaps %xmm0,0x1a0(%rsp)
movaps %xmm1,0x1b0(%rsp)
xor    %eax,%eax
lea    0xe92(%rip),%rcx
xchg   %ax,%ax
mov    0xc0(%rsp,%rax,4),%edx
cmp    (%rcx,%rax,4),%edx
jne    129b <main1+0x18b>
mov    0xc4(%rsp,%rax,4),%edx
cmp    0x4(%rcx,%rax,4),%edx
jne    129b <main1+0x18b>
add    $0x2,%rax
cmp    $0x40,%rax
jne    11b0 <main1+0xa0>
movaps 0xe3e(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
xor    %eax,%eax
lea    0xf42(%rip),%rcx
xchg   %ax,%ax
movzbl (%rsp,%rax,1),%edx
cmp    (%rax,%rcx,1),%dl
jne    129b <main1+0x18b>
movzbl 0x1(%rsp,%rax,1),%edx
cmp    0x1(%rax,%rcx,1),%dl
jne    129b <main1+0x18b>
add    $0x2,%rax
cmp    $0x40,%rax
jne    1200 <main1+0xf0>
movaps 0xe03(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
xor    %eax,%eax
lea    0xf16(%rip),%rcx
nopw   0x0(%rax,%rax,1)
movzwl 0x40(%rsp,%rax,2),%edx
cmp    (%rcx,%rax,2),%dx
jne    129b <main1+0x18b>
movzwl 0x42(%rsp,%rax,2),%edx
cmp    0x2(%rcx,%rax,2),%dx
jne    129b <main1+0x18b>
add    $0x2,%rax
cmp    $0x40,%rax
jne    1270 <main1+0x160>
xor    %eax,%eax
add    $0x1c8,%rsp
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
@__const.main1.ib = [64 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0]
@__const.main1.ic = [64 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0]
@__const.main1.cb = [64 x i8] c"\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00"
@__const.main1.cc = [64 x i8] c"\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00"
@__const.main1.sb = [64 x i16] [i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0]
@__const.main1.sc = [64 x i16] [i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0]
define i32 @main1() {
%1 = alloca i32
%2 = alloca [64 x i32]
%3 = alloca [64 x i32]
%4 = alloca [64 x i32]
%5 = alloca [64 x i8]
%6 = alloca [64 x i8]
%7 = alloca [64 x i8]
%8 = alloca [64 x i16]
%9 = alloca [64 x i16]
%10 = alloca [64 x i16]
%11 = bitcast [64 x i32]* %3 to i8*
%12 = bitcast [64 x i32]* %4 to i8*
%13 = bitcast [64 x i8]* %6 to i8*
%14 = bitcast [64 x i8]* %7 to i8*
%15 = bitcast [64 x i16]* %9 to i8*
%16 = bitcast [64 x i16]* %10 to i8*
store i32 0, i32* %1
br label %17
17: ; preds = %33, %0
%18 = load i32, i32* %1
%19 = icmp slt i32 %18, 64
br i1 %19, label %20, label %36
20: ; preds = %17
%21 = load i32, i32* %1
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [64 x i32], [64 x i32]* %3, i64 0, i64 %22
%24 = load i32, i32* %23
%25 = load i32, i32* %1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [64 x i32], [64 x i32]* %4, i64 0, i64 %26
%28 = load i32, i32* %27
%29 = or i32 %24, %28
%30 = load i32, i32* %1
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 %31
store i32 %29, i32* %32
br label %33
33: ; preds = %20
%34 = load i32, i32* %1
%35 = add nsw i32 %34, 1
store i32 %35, i32* %1
br label %17
36: ; preds = %17
store i32 0, i32* %1
br label %37
37: ; preds = %58, %36
%38 = load i32, i32* %1
%39 = icmp slt i32 %38, 64
br i1 %39, label %40, label %61
40: ; preds = %37
%41 = load i32, i32* %1
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 %42
%44 = load i32, i32* %43
%45 = load i32, i32* %1
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [64 x i32], [64 x i32]* %3, i64 0, i64 %46
%48 = load i32, i32* %47
%49 = load i32, i32* %1
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [64 x i32], [64 x i32]* %4, i64 0, i64 %50
%52 = load i32, i32* %51
%53 = or i32 %48, %52
%54 = icmp ne i32 %44, %53
br i1 %54, label %55, label %57
55: ; preds = %40
%56 = call i32 (...) @abort()
unreachable
57: ; preds = %40
br label %58
58: ; preds = %57
%59 = load i32, i32* %1
%60 = add nsw i32 %59, 1
store i32 %60, i32* %1
br label %37
61: ; preds = %37
store i32 0, i32* %1
br label %62
62: ; preds = %81, %61
%63 = load i32, i32* %1
%64 = icmp slt i32 %63, 64
br i1 %64, label %65, label %84
65: ; preds = %62
%66 = load i32, i32* %1
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [64 x i8], [64 x i8]* %6, i64 0, i64 %67
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
%71 = load i32, i32* %1
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds [64 x i8], [64 x i8]* %7, i64 0, i64 %72
%74 = load i8, i8* %73
%75 = sext i8 %74 to i32
%76 = or i32 %70, %75
%77 = trunc i32 %76 to i8
%78 = load i32, i32* %1
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i64 0, i64 %79
store i8 %77, i8* %80
br label %81
81: ; preds = %65
%82 = load i32, i32* %1
%83 = add nsw i32 %82, 1
store i32 %83, i32* %1
br label %62
84: ; preds = %62
store i32 0, i32* %1
br label %85
85: ; preds = %109, %84
%86 = load i32, i32* %1
%87 = icmp slt i32 %86, 64
br i1 %87, label %88, label %112
88: ; preds = %85
%89 = load i32, i32* %1
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i64 0, i64 %90
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = load i32, i32* %1
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [64 x i8], [64 x i8]* %6, i64 0, i64 %95
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = load i32, i32* %1
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [64 x i8], [64 x i8]* %7, i64 0, i64 %100
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = or i32 %98, %103
%105 = icmp ne i32 %93, %104
br i1 %105, label %106, label %108
106: ; preds = %88
%107 = call i32 (...) @abort()
unreachable
108: ; preds = %88
br label %109
109: ; preds = %108
%110 = load i32, i32* %1
%111 = add nsw i32 %110, 1
store i32 %111, i32* %1
br label %85
112: ; preds = %85
store i32 0, i32* %1
br label %113
113: ; preds = %132, %112
%114 = load i32, i32* %1
%115 = icmp slt i32 %114, 64
br i1 %115, label %116, label %135
116: ; preds = %113
%117 = load i32, i32* %1
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds [64 x i16], [64 x i16]* %9, i64 0, i64 %118
%120 = load i16, i16* %119
%121 = sext i16 %120 to i32
%122 = load i32, i32* %1
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [64 x i16], [64 x i16]* %10, i64 0, i64 %123
%125 = load i16, i16* %124
%126 = sext i16 %125 to i32
%127 = or i32 %121, %126
%128 = trunc i32 %127 to i16
%129 = load i32, i32* %1
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [64 x i16], [64 x i16]* %8, i64 0, i64 %130
store i16 %128, i16* %131
br label %132
132: ; preds = %116
%133 = load i32, i32* %1
%134 = add nsw i32 %133, 1
store i32 %134, i32* %1
br label %113
135: ; preds = %113
store i32 0, i32* %1
br label %136
136: ; preds = %160, %135
%137 = load i32, i32* %1
%138 = icmp slt i32 %137, 64
br i1 %138, label %139, label %163
139: ; preds = %136
%140 = load i32, i32* %1
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [64 x i16], [64 x i16]* %8, i64 0, i64 %141
%143 = load i16, i16* %142
%144 = sext i16 %143 to i32
%145 = load i32, i32* %1
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [64 x i16], [64 x i16]* %9, i64 0, i64 %146
%148 = load i16, i16* %147
%149 = sext i16 %148 to i32
%150 = load i32, i32* %1
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds [64 x i16], [64 x i16]* %10, i64 0, i64 %151
%153 = load i16, i16* %152
%154 = sext i16 %153 to i32
%155 = or i32 %149, %154
%156 = icmp ne i32 %144, %155
br i1 %156, label %157, label %159
157: ; preds = %139
%158 = call i32 (...) @abort()
unreachable
159: ; preds = %139
br label %160
160: ; preds = %159
%161 = load i32, i32* %1
%162 = add nsw i32 %161, 1
store i32 %162, i32* %1
br label %136
163: ; preds = %136
ret i32 0
}

LLVM IR (-O2):
@__const.main1.ic = [64 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0]
@__const.main1.cc = [64 x i8] c"\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00\01\01\00\00\01\00\01\00"
@__const.main1.sc = [64 x i16] [i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0]
define i32 @main1() {
%1 = alloca [64 x i32]
%2 = alloca [64 x i8]
%3 = alloca [64 x i16]
%4 = bitcast [64 x i32]* %1 to i8*
%5 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%6 = bitcast [64 x i16]* %3 to i8*
%7 = bitcast [64 x i32]* %1 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %7
%8 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 4
%9 = bitcast i32* %8 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %9
%10 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 8
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %11
%12 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 12
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %13
%14 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 16
%15 = bitcast i32* %14 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %15
%16 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 20
%17 = bitcast i32* %16 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %17
%18 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 24
%19 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %19
%20 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 28
%21 = bitcast i32* %20 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %21
%22 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 32
%23 = bitcast i32* %22 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %23
%24 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 36
%25 = bitcast i32* %24 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %25
%26 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 40
%27 = bitcast i32* %26 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %27
%28 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 44
%29 = bitcast i32* %28 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %29
%30 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 48
%31 = bitcast i32* %30 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %31
%32 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 52
%33 = bitcast i32* %32 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %33
%34 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 56
%35 = bitcast i32* %34 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 0, i32 0>, <4 x i32>* %35
%36 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 60
%37 = bitcast i32* %36 to <4 x i32>*
store <4 x i32> <i32 1, i32 0, i32 1, i32 0>, <4 x i32>* %37
br label %59
38: ; preds = %59
%39 = or i64 %60, 1
%40 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = getelementptr inbounds [64 x i32], [64 x i32]* @__const.main1.ic, i64 0, i64 %39
%43 = load i32, i32* %42
%44 = getelementptr inbounds [64 x i32], [64 x i32]* @__const.main1.ic, i64 0, i64 %39
%45 = load i32, i32* %44
%46 = or i32 %45, %43
%47 = icmp eq i32 %41, %46
br i1 %47, label %48, label %69
48: ; preds = %38
%49 = add nuw nsw i64 %60, 2
%50 = icmp eq i64 %49, 64
br i1 %50, label %51, label %59
51: ; preds = %48
%52 = bitcast [64 x i8]* %2 to <16 x i8>*
store <16 x i8> <i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0, i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0>, <16 x i8>* %52
%53 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 16
%54 = bitcast i8* %53 to <16 x i8>*
store <16 x i8> <i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0, i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0>, <16 x i8>* %54
%55 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 32
%56 = bitcast i8* %55 to <16 x i8>*
store <16 x i8> <i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0, i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0>, <16 x i8>* %56
%57 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 48
%58 = bitcast i8* %57 to <16 x i8>*
store <16 x i8> <i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0, i8 1, i8 1, i8 0, i8 0, i8 1, i8 0, i8 1, i8 0>, <16 x i8>* %58
br label %100
59: ; preds = %48, %0
%60 = phi i64 [ 0, %0 ], [ %49, %48 ]
%61 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %60
%62 = load i32, i32* %61
%63 = getelementptr inbounds [64 x i32], [64 x i32]* @__const.main1.ic, i64 0, i64 %60
%64 = load i32, i32* %63
%65 = getelementptr inbounds [64 x i32], [64 x i32]* @__const.main1.ic, i64 0, i64 %60
%66 = load i32, i32* %65
%67 = or i32 %66, %64
%68 = icmp eq i32 %62, %67
br i1 %68, label %38, label %69
69: ; preds = %38, %59
%70 = tail call i32 (...) @abort()
unreachable
71: ; preds = %100
%72 = or i64 %101, 1
%73 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %72
%74 = load i8, i8* %73
%75 = getelementptr inbounds [64 x i8], [64 x i8]* @__const.main1.cc, i64 0, i64 %72
%76 = load i8, i8* %75
%77 = getelementptr inbounds [64 x i8], [64 x i8]* @__const.main1.cc, i64 0, i64 %72
%78 = load i8, i8* %77
%79 = or i8 %78, %76
%80 = icmp eq i8 %74, %79
br i1 %80, label %81, label %110
81: ; preds = %71
%82 = add nuw nsw i64 %101, 2
%83 = icmp eq i64 %82, 64
br i1 %83, label %84, label %100
84: ; preds = %81
%85 = bitcast [64 x i16]* %3 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %85
%86 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 8
%87 = bitcast i16* %86 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %87
%88 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 16
%89 = bitcast i16* %88 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %89
%90 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 24
%91 = bitcast i16* %90 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %91
%92 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 32
%93 = bitcast i16* %92 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %93
%94 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 40
%95 = bitcast i16* %94 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %95
%96 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 48
%97 = bitcast i16* %96 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %97
%98 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 56
%99 = bitcast i16* %98 to <8 x i16>*
store <8 x i16> <i16 1, i16 1, i16 0, i16 0, i16 1, i16 0, i16 1, i16 0>, <8 x i16>* %99
br label %125
100: ; preds = %81, %51
%101 = phi i64 [ 0, %51 ], [ %82, %81 ]
%102 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %101
%103 = load i8, i8* %102
%104 = getelementptr inbounds [64 x i8], [64 x i8]* @__const.main1.cc, i64 0, i64 %101
%105 = load i8, i8* %104
%106 = getelementptr inbounds [64 x i8], [64 x i8]* @__const.main1.cc, i64 0, i64 %101
%107 = load i8, i8* %106
%108 = or i8 %107, %105
%109 = icmp eq i8 %103, %108
br i1 %109, label %71, label %110
110: ; preds = %71, %100
%111 = tail call i32 (...) @abort()
unreachable
112: ; preds = %125
%113 = or i64 %126, 1
%114 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %113
%115 = load i16, i16* %114
%116 = getelementptr inbounds [64 x i16], [64 x i16]* @__const.main1.sc, i64 0, i64 %113
%117 = load i16, i16* %116
%118 = getelementptr inbounds [64 x i16], [64 x i16]* @__const.main1.sc, i64 0, i64 %113
%119 = load i16, i16* %118
%120 = or i16 %119, %117
%121 = icmp eq i16 %115, %120
br i1 %121, label %122, label %135
122: ; preds = %112
%123 = add nuw nsw i64 %126, 2
%124 = icmp eq i64 %123, 64
br i1 %124, label %137, label %125
125: ; preds = %122, %84
%126 = phi i64 [ 0, %84 ], [ %123, %122 ]
%127 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %126
%128 = load i16, i16* %127
%129 = getelementptr inbounds [64 x i16], [64 x i16]* @__const.main1.sc, i64 0, i64 %126
%130 = load i16, i16* %129
%131 = getelementptr inbounds [64 x i16], [64 x i16]* @__const.main1.sc, i64 0, i64 %126
%132 = load i16, i16* %131
%133 = or i16 %132, %130
%134 = icmp eq i16 %128, %133
br i1 %134, label %112, label %135
135: ; preds = %112, %125
%136 = tail call i32 (...) @abort()
unreachable
137: ; preds = %122
ret i32 0
}