#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];
  }
  for (i = 0; i < 64; i++) {
    if (ia[i] != !ib[i])
      abort();
  }
  for (i = 0; i < 64; i++) {
    ca[i] = !cb[i];
  }
  for (i = 0; i < 64; i++) {
    if (ca[i] != !cb[i])
      abort();
  }
  for (i = 0; i < 64; i++) {
    sa[i] = !sb[i];
  }
  for (i = 0; i < 64; i++) {
    if (sa[i] != !sb[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
cmpl   $0x0,-0x210(%rbp,%rax,4)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%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    1251 <main1+0x131>
movslq -0x4(%rbp),%rax
mov    -0x110(%rbp,%rax,4),%eax
movslq -0x4(%rbp),%rcx
cmpl   $0x0,-0x210(%rbp,%rcx,4)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
cmp    %ecx,%eax
je     123e <main1+0x11e>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1243 <main1+0x123>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1202 <main1+0xe2>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    1293 <main1+0x173>
movslq -0x4(%rbp),%rax
cmpb   $0x0,-0x390(%rbp,%rax,1)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%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    1258 <main1+0x138>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    12ea <main1+0x1ca>
movslq -0x4(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
movslq -0x4(%rbp),%rcx
cmpb   $0x0,-0x390(%rbp,%rcx,1)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
cmp    %ecx,%eax
je     12d7 <main1+0x1b7>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    12dc <main1+0x1bc>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    129a <main1+0x17a>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    132f <main1+0x20f>
movslq -0x4(%rbp),%rax
cmpw   $0x0,-0x4d0(%rbp,%rax,2)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%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    12f1 <main1+0x1d1>
movl   $0x0,-0x4(%rbp)
cmpl   $0x40,-0x4(%rbp)
jge    1387 <main1+0x267>
movslq -0x4(%rbp),%rax
movswl -0x450(%rbp,%rax,2),%eax
ff
movslq -0x4(%rbp),%rcx
cmpw   $0x0,-0x4d0(%rbp,%rcx,2)
setne  %cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
cmp    %ecx,%eax
je     1374 <main1+0x254>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1379 <main1+0x259>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1336 <main1+0x216>
xor    %eax,%eax
add    $0x550,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main1>:
sub    $0x1c8,%rsp
movabs $0xacacacacacacacac,%rdx
ac ac ac
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xed9(%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
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rdx,%rsi
mov    %eax,%ecx
shr    %cl,%rsi
and    $0x1,%esi
cmp    %esi,0xc0(%rsp,%rax,4)
jne    136d <main1+0x25d>
lea    0x1(%rax),%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
and    $0x1,%esi
cmp    %esi,0xc4(%rsp,%rax,4)
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
and    $0x1,%esi
cmp    %esi,0xc8(%rsp,%rax,4)
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
and    $0x1,%esi
cmp    %esi,0xcc(%rsp,%rax,4)
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rcx,%rax
cmp    $0x40,%rcx
jne    11c0 <main1+0xb0>
movaps 0xde6(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
xor    %eax,%eax
nop
mov    %rdx,%rsi
mov    %eax,%ecx
shr    %cl,%rsi
movsbl (%rsp,%rax,1),%ecx
and    $0x1,%esi
cmp    %ecx,%esi
jne    136d <main1+0x25d>
lea    0x1(%rax),%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movsbl 0x1(%rsp,%rax,1),%edi
and    $0x1,%esi
cmp    %edi,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movsbl 0x2(%rsp,%rax,1),%edi
and    $0x1,%esi
cmp    %edi,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movsbl 0x3(%rsp,%rax,1),%eax
and    $0x1,%esi
cmp    %eax,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rcx,%rax
cmp    $0x40,%rcx
jne    1250 <main1+0x140>
movaps 0xd67(%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
nop
mov    %rdx,%rsi
mov    %eax,%ecx
shr    %cl,%rsi
movswl 0x40(%rsp,%rax,2),%ecx
and    $0x1,%esi
cmp    %ecx,%esi
jne    136d <main1+0x25d>
lea    0x1(%rax),%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movswl 0x42(%rsp,%rax,2),%edi
and    $0x1,%esi
cmp    %edi,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movswl 0x44(%rsp,%rax,2),%edi
and    $0x1,%esi
cmp    %edi,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rdx,%rsi
shr    %cl,%rsi
movswl 0x46(%rsp,%rax,2),%eax
and    $0x1,%esi
cmp    %eax,%esi
jne    136d <main1+0x25d>
add    $0x1,%rcx
mov    %rcx,%rax
cmp    $0x40,%rcx
jne    1300 <main1+0x1f0>
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 = %31, %0
%18 = load i32, i32* %1
%19 = icmp slt i32 %18, 64
br i1 %19, label %20, label %34
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 = icmp ne i32 %24, 0
%26 = xor i1 %25, true
%27 = zext i1 %26 to i32
%28 = load i32, i32* %1
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 %29
store i32 %27, i32* %30
br label %31
31: ; preds = %20
%32 = load i32, i32* %1
%33 = add nsw i32 %32, 1
store i32 %33, i32* %1
br label %17
34: ; preds = %17
store i32 0, i32* %1
br label %35
35: ; preds = %54, %34
%36 = load i32, i32* %1
%37 = icmp slt i32 %36, 64
br i1 %37, label %38, label %57
38: ; preds = %35
%39 = load i32, i32* %1
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 %40
%42 = load i32, i32* %41
%43 = load i32, i32* %1
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [64 x i32], [64 x i32]* %3, i64 0, i64 %44
%46 = load i32, i32* %45
%47 = icmp ne i32 %46, 0
%48 = xor i1 %47, true
%49 = zext i1 %48 to i32
%50 = icmp ne i32 %42, %49
br i1 %50, label %51, label %53
51: ; preds = %38
%52 = call i32 (...) @abort()
unreachable
53: ; preds = %38
br label %54
54: ; preds = %53
%55 = load i32, i32* %1
%56 = add nsw i32 %55, 1
store i32 %56, i32* %1
br label %35
57: ; preds = %35
store i32 0, i32* %1
br label %58
58: ; preds = %73, %57
%59 = load i32, i32* %1
%60 = icmp slt i32 %59, 64
br i1 %60, label %61, label %76
61: ; preds = %58
%62 = load i32, i32* %1
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [64 x i8], [64 x i8]* %6, i64 0, i64 %63
%65 = load i8, i8* %64
%66 = icmp ne i8 %65, 0
%67 = xor i1 %66, true
%68 = zext i1 %67 to i32
%69 = trunc i32 %68 to i8
%70 = load i32, i32* %1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i64 0, i64 %71
store i8 %69, i8* %72
br label %73
73: ; preds = %61
%74 = load i32, i32* %1
%75 = add nsw i32 %74, 1
store i32 %75, i32* %1
br label %58
76: ; preds = %58
store i32 0, i32* %1
br label %77
77: ; preds = %97, %76
%78 = load i32, i32* %1
%79 = icmp slt i32 %78, 64
br i1 %79, label %80, label %100
80: ; preds = %77
%81 = load i32, i32* %1
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i64 0, i64 %82
%84 = load i8, i8* %83
%85 = sext i8 %84 to i32
%86 = load i32, i32* %1
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds [64 x i8], [64 x i8]* %6, i64 0, i64 %87
%89 = load i8, i8* %88
%90 = icmp ne i8 %89, 0
%91 = xor i1 %90, true
%92 = zext i1 %91 to i32
%93 = icmp ne i32 %85, %92
br i1 %93, label %94, label %96
94: ; preds = %80
%95 = call i32 (...) @abort()
unreachable
96: ; preds = %80
br label %97
97: ; preds = %96
%98 = load i32, i32* %1
%99 = add nsw i32 %98, 1
store i32 %99, i32* %1
br label %77
100: ; preds = %77
store i32 0, i32* %1
br label %101
101: ; preds = %116, %100
%102 = load i32, i32* %1
%103 = icmp slt i32 %102, 64
br i1 %103, label %104, label %119
104: ; preds = %101
%105 = load i32, i32* %1
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds [64 x i16], [64 x i16]* %9, i64 0, i64 %106
%108 = load i16, i16* %107
%109 = icmp ne i16 %108, 0
%110 = xor i1 %109, true
%111 = zext i1 %110 to i32
%112 = trunc i32 %111 to i16
%113 = load i32, i32* %1
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds [64 x i16], [64 x i16]* %8, i64 0, i64 %114
store i16 %112, i16* %115
br label %116
116: ; preds = %104
%117 = load i32, i32* %1
%118 = add nsw i32 %117, 1
store i32 %118, i32* %1
br label %101
119: ; preds = %101
store i32 0, i32* %1
br label %120
120: ; preds = %140, %119
%121 = load i32, i32* %1
%122 = icmp slt i32 %121, 64
br i1 %122, label %123, label %143
123: ; preds = %120
%124 = load i32, i32* %1
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds [64 x i16], [64 x i16]* %8, i64 0, i64 %125
%127 = load i16, i16* %126
%128 = sext i16 %127 to i32
%129 = load i32, i32* %1
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [64 x i16], [64 x i16]* %9, i64 0, i64 %130
%132 = load i16, i16* %131
%133 = icmp ne i16 %132, 0
%134 = xor i1 %133, true
%135 = zext i1 %134 to i32
%136 = icmp ne i32 %128, %135
br i1 %136, label %137, label %139
137: ; preds = %123
%138 = call i32 (...) @abort()
unreachable
139: ; preds = %123
br label %140
140: ; preds = %139
%141 = load i32, i32* %1
%142 = add nsw i32 %141, 1
store i32 %142, i32* %1
br label %120
143: ; preds = %120
ret i32 0
}

LLVM IR (-O2):
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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <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 0, i32 0, i32 1, i32 1>, <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 0, i32 1, i32 0, i32 1>, <4 x i32>* %37
br label %73
38: ; preds = %73
%39 = or i64 %74, 1
%40 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = lshr i64 -6004234345560363860, %39
%43 = trunc i64 %42 to i32
%44 = and i32 %43, 1
%45 = icmp eq i32 %41, %44
br i1 %45, label %46, label %81
46: ; preds = %38
%47 = or i64 %74, 2
%48 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %47
%49 = load i32, i32* %48
%50 = lshr i64 -6004234345560363860, %47
%51 = trunc i64 %50 to i32
%52 = and i32 %51, 1
%53 = icmp eq i32 %49, %52
br i1 %53, label %54, label %81
54: ; preds = %46
%55 = or i64 %74, 3
%56 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %55
%57 = load i32, i32* %56
%58 = lshr i64 -6004234345560363860, %55
%59 = trunc i64 %58 to i32
%60 = and i32 %59, 1
%61 = icmp eq i32 %57, %60
br i1 %61, label %62, label %81
62: ; preds = %54
%63 = add nuw nsw i64 %74, 4
%64 = icmp eq i64 %63, 64
br i1 %64, label %65, label %73
65: ; preds = %62
%66 = bitcast [64 x i8]* %2 to <16 x i8>*
store <16 x i8> <i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1, i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1>, <16 x i8>* %66
%67 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 16
%68 = bitcast i8* %67 to <16 x i8>*
store <16 x i8> <i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1, i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1>, <16 x i8>* %68
%69 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 32
%70 = bitcast i8* %69 to <16 x i8>*
store <16 x i8> <i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1, i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1>, <16 x i8>* %70
%71 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 48
%72 = bitcast i8* %71 to <16 x i8>*
store <16 x i8> <i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1, i8 0, i8 0, i8 1, i8 1, i8 0, i8 1, i8 0, i8 1>, <16 x i8>* %72
br label %129
73: ; preds = %62, %0
%74 = phi i64 [ 0, %0 ], [ %63, %62 ]
%75 = getelementptr inbounds [64 x i32], [64 x i32]* %1, i64 0, i64 %74
%76 = load i32, i32* %75
%77 = lshr i64 -6004234345560363860, %74
%78 = trunc i64 %77 to i32
%79 = and i32 %78, 1
%80 = icmp eq i32 %76, %79
br i1 %80, label %38, label %81
81: ; preds = %54, %46, %38, %73
%82 = tail call i32 (...) @abort()
unreachable
83: ; preds = %129
%84 = or i64 %130, 1
%85 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %84
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = lshr i64 -6004234345560363860, %84
%89 = trunc i64 %88 to i32
%90 = and i32 %89, 1
%91 = icmp eq i32 %90, %87
br i1 %91, label %92, label %138
92: ; preds = %83
%93 = or i64 %130, 2
%94 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %93
%95 = load i8, i8* %94
%96 = sext i8 %95 to i32
%97 = lshr i64 -6004234345560363860, %93
%98 = trunc i64 %97 to i32
%99 = and i32 %98, 1
%100 = icmp eq i32 %99, %96
br i1 %100, label %101, label %138
101: ; preds = %92
%102 = or i64 %130, 3
%103 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %102
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = lshr i64 -6004234345560363860, %102
%107 = trunc i64 %106 to i32
%108 = and i32 %107, 1
%109 = icmp eq i32 %108, %105
br i1 %109, label %110, label %138
110: ; preds = %101
%111 = add nuw nsw i64 %130, 4
%112 = icmp eq i64 %111, 64
br i1 %112, label %113, label %129
113: ; preds = %110
%114 = bitcast [64 x i16]* %3 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %114
%115 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 8
%116 = bitcast i16* %115 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %116
%117 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 16
%118 = bitcast i16* %117 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %118
%119 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 24
%120 = bitcast i16* %119 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %120
%121 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 32
%122 = bitcast i16* %121 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %122
%123 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 40
%124 = bitcast i16* %123 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %124
%125 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 48
%126 = bitcast i16* %125 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %126
%127 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 56
%128 = bitcast i16* %127 to <8 x i16>*
store <8 x i16> <i16 0, i16 0, i16 1, i16 1, i16 0, i16 1, i16 0, i16 1>, <8 x i16>* %128
br label %170
129: ; preds = %110, %65
%130 = phi i64 [ 0, %65 ], [ %111, %110 ]
%131 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 %130
%132 = load i8, i8* %131
%133 = sext i8 %132 to i32
%134 = lshr i64 -6004234345560363860, %130
%135 = trunc i64 %134 to i32
%136 = and i32 %135, 1
%137 = icmp eq i32 %136, %133
br i1 %137, label %83, label %138
138: ; preds = %101, %92, %83, %129
%139 = tail call i32 (...) @abort()
unreachable
140: ; preds = %170
%141 = or i64 %171, 1
%142 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %141
%143 = load i16, i16* %142
%144 = sext i16 %143 to i32
%145 = lshr i64 -6004234345560363860, %141
%146 = trunc i64 %145 to i32
%147 = and i32 %146, 1
%148 = icmp eq i32 %147, %144
br i1 %148, label %149, label %179
149: ; preds = %140
%150 = or i64 %171, 2
%151 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %150
%152 = load i16, i16* %151
%153 = sext i16 %152 to i32
%154 = lshr i64 -6004234345560363860, %150
%155 = trunc i64 %154 to i32
%156 = and i32 %155, 1
%157 = icmp eq i32 %156, %153
br i1 %157, label %158, label %179
158: ; preds = %149
%159 = or i64 %171, 3
%160 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %159
%161 = load i16, i16* %160
%162 = sext i16 %161 to i32
%163 = lshr i64 -6004234345560363860, %159
%164 = trunc i64 %163 to i32
%165 = and i32 %164, 1
%166 = icmp eq i32 %165, %162
br i1 %166, label %167, label %179
167: ; preds = %158
%168 = add nuw nsw i64 %171, 4
%169 = icmp eq i64 %168, 64
br i1 %169, label %181, label %170
170: ; preds = %167, %113
%171 = phi i64 [ 0, %113 ], [ %168, %167 ]
%172 = getelementptr inbounds [64 x i16], [64 x i16]* %3, i64 0, i64 %171
%173 = load i16, i16* %172
%174 = sext i16 %173 to i32
%175 = lshr i64 -6004234345560363860, %171
%176 = trunc i64 %175 to i32
%177 = and i32 %176, 1
%178 = icmp eq i32 %177, %174
br i1 %178, label %140, label %179
179: ; preds = %158, %149, %140, %170
%180 = tail call i32 (...) @abort()
unreachable
181: ; preds = %167
ret i32 0
}