int combine_halfedgeperm(hep_array0_in, hep_array1_in, eperm_array_out)
int hep_array0_in[8], hep_array1_in[8];
int eperm_array_out[8];
{
  int trf_arr0[5], trf_arr1[5], ii;
  for (ii = 0; ii < 8; ii++)
    if (hep_array0_in[ii] && hep_array1_in[ii])
      return 1;
  trf_arr0[1] = 0;
  trf_arr0[2] = 2;
  trf_arr0[3] = 4;
  trf_arr0[4] = 6;
  trf_arr1[1] = 1;
  trf_arr1[2] = 3;
  trf_arr1[3] = 5;
  trf_arr1[4] = 7;
  for (ii = 0; ii < 8; ii++) {
    if (hep_array0_in[ii])
      eperm_array_out[ii] = trf_arr0[hep_array0_in[ii]];
    else if (hep_array1_in[ii])
      eperm_array_out[ii] = trf_arr1[hep_array1_in[ii]];
    else
      exit_w_error_message("combine_halfedgeperm : invalid input");
  }
  return 0;
}


x86 assembly (clang, -O0):
<combine_halfedgeperm>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
movl   $0x0,-0x64(%rbp)
cmpl   $0x8,-0x64(%rbp)
jge    1178 <combine_halfedgeperm+0x68>
mov    -0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1165 <combine_halfedgeperm+0x55>
mov    -0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1165 <combine_halfedgeperm+0x55>
movl   $0x1,-0x4(%rbp)
jmp    1252 <combine_halfedgeperm+0x142>
jmp    116a <combine_halfedgeperm+0x5a>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    112b <combine_halfedgeperm+0x1b>
movl   $0x0,-0x3c(%rbp)
movl   $0x2,-0x38(%rbp)
movl   $0x4,-0x34(%rbp)
movl   $0x6,-0x30(%rbp)
movl   $0x1,-0x5c(%rbp)
movl   $0x3,-0x58(%rbp)
movl   $0x5,-0x54(%rbp)
movl   $0x7,-0x50(%rbp)
movl   $0x0,-0x64(%rbp)
cmpl   $0x8,-0x64(%rbp)
jge    124b <combine_halfedgeperm+0x13b>
mov    -0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     11f3 <combine_halfedgeperm+0xe3>
mov    -0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x40(%rbp,%rax,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1238 <combine_halfedgeperm+0x128>
mov    -0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1225 <combine_halfedgeperm+0x115>
mov    -0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x60(%rbp,%rax,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1233 <combine_halfedgeperm+0x123>
lea    0xdd4(%rip),%rdi
mov    $0x0,%al
call   1030 <exit_w_error_message@plt>
jmp    1238 <combine_halfedgeperm+0x128>
jmp    123d <combine_halfedgeperm+0x12d>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    11b7 <combine_halfedgeperm+0xa7>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<combine_halfedgeperm>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x38,%rsp
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%rbx
movslq (%rdi),%rax
test   %rax,%rax
je     113a <combine_halfedgeperm+0x2a>
mov    $0x1,%ebp
cmpl   $0x0,(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x4(%rbx)
je     1150 <combine_halfedgeperm+0x40>
mov    $0x1,%ebp
cmpl   $0x0,0x4(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x8(%rbx)
je     1166 <combine_halfedgeperm+0x56>
mov    $0x1,%ebp
cmpl   $0x0,0x8(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0xc(%rbx)
je     117c <combine_halfedgeperm+0x6c>
mov    $0x1,%ebp
cmpl   $0x0,0xc(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x10(%rbx)
je     1192 <combine_halfedgeperm+0x82>
mov    $0x1,%ebp
cmpl   $0x0,0x10(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x14(%rbx)
je     11a8 <combine_halfedgeperm+0x98>
mov    $0x1,%ebp
cmpl   $0x0,0x14(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x18(%rbx)
je     11be <combine_halfedgeperm+0xae>
mov    $0x1,%ebp
cmpl   $0x0,0x18(%r15)
jne    136a <combine_halfedgeperm+0x25a>
cmpl   $0x0,0x1c(%rbx)
je     11d4 <combine_halfedgeperm+0xc4>
mov    $0x1,%ebp
cmpl   $0x0,0x1c(%r15)
jne    136a <combine_halfedgeperm+0x25a>
movaps 0xe25(%rip),%xmm0
movups %xmm0,0x24(%rsp)
movaps 0xe29(%rip),%xmm0
movups %xmm0,0x4(%rsp)
test   %eax,%eax
je     11f9 <combine_halfedgeperm+0xe9>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,(%r14)
jmp    1217 <combine_halfedgeperm+0x107>
movslq (%r15),%rax
test   %rax,%rax
je     1209 <combine_halfedgeperm+0xf9>
mov    (%rsp,%rax,4),%eax
mov    %eax,(%r14)
jmp    1217 <combine_halfedgeperm+0x107>
lea    0xe10(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x4(%rbx),%rax
test   %rax,%rax
je     122a <combine_halfedgeperm+0x11a>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0x4(%r14)
jmp    124a <combine_halfedgeperm+0x13a>
movslq 0x4(%r15),%rax
test   %rax,%rax
je     123c <combine_halfedgeperm+0x12c>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x4(%r14)
jmp    124a <combine_halfedgeperm+0x13a>
lea    0xddd(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x8(%rbx),%rax
test   %rax,%rax
je     125d <combine_halfedgeperm+0x14d>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0x8(%r14)
jmp    127d <combine_halfedgeperm+0x16d>
movslq 0x8(%r15),%rax
test   %rax,%rax
je     126f <combine_halfedgeperm+0x15f>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x8(%r14)
jmp    127d <combine_halfedgeperm+0x16d>
lea    0xdaa(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0xc(%rbx),%rax
test   %rax,%rax
je     1290 <combine_halfedgeperm+0x180>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0xc(%r14)
jmp    12b0 <combine_halfedgeperm+0x1a0>
movslq 0xc(%r15),%rax
test   %rax,%rax
je     12a2 <combine_halfedgeperm+0x192>
mov    (%rsp,%rax,4),%eax
mov    %eax,0xc(%r14)
jmp    12b0 <combine_halfedgeperm+0x1a0>
lea    0xd77(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x10(%rbx),%rax
test   %rax,%rax
je     12c3 <combine_halfedgeperm+0x1b3>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0x10(%r14)
jmp    12e3 <combine_halfedgeperm+0x1d3>
movslq 0x10(%r15),%rax
test   %rax,%rax
je     12d5 <combine_halfedgeperm+0x1c5>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x10(%r14)
jmp    12e3 <combine_halfedgeperm+0x1d3>
lea    0xd44(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x14(%rbx),%rax
test   %rax,%rax
je     12f6 <combine_halfedgeperm+0x1e6>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0x14(%r14)
jmp    1316 <combine_halfedgeperm+0x206>
movslq 0x14(%r15),%rax
test   %rax,%rax
je     1308 <combine_halfedgeperm+0x1f8>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x14(%r14)
jmp    1316 <combine_halfedgeperm+0x206>
lea    0xd11(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x18(%rbx),%rax
test   %rax,%rax
je     1329 <combine_halfedgeperm+0x219>
mov    0x20(%rsp,%rax,4),%eax
mov    %eax,0x18(%r14)
jmp    1349 <combine_halfedgeperm+0x239>
movslq 0x18(%r15),%rax
test   %rax,%rax
je     133b <combine_halfedgeperm+0x22b>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x18(%r14)
jmp    1349 <combine_halfedgeperm+0x239>
lea    0xcde(%rip),%rdi
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
movslq 0x1c(%rbx),%rax
test   %rax,%rax
je     1358 <combine_halfedgeperm+0x248>
mov    0x20(%rsp,%rax,4),%eax
jmp    1364 <combine_halfedgeperm+0x254>
movslq 0x1c(%r15),%rax
test   %rax,%rax
je     1377 <combine_halfedgeperm+0x267>
mov    (%rsp,%rax,4),%eax
mov    %eax,0x1c(%r14)
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xca2(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1030 <exit_w_error_message@plt>
jmp    136a <combine_halfedgeperm+0x25a>

LLVM IR (-O0):
@.str = [37 x i8] c"combine_halfedgeperm : invalid input\00"
define i32 @combine_halfedgeperm(i32* %0, i32* %1, i32* %2) {
%4 = alloca i32
%5 = alloca i32*
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca [5 x i32]
%9 = alloca [5 x i32]
%10 = alloca i32
store i32* %0, i32** %5
store i32* %1, i32** %6
store i32* %2, i32** %7
store i32 0, i32* %10
br label %11
11: ; preds = %30, %3
%12 = load i32, i32* %10
%13 = icmp slt i32 %12, 8
br i1 %13, label %14, label %33
14: ; preds = %11
%15 = load i32*, i32** %5
%16 = load i32, i32* %10
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds i32, i32* %15, i64 %17
%19 = load i32, i32* %18
%20 = icmp ne i32 %19, 0
br i1 %20, label %21, label %29
21: ; preds = %14
%22 = load i32*, i32** %6
%23 = load i32, i32* %10
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds i32, i32* %22, i64 %24
%26 = load i32, i32* %25
%27 = icmp ne i32 %26, 0
br i1 %27, label %28, label %29
28: ; preds = %21
store i32 1, i32* %4
br label %93
29: ; preds = %21, %14
br label %30
30: ; preds = %29
%31 = load i32, i32* %10
%32 = add nsw i32 %31, 1
store i32 %32, i32* %10
br label %11
33: ; preds = %11
%34 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 1
store i32 0, i32* %34
%35 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 2
store i32 2, i32* %35
%36 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 3
store i32 4, i32* %36
%37 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 4
store i32 6, i32* %37
%38 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 1
store i32 1, i32* %38
%39 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 2
store i32 3, i32* %39
%40 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 3
store i32 5, i32* %40
%41 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 4
store i32 7, i32* %41
store i32 0, i32* %10
br label %42
42: ; preds = %89, %33
%43 = load i32, i32* %10
%44 = icmp slt i32 %43, 8
br i1 %44, label %45, label %92
45: ; preds = %42
%46 = load i32*, i32** %5
%47 = load i32, i32* %10
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i32, i32* %46, i64 %48
%50 = load i32, i32* %49
%51 = icmp ne i32 %50, 0
br i1 %51, label %52, label %65
52: ; preds = %45
%53 = load i32*, i32** %5
%54 = load i32, i32* %10
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i32, i32* %53, i64 %55
%57 = load i32, i32* %56
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 %58
%60 = load i32, i32* %59
%61 = load i32*, i32** %7
%62 = load i32, i32* %10
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i32, i32* %61, i64 %63
store i32 %60, i32* %64
br label %88
65: ; preds = %45
%66 = load i32*, i32** %6
%67 = load i32, i32* %10
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i32, i32* %66, i64 %68
%70 = load i32, i32* %69
%71 = icmp ne i32 %70, 0
br i1 %71, label %72, label %85
72: ; preds = %65
%73 = load i32*, i32** %6
%74 = load i32, i32* %10
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i32, i32* %73, i64 %75
%77 = load i32, i32* %76
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %78
%80 = load i32, i32* %79
%81 = load i32*, i32** %7
%82 = load i32, i32* %10
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds i32, i32* %81, i64 %83
store i32 %80, i32* %84
br label %87
85: ; preds = %65
%86 = call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %87
87: ; preds = %85, %72
br label %88
88: ; preds = %87, %52
br label %89
89: ; preds = %88
%90 = load i32, i32* %10
%91 = add nsw i32 %90, 1
store i32 %91, i32* %10
br label %42
92: ; preds = %42
store i32 0, i32* %4
br label %93
93: ; preds = %92, %28
%94 = load i32, i32* %4
ret i32 %94
}

LLVM IR (-O2):
@.str = [37 x i8] c"combine_halfedgeperm : invalid input\00"
define i32 @combine_halfedgeperm(i32* nocapture %0, i32* nocapture %1, i32* nocapture writeonly %2) {
%4 = alloca [5 x i32]
%5 = alloca [5 x i32]
%6 = bitcast [5 x i32]* %4 to i8*
%7 = bitcast [5 x i32]* %5 to i8*
%8 = load i32, i32* %0
%9 = icmp eq i32 %8, 0
br i1 %9, label %13, label %10
10: ; preds = %3
%11 = load i32, i32* %1
%12 = icmp eq i32 %11, 0
br i1 %12, label %13, label %220
13: ; preds = %3, %10
%14 = getelementptr inbounds i32, i32* %0, i64 1
%15 = load i32, i32* %14
%16 = icmp eq i32 %15, 0
br i1 %16, label %21, label %17
17: ; preds = %13
%18 = getelementptr inbounds i32, i32* %1, i64 1
%19 = load i32, i32* %18
%20 = icmp eq i32 %19, 0
br i1 %20, label %21, label %220
21: ; preds = %17, %13
%22 = getelementptr inbounds i32, i32* %0, i64 2
%23 = load i32, i32* %22
%24 = icmp eq i32 %23, 0
br i1 %24, label %29, label %25
25: ; preds = %21
%26 = getelementptr inbounds i32, i32* %1, i64 2
%27 = load i32, i32* %26
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %220
29: ; preds = %25, %21
%30 = getelementptr inbounds i32, i32* %0, i64 3
%31 = load i32, i32* %30
%32 = icmp eq i32 %31, 0
br i1 %32, label %37, label %33
33: ; preds = %29
%34 = getelementptr inbounds i32, i32* %1, i64 3
%35 = load i32, i32* %34
%36 = icmp eq i32 %35, 0
br i1 %36, label %37, label %220
37: ; preds = %33, %29
%38 = getelementptr inbounds i32, i32* %0, i64 4
%39 = load i32, i32* %38
%40 = icmp eq i32 %39, 0
br i1 %40, label %45, label %41
41: ; preds = %37
%42 = getelementptr inbounds i32, i32* %1, i64 4
%43 = load i32, i32* %42
%44 = icmp eq i32 %43, 0
br i1 %44, label %45, label %220
45: ; preds = %41, %37
%46 = getelementptr inbounds i32, i32* %0, i64 5
%47 = load i32, i32* %46
%48 = icmp eq i32 %47, 0
br i1 %48, label %53, label %49
49: ; preds = %45
%50 = getelementptr inbounds i32, i32* %1, i64 5
%51 = load i32, i32* %50
%52 = icmp eq i32 %51, 0
br i1 %52, label %53, label %220
53: ; preds = %49, %45
%54 = getelementptr inbounds i32, i32* %0, i64 6
%55 = load i32, i32* %54
%56 = icmp eq i32 %55, 0
br i1 %56, label %61, label %57
57: ; preds = %53
%58 = getelementptr inbounds i32, i32* %1, i64 6
%59 = load i32, i32* %58
%60 = icmp eq i32 %59, 0
br i1 %60, label %61, label %220
61: ; preds = %57, %53
%62 = getelementptr inbounds i32, i32* %0, i64 7
%63 = load i32, i32* %62
%64 = icmp eq i32 %63, 0
br i1 %64, label %69, label %65
65: ; preds = %61
%66 = getelementptr inbounds i32, i32* %1, i64 7
%67 = load i32, i32* %66
%68 = icmp eq i32 %67, 0
br i1 %68, label %69, label %220
69: ; preds = %65, %61
%70 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 1
%71 = bitcast i32* %70 to <4 x i32>*
store <4 x i32> <i32 0, i32 2, i32 4, i32 6>, <4 x i32>* %71
%72 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 1
%73 = bitcast i32* %72 to <4 x i32>*
store <4 x i32> <i32 1, i32 3, i32 5, i32 7>, <4 x i32>* %73
br i1 %9, label %78, label %74
74: ; preds = %69
%75 = sext i32 %8 to i64
%76 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %75
%77 = load i32, i32* %76
store i32 %77, i32* %2
br label %87
78: ; preds = %69
%79 = load i32, i32* %1
%80 = icmp eq i32 %79, 0
br i1 %80, label %85, label %81
81: ; preds = %78
%82 = sext i32 %79 to i64
%83 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %82
%84 = load i32, i32* %83
store i32 %84, i32* %2
br label %87
85: ; preds = %78
%86 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %87
87: ; preds = %74, %85, %81
%88 = load i32, i32* %14
%89 = icmp eq i32 %88, 0
br i1 %89, label %95, label %90
90: ; preds = %87
%91 = sext i32 %88 to i64
%92 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %91
%93 = load i32, i32* %92
%94 = getelementptr inbounds i32, i32* %2, i64 1
store i32 %93, i32* %94
br label %106
95: ; preds = %87
%96 = getelementptr inbounds i32, i32* %1, i64 1
%97 = load i32, i32* %96
%98 = icmp eq i32 %97, 0
br i1 %98, label %104, label %99
99: ; preds = %95
%100 = sext i32 %97 to i64
%101 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %100
%102 = load i32, i32* %101
%103 = getelementptr inbounds i32, i32* %2, i64 1
store i32 %102, i32* %103
br label %106
104: ; preds = %95
%105 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %106
106: ; preds = %104, %99, %90
%107 = load i32, i32* %22
%108 = icmp eq i32 %107, 0
br i1 %108, label %114, label %109
109: ; preds = %106
%110 = sext i32 %107 to i64
%111 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %110
%112 = load i32, i32* %111
%113 = getelementptr inbounds i32, i32* %2, i64 2
store i32 %112, i32* %113
br label %125
114: ; preds = %106
%115 = getelementptr inbounds i32, i32* %1, i64 2
%116 = load i32, i32* %115
%117 = icmp eq i32 %116, 0
br i1 %117, label %123, label %118
118: ; preds = %114
%119 = sext i32 %116 to i64
%120 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %119
%121 = load i32, i32* %120
%122 = getelementptr inbounds i32, i32* %2, i64 2
store i32 %121, i32* %122
br label %125
123: ; preds = %114
%124 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %125
125: ; preds = %123, %118, %109
%126 = load i32, i32* %30
%127 = icmp eq i32 %126, 0
br i1 %127, label %133, label %128
128: ; preds = %125
%129 = sext i32 %126 to i64
%130 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %129
%131 = load i32, i32* %130
%132 = getelementptr inbounds i32, i32* %2, i64 3
store i32 %131, i32* %132
br label %144
133: ; preds = %125
%134 = getelementptr inbounds i32, i32* %1, i64 3
%135 = load i32, i32* %134
%136 = icmp eq i32 %135, 0
br i1 %136, label %142, label %137
137: ; preds = %133
%138 = sext i32 %135 to i64
%139 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %138
%140 = load i32, i32* %139
%141 = getelementptr inbounds i32, i32* %2, i64 3
store i32 %140, i32* %141
br label %144
142: ; preds = %133
%143 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %144
144: ; preds = %142, %137, %128
%145 = load i32, i32* %38
%146 = icmp eq i32 %145, 0
br i1 %146, label %152, label %147
147: ; preds = %144
%148 = sext i32 %145 to i64
%149 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %148
%150 = load i32, i32* %149
%151 = getelementptr inbounds i32, i32* %2, i64 4
store i32 %150, i32* %151
br label %163
152: ; preds = %144
%153 = getelementptr inbounds i32, i32* %1, i64 4
%154 = load i32, i32* %153
%155 = icmp eq i32 %154, 0
br i1 %155, label %161, label %156
156: ; preds = %152
%157 = sext i32 %154 to i64
%158 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %157
%159 = load i32, i32* %158
%160 = getelementptr inbounds i32, i32* %2, i64 4
store i32 %159, i32* %160
br label %163
161: ; preds = %152
%162 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %163
163: ; preds = %161, %156, %147
%164 = load i32, i32* %46
%165 = icmp eq i32 %164, 0
br i1 %165, label %171, label %166
166: ; preds = %163
%167 = sext i32 %164 to i64
%168 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %167
%169 = load i32, i32* %168
%170 = getelementptr inbounds i32, i32* %2, i64 5
store i32 %169, i32* %170
br label %182
171: ; preds = %163
%172 = getelementptr inbounds i32, i32* %1, i64 5
%173 = load i32, i32* %172
%174 = icmp eq i32 %173, 0
br i1 %174, label %180, label %175
175: ; preds = %171
%176 = sext i32 %173 to i64
%177 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %176
%178 = load i32, i32* %177
%179 = getelementptr inbounds i32, i32* %2, i64 5
store i32 %178, i32* %179
br label %182
180: ; preds = %171
%181 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %182
182: ; preds = %180, %175, %166
%183 = load i32, i32* %54
%184 = icmp eq i32 %183, 0
br i1 %184, label %190, label %185
185: ; preds = %182
%186 = sext i32 %183 to i64
%187 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %186
%188 = load i32, i32* %187
%189 = getelementptr inbounds i32, i32* %2, i64 6
store i32 %188, i32* %189
br label %201
190: ; preds = %182
%191 = getelementptr inbounds i32, i32* %1, i64 6
%192 = load i32, i32* %191
%193 = icmp eq i32 %192, 0
br i1 %193, label %199, label %194
194: ; preds = %190
%195 = sext i32 %192 to i64
%196 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %195
%197 = load i32, i32* %196
%198 = getelementptr inbounds i32, i32* %2, i64 6
store i32 %197, i32* %198
br label %201
199: ; preds = %190
%200 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %201
201: ; preds = %199, %194, %185
%202 = load i32, i32* %62
%203 = icmp eq i32 %202, 0
br i1 %203, label %209, label %204
204: ; preds = %201
%205 = sext i32 %202 to i64
%206 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %205
%207 = load i32, i32* %206
%208 = getelementptr inbounds i32, i32* %2, i64 7
store i32 %207, i32* %208
br label %220
209: ; preds = %201
%210 = getelementptr inbounds i32, i32* %1, i64 7
%211 = load i32, i32* %210
%212 = icmp eq i32 %211, 0
br i1 %212, label %218, label %213
213: ; preds = %209
%214 = sext i32 %211 to i64
%215 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %214
%216 = load i32, i32* %215
%217 = getelementptr inbounds i32, i32* %2, i64 7
store i32 %216, i32* %217
br label %220
218: ; preds = %209
%219 = tail call i32 (i8*, ...) bitcast (i32 (...)* @exit_w_error_message to i32 (i8*, ...)*)(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %220
220: ; preds = %10, %17, %25, %33, %41, %49, %57, %65, %204, %213, %218
%221 = phi i32 [ 0, %218 ], [ 0, %213 ], [ 0, %204 ], [ 1, %65 ], [ 1, %57 ], [ 1, %49 ], [ 1, %41 ], [ 1, %33 ], [ 1, %25 ], [ 1, %17 ], [ 1, %10 ]
ret i32 %221
}