int main() {
  unsigned char uca[3];
  unsigned char ucb[3];
  unsigned char ucc;
  signed char sca[3];
  signed char scb[3];
  signed char scc;
  unsigned short int usia[3];
  unsigned short int usib[3];
  unsigned short int usic;
  signed short int ssia[3];
  signed short int ssib[3];
  signed short int ssic;
  unsigned int uia[3];
  unsigned int uib[3];
  unsigned int uic;
  signed int sia[3];
  signed int sib[3];
  signed int sic;
  unsigned long long int ulia[3];
  unsigned long long int ulib[3];
  unsigned long long int ulic;
  signed long long int slia[3];
  signed long long int slib[3];
  signed long long int slic;
  unsigned char count;
  for (count = 1; count <= 3; count++) {
    uca[count - 1] = count;
    ucb[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    usia[count - 1] = count;
    usib[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    uia[count - 1] = count;
    uib[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    ulia[count - 1] = count;
    ulib[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    sca[count - 1] = count;
    scb[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    ssia[count - 1] = count;
    ssib[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    sia[count - 1] = count;
    sib[count - 1] = count;
  }
  for (count = 1; count <= 3; count++) {
    slia[count - 1] = count;
    slib[count - 1] = count;
  }
  ucc = 0;
  for (count = 0; count < 3; count++)
    ucc = ucc + (uca[count] * ucb[count]);
  ucc = 0;
  scc = 0;
  for (count = 0; count < 3; count++)
    scc = scc + (sca[count] * scb[count]);
  scc = 0;
  usic = 0;
  for (count = 0; count < 3; count++)
    usic = usic + (usia[count] * usib[count]);
  usic = 0;
  ssic = 0;
  for (count = 0; count < 3; count++)
    ssic = ssic + (ssia[count] * ssib[count]);
  ssic = 0;
  uic = 0;
  for (count = 0; count < 3; count++)
    uic = uic + (uia[count] * uib[count]);
  uic = 0;
  sic = 0;
  for (count = 0; count < 3; count++)
    sic = sic + (sia[count] * sib[count]);
  sic = 0;
  ulic = 0;
  for (count = 0; count < 3; count++)
    ulic = ulic + (ulia[count] * ulib[count]);
  ulic = 0;
  slic = 0;
  for (count = 0; count < 3; count++)
    slic = slic + (slia[count] * slib[count]);
  slic = 0;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movl   $0x0,-0x4(%rbp)
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     1165 <main+0x65>
mov    -0xe9(%rbp),%cl
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cl,-0x7(%rbp,%rax,1)
mov    -0xe9(%rbp),%cl
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cl,-0xa(%rbp,%rax,1)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1116 <main+0x16>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     11c5 <main+0xc5>
movzbl -0xe9(%rbp),%eax
mov    %ax,%cx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cx,-0x18(%rbp,%rax,2)
movzbl -0xe9(%rbp),%eax
mov    %ax,%cx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cx,-0x1e(%rbp,%rax,2)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    116c <main+0x6c>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     121d <main+0x11d>
movzbl -0xe9(%rbp),%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x3c(%rbp,%rax,4)
movzbl -0xe9(%rbp),%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x48(%rbp,%rax,4)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    11cc <main+0xcc>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     127e <main+0x17e>
movzbl -0xe9(%rbp),%eax
mov    %eax,%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %rcx,-0x80(%rbp,%rax,8)
movzbl -0xe9(%rbp),%eax
mov    %eax,%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %rcx,-0xa0(%rbp,%rax,8)
ff
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1224 <main+0x124>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     12d4 <main+0x1d4>
mov    -0xe9(%rbp),%cl
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cl,-0xe(%rbp,%rax,1)
mov    -0xe9(%rbp),%cl
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cl,-0x11(%rbp,%rax,1)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1285 <main+0x185>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     1334 <main+0x234>
movzbl -0xe9(%rbp),%eax
mov    %ax,%cx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cx,-0x26(%rbp,%rax,2)
movzbl -0xe9(%rbp),%eax
mov    %ax,%cx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %cx,-0x2c(%rbp,%rax,2)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    12db <main+0x1db>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     138c <main+0x28c>
movzbl -0xe9(%rbp),%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x58(%rbp,%rax,4)
movzbl -0xe9(%rbp),%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x64(%rbp,%rax,4)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    133b <main+0x23b>
movb   $0x1,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jg     13f0 <main+0x2f0>
movzbl -0xe9(%rbp),%eax
mov    %eax,%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %rcx,-0xc0(%rbp,%rax,8)
ff
movzbl -0xe9(%rbp),%eax
mov    %eax,%ecx
movzbl -0xe9(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %rcx,-0xe0(%rbp,%rax,8)
ff
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1393 <main+0x293>
movb   $0x0,-0xb(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    1442 <main+0x342>
movzbl -0xb(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
movzbl -0x7(%rbp,%rcx,1),%ecx
movzbl -0xe9(%rbp),%edx
movzbl -0xa(%rbp,%rdx,1),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %al,-0xb(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    13fb <main+0x2fb>
movb   $0x0,-0xb(%rbp)
movb   $0x0,-0x12(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    1498 <main+0x398>
movsbl -0x12(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
movsbl -0xe(%rbp,%rcx,1),%ecx
movzbl -0xe9(%rbp),%edx
movsbl -0x11(%rbp,%rdx,1),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %al,-0x12(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1451 <main+0x351>
movb   $0x0,-0x12(%rbp)
movw   $0x0,-0x20(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    14f1 <main+0x3f1>
movzwl -0x20(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
movzwl -0x18(%rbp,%rcx,2),%ecx
movzbl -0xe9(%rbp),%edx
movzwl -0x1e(%rbp,%rdx,2),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %ax,-0x20(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    14a9 <main+0x3a9>
movw   $0x0,-0x20(%rbp)
movw   $0x0,-0x2e(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    154c <main+0x44c>
movswl -0x2e(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
movswl -0x26(%rbp,%rcx,2),%ecx
movzbl -0xe9(%rbp),%edx
movswl -0x2c(%rbp,%rdx,2),%edx
imul   %edx,%ecx
add    %ecx,%eax
mov    %ax,-0x2e(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1504 <main+0x404>
movw   $0x0,-0x2e(%rbp)
movl   $0x0,-0x4c(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    15a2 <main+0x4a2>
mov    -0x4c(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
mov    -0x3c(%rbp,%rcx,4),%ecx
movzbl -0xe9(%rbp),%edx
imul   -0x48(%rbp,%rdx,4),%ecx
add    %ecx,%eax
mov    %eax,-0x4c(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1560 <main+0x460>
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x68(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    15f9 <main+0x4f9>
mov    -0x68(%rbp),%eax
movzbl -0xe9(%rbp),%ecx
mov    -0x58(%rbp,%rcx,4),%ecx
movzbl -0xe9(%rbp),%edx
imul   -0x64(%rbp,%rdx,4),%ecx
add    %ecx,%eax
mov    %eax,-0x68(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    15b7 <main+0x4b7>
movl   $0x0,-0x68(%rbp)
movq   $0x0,-0xa8(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    1662 <main+0x562>
mov    -0xa8(%rbp),%rax
movzbl -0xe9(%rbp),%ecx
mov    -0x80(%rbp,%rcx,8),%rcx
movzbl -0xe9(%rbp),%edx
imul   -0xa0(%rbp,%rdx,8),%rcx
ff ff
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    1612 <main+0x512>
movq   $0x0,-0xa8(%rbp)
movq   $0x0,-0xe8(%rbp)
movb   $0x0,-0xe9(%rbp)
movzbl -0xe9(%rbp),%eax
cmp    $0x3,%eax
jge    16d2 <main+0x5d2>
mov    -0xe8(%rbp),%rax
movzbl -0xe9(%rbp),%ecx
mov    -0xc0(%rbp,%rcx,8),%rcx
ff
movzbl -0xe9(%rbp),%edx
imul   -0xe0(%rbp,%rdx,8),%rcx
ff ff
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe9(%rbp),%al
add    $0x1,%al
mov    %al,-0xe9(%rbp)
jmp    167f <main+0x57f>
movq   $0x0,-0xe8(%rbp)
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @main() {
ret i32 0
}