void big_recl(int *cond_code, register int ny, int dx, int dy, int *ix,
              int *iy) {
  int ok_x, ok_y, j;
  register int i, x, y;
  register int *cond;
  ok_x = ok_y = 1;
  x = y = 2;
  while (ok_x || ok_y) {
    if (3 * x <= y || 3 * y <= x)
      break;
    if (ok_y) {
      ok_y = 0;
      if (y == dy)
        continue;
      cond = &cond_code[0 * ny + y];
      for (i = 0; i < x; i++) {
        if (*cond != 0)
          break;
        cond += ny;
      }
      if (i == x) {
        y++;
        ok_y = 1;
      }
    }
    if (ok_x) {
      if (y == 2)
        break;
      ok_x = 0;
      if (x == dx)
        continue;
      cond = &cond_code[x * ny + 0];
      for (i = 0; i < y; i++) {
        if (*cond++ != 0)
          break;
      }
      if (i == y) {
        x++;
        ok_x = 1;
      }
    }
  }
  *ix = --x;
  *iy = --y;
  for (i = 1; i < x; i++) {
    cond = &cond_code[i * ny + 1];
    for (j = 1; j < y; j++) {
      *cond++ = 64;
    }
  }
}


x86 assembly (clang, -O0):
<big_recl>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x1,-0x30(%rbp)
movl   $0x1,-0x2c(%rbp)
movl   $0x2,-0x40(%rbp)
movl   $0x2,-0x3c(%rbp)
mov    $0x1,%al
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x49(%rbp)
jne    114e <big_recl+0x4e>
cmpl   $0x0,-0x30(%rbp)
setne  %al
mov    %al,-0x49(%rbp)
mov    -0x49(%rbp),%al
test   $0x1,%al
jne    115e <big_recl+0x5e>
jmp    12d7 <big_recl+0x1d7>
imul   $0x3,-0x3c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jle    1178 <big_recl+0x78>
imul   $0x3,-0x40(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jg     117d <big_recl+0x7d>
jmp    12d7 <big_recl+0x1d7>
cmpl   $0x0,-0x30(%rbp)
je     1221 <big_recl+0x121>
movl   $0x0,-0x30(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x14(%rbp),%eax
jne    119f <big_recl+0x9f>
jmp    1135 <big_recl+0x35>
mov    -0x8(%rbp),%rax
imul   $0x0,-0xc(%rbp),%ecx
add    -0x40(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1200 <big_recl+0x100>
mov    -0x48(%rbp),%rax
cmpl   $0x0,(%rax)
je     11dd <big_recl+0xdd>
jmp    1200 <big_recl+0x100>
mov    -0xc(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11bf <big_recl+0xbf>
mov    -0x38(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    121c <big_recl+0x11c>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
movl   $0x1,-0x30(%rbp)
jmp    1221 <big_recl+0x121>
cmpl   $0x0,-0x2c(%rbp)
je     12d2 <big_recl+0x1d2>
cmpl   $0x2,-0x40(%rbp)
jne    123a <big_recl+0x13a>
jmp    12d7 <big_recl+0x1d7>
movl   $0x0,-0x2c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    1252 <big_recl+0x152>
jmp    1135 <big_recl+0x35>
mov    -0x8(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    12b1 <big_recl+0x1b1>
mov    -0x48(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x48(%rbp)
cmpl   $0x0,(%rax)
je     129e <big_recl+0x19e>
jmp    12b1 <big_recl+0x1b1>
jmp    12a3 <big_recl+0x1a3>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1275 <big_recl+0x175>
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jne    12cd <big_recl+0x1cd>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
movl   $0x1,-0x2c(%rbp)
jmp    12d2 <big_recl+0x1d2>
jmp    1135 <big_recl+0x35>
mov    -0x3c(%rbp),%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x3c(%rbp)
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x40(%rbp),%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    136d <big_recl+0x26d>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    135a <big_recl+0x25a>
mov    -0x48(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x48(%rbp)
movl   $0x40,(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    132b <big_recl+0x22b>
jmp    135f <big_recl+0x25f>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    12fc <big_recl+0x1fc>
pop    %rbp
ret

x86 assembly (clang, -O2):
<big_recl>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rdi,-0x38(%rsp)
movslq %esi,%rax
mov    %rax,-0x28(%rsp)
lea    0x0(,%rax,4),%r14
mov    $0x2,%r10d
mov    $0x1,%edi
mov    $0x1,%ebp
mov    $0x2,%r11d
lea    (%r10,%r10,2),%r15d
mov    %edi,%ebx
lea    (%r11,%r11,2),%eax
cmp    %r10d,%eax
jle    122d <big_recl+0x12d>
cmp    %r11d,%r15d
jle    122d <big_recl+0x12d>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %ebp,%eax
or     %ebx,%eax
je     122d <big_recl+0x12d>
xor    %edi,%edi
test   %ebp,%ebp
je     11c0 <big_recl+0xc0>
xor    %ebp,%ebp
cmp    %ecx,%r11d
je     1160 <big_recl+0x60>
movslq %r11d,%rax
mov    -0x38(%rsp),%rbp
lea    0x0(%rbp,%rax,4),%rbp
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
cmpl   $0x0,0x0(%rbp)
jne    11a4 <big_recl+0xa4>
add    $0x1,%eax
add    %r14,%rbp
cmp    %eax,%r10d
jne    1190 <big_recl+0x90>
mov    %r10d,%eax
xor    %ebp,%ebp
cmp    %r10d,%eax
sete   %bpl
add    %ebp,%r11d
test   %ebx,%ebx
jne    11ca <big_recl+0xca>
jmp    1139 <big_recl+0x39>
cs nopw 0x0(%rax,%rax,1)
xor    %ebp,%ebp
test   %ebx,%ebx
je     1139 <big_recl+0x39>
cmp    $0x2,%r11d
je     1227 <big_recl+0x127>
xor    %ebx,%ebx
cmp    %edx,%r10d
je     113b <big_recl+0x3b>
test   %r11d,%r11d
jle    1210 <big_recl+0x110>
mov    %r11d,%ebx
mov    %r10d,%eax
imul   %esi,%eax
cltq
mov    -0x38(%rsp),%rdi
lea    (%rdi,%rax,4),%rax
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
cmpl   $0x0,(%rax,%rdi,4)
jne    1214 <big_recl+0x114>
add    $0x1,%rdi
cmp    %edi,%ebx
jne    1200 <big_recl+0x100>
jmp    1216 <big_recl+0x116>
xor    %ebx,%ebx
jmp    1216 <big_recl+0x116>
mov    %edi,%ebx
xor    %edi,%edi
cmp    %r11d,%ebx
sete   %dil
add    %edi,%r10d
jmp    1135 <big_recl+0x35>
mov    $0x2,%r11d
lea    -0x1(%r10),%eax
mov    %eax,(%r8)
lea    -0x1(%r11),%ecx
mov    %ecx,-0x2c(%rsp)
mov    %ecx,(%r9)
cmp    $0x3,%r10d
jb     1405 <big_recl+0x305>
mov    %eax,%edx
lea    -0x3(%r11),%esi
lea    0x1(%rsi),%r13
mov    %r13,-0x8(%rsp)
and    $0xfffffffffffffff8,%r13
lea    -0x8(%r13),%rax
mov    %rax,-0x10(%rsp)
shr    $0x3,%rax
add    $0x1,%rax
lea    0x1(%r13),%ecx
mov    %ecx,-0x30(%rsp)
mov    %eax,%r12d
and    $0x7,%r12d
and    $0xfffffffffffffff8,%rax
mov    %rax,-0x20(%rsp)
mov    -0x38(%rsp),%rax
mov    -0x28(%rsp),%rdi
lea    (%rax,%rdi,4),%rbp
add    $0xf4,%rbp
lea    (%rax,%rdi,4),%rcx
add    $0x14,%rcx
lea    (%rax,%rdi,4),%r15
add    $0x4,%r15
mov    %r12,-0x18(%rsp)
shl    $0x5,%r12
mov    $0x1,%r8d
movaps 0xd40(%rip),%xmm0
jmp    12e6 <big_recl+0x1e6>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r8
add    %r14,%rbp
add    %r14,%rcx
add    %r14,%r15
cmp    %rdx,%r8
je     1405 <big_recl+0x305>
cmp    $0x3,%r11d
jl     12d0 <big_recl+0x1d0>
mov    %r8,%rax
imul   -0x28(%rsp),%rax
mov    -0x38(%rsp),%rdi
lea    (%rdi,%rax,4),%r10
add    $0x4,%r10
mov    $0x1,%eax
cmp    $0x7,%esi
jb     13e4 <big_recl+0x2e4>
cmpq   $0x38,-0x10(%rsp)
jae    131f <big_recl+0x21f>
xor    %edi,%edi
jmp    139f <big_recl+0x29f>
mov    -0x20(%rsp),%r9
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
movups %xmm0,-0xf0(%rbp,%rdi,4)
ff
movups %xmm0,-0xe0(%rbp,%rdi,4)
ff
movups %xmm0,-0xd0(%rbp,%rdi,4)
ff
movups %xmm0,-0xc0(%rbp,%rdi,4)
ff
movups %xmm0,-0xb0(%rbp,%rdi,4)
ff
movups %xmm0,-0xa0(%rbp,%rdi,4)
ff
movups %xmm0,-0x90(%rbp,%rdi,4)
ff
movups %xmm0,-0x80(%rbp,%rdi,4)
movups %xmm0,-0x70(%rbp,%rdi,4)
movups %xmm0,-0x60(%rbp,%rdi,4)
movups %xmm0,-0x50(%rbp,%rdi,4)
movups %xmm0,-0x40(%rbp,%rdi,4)
movups %xmm0,-0x30(%rbp,%rdi,4)
movups %xmm0,-0x20(%rbp,%rdi,4)
movups %xmm0,-0x10(%rbp,%rdi,4)
movups %xmm0,0x0(%rbp,%rdi,4)
add    $0x40,%rdi
add    $0xfffffffffffffff8,%r9
jne    1330 <big_recl+0x230>
cmpq   $0x0,-0x18(%rsp)
je     13d1 <big_recl+0x2d1>
lea    (%rcx,%rdi,4),%rax
lea    (%r15,%rdi,4),%rdi
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movups %xmm0,(%rdi,%rbx,1)
movups %xmm0,(%rax,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%r12
jne    13c0 <big_recl+0x2c0>
cmp    %r13,-0x8(%rsp)
je     12d0 <big_recl+0x1d0>
lea    (%r10,%r13,4),%r10
mov    -0x30(%rsp),%eax
mov    -0x2c(%rsp),%edi
sub    %eax,%edi
xor    %eax,%eax
nopl   0x0(%rax)
movl   $0x40,(%r10,%rax,4)
add    $0x1,%rax
cmp    %eax,%edi
jne    13f0 <big_recl+0x2f0>
jmp    12d0 <big_recl+0x1d0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @big_recl(i32* nocapture %0, i32 %1, i32 %2, i32 %3, i32* nocapture writeonly %4, i32* nocapture writeonly %5) {
%7 = sext i32 %1 to i64
br label %8
8: ; preds = %74, %6
%9 = phi i32 [ %77, %74 ], [ 1, %6 ]
%10 = phi i32 [ %53, %74 ], [ 1, %6 ]
%11 = phi i32 [ %78, %74 ], [ 2, %6 ]
%12 = phi i32 [ %54, %74 ], [ 2, %6 ]
%13 = mul nsw i32 %11, 3
%14 = icmp eq i32 %11, %2
br label %15
15: ; preds = %52, %8
%16 = phi i32 [ %9, %8 ], [ 0, %52 ]
%17 = phi i32 [ %10, %8 ], [ %53, %52 ]
%18 = phi i32 [ %12, %8 ], [ %54, %52 ]
br label %19
19: ; preds = %15, %58
%20 = phi i32 [ 0, %58 ], [ %16, %15 ]
%21 = phi i32 [ %53, %58 ], [ %17, %15 ]
%22 = phi i32 [ %54, %58 ], [ %18, %15 ]
%23 = icmp sgt i32 %13, %22
%24 = mul nsw i32 %22, 3
%25 = icmp sgt i32 %24, %11
%26 = icmp eq i32 %22, %3
%27 = and i1 %25, %23
br i1 %27, label %28, label %79
28: ; preds = %19, %34
%29 = phi i32 [ 0, %34 ], [ %21, %19 ]
%30 = or i32 %29, %20
%31 = icmp eq i32 %30, 0
br i1 %31, label %79, label %32
32: ; preds = %28
%33 = icmp eq i32 %29, 0
br i1 %33, label %52, label %34
34: ; preds = %32
br i1 %26, label %28, label %35
35: ; preds = %34
%36 = sext i32 %22 to i64
%37 = getelementptr inbounds i32, i32* %0, i64 %36
br label %38
38: ; preds = %35, %43
%39 = phi i32* [ %44, %43 ], [ %37, %35 ]
%40 = phi i32 [ %45, %43 ], [ 0, %35 ]
%41 = load i32, i32* %39
%42 = icmp eq i32 %41, 0
br i1 %42, label %43, label %47
43: ; preds = %38
%44 = getelementptr inbounds i32, i32* %39, i64 %7
%45 = add nuw nsw i32 %40, 1
%46 = icmp eq i32 %45, %11
br i1 %46, label %47, label %38
47: ; preds = %43, %38
%48 = phi i32 [ %40, %38 ], [ %11, %43 ]
%49 = icmp eq i32 %48, %11
%50 = zext i1 %49 to i32
%51 = add nsw i32 %22, %50
br label %52
52: ; preds = %32, %47
%53 = phi i32 [ %50, %47 ], [ 0, %32 ]
%54 = phi i32 [ %51, %47 ], [ %22, %32 ]
%55 = icmp eq i32 %20, 0
br i1 %55, label %15, label %56
56: ; preds = %52
%57 = icmp eq i32 %54, 2
br i1 %57, label %79, label %58
58: ; preds = %56
br i1 %14, label %19, label %59
59: ; preds = %58
%60 = icmp sgt i32 %54, 0
br i1 %60, label %61, label %74
61: ; preds = %59
%62 = mul nsw i32 %11, %1
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i32, i32* %0, i64 %63
br label %65
65: ; preds = %61, %70
%66 = phi i32* [ %71, %70 ], [ %64, %61 ]
%67 = phi i32 [ %72, %70 ], [ 0, %61 ]
%68 = load i32, i32* %66
%69 = icmp eq i32 %68, 0
br i1 %69, label %70, label %74
70: ; preds = %65
%71 = getelementptr inbounds i32, i32* %66, i64 1
%72 = add nuw nsw i32 %67, 1
%73 = icmp eq i32 %72, %54
br i1 %73, label %74, label %65
74: ; preds = %70, %65, %59
%75 = phi i32 [ 0, %59 ], [ %67, %65 ], [ %54, %70 ]
%76 = icmp eq i32 %75, %54
%77 = zext i1 %76 to i32
%78 = add nuw nsw i32 %11, %77
br label %8
79: ; preds = %56, %19, %28
%80 = phi i32 [ %22, %28 ], [ %22, %19 ], [ 2, %56 ]
%81 = add nsw i32 %11, -1
store i32 %81, i32* %4
%82 = add i32 %80, -1
store i32 %82, i32* %5
%83 = icmp ugt i32 %11, 2
br i1 %83, label %84, label %181
84: ; preds = %79
%85 = icmp sgt i32 %80, 2
%86 = zext i32 %81 to i64
%87 = add i32 %80, -3
%88 = zext i32 %87 to i64
%89 = add nuw nsw i64 %88, 1
%90 = and i64 %89, 8589934584
%91 = add nsw i64 %90, -8
%92 = lshr exact i64 %91, 3
%93 = add nuw nsw i64 %92, 1
%94 = icmp ult i32 %87, 7
%95 = and i64 %89, 8589934584
%96 = trunc i64 %95 to i32
%97 = or i32 %96, 1
%98 = and i64 %93, 7
%99 = icmp ult i64 %91, 56
%100 = and i64 %93, 4611686018427387896
%101 = icmp eq i64 %98, 0
%102 = icmp eq i64 %89, %95
br label %103
103: ; preds = %84, %178
%104 = phi i64 [ 1, %84 ], [ %179, %178 ]
br i1 %85, label %105, label %178
105: ; preds = %103
%106 = mul nsw i64 %104, %7
%107 = add nsw i64 %106, 1
%108 = getelementptr inbounds i32, i32* %0, i64 %107
br i1 %94, label %169, label %109
109: ; preds = %105
%110 = getelementptr i32, i32* %108, i64 %95
br i1 %99, label %156, label %111
111: ; preds = %109, %111
%112 = phi i64 [ %153, %111 ], [ 0, %109 ]
%113 = phi i64 [ %154, %111 ], [ 0, %109 ]
%114 = getelementptr i32, i32* %108, i64 %112
%115 = bitcast i32* %114 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %115
%116 = getelementptr i32, i32* %114, i64 4
%117 = bitcast i32* %116 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %117
%118 = or i64 %112, 8
%119 = getelementptr i32, i32* %108, i64 %118
%120 = bitcast i32* %119 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %120
%121 = getelementptr i32, i32* %119, i64 4
%122 = bitcast i32* %121 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %122
%123 = or i64 %112, 16
%124 = getelementptr i32, i32* %108, i64 %123
%125 = bitcast i32* %124 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %125
%126 = getelementptr i32, i32* %124, i64 4
%127 = bitcast i32* %126 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %127
%128 = or i64 %112, 24
%129 = getelementptr i32, i32* %108, i64 %128
%130 = bitcast i32* %129 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %130
%131 = getelementptr i32, i32* %129, i64 4
%132 = bitcast i32* %131 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %132
%133 = or i64 %112, 32
%134 = getelementptr i32, i32* %108, i64 %133
%135 = bitcast i32* %134 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %135
%136 = getelementptr i32, i32* %134, i64 4
%137 = bitcast i32* %136 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %137
%138 = or i64 %112, 40
%139 = getelementptr i32, i32* %108, i64 %138
%140 = bitcast i32* %139 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %140
%141 = getelementptr i32, i32* %139, i64 4
%142 = bitcast i32* %141 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %142
%143 = or i64 %112, 48
%144 = getelementptr i32, i32* %108, i64 %143
%145 = bitcast i32* %144 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %145
%146 = getelementptr i32, i32* %144, i64 4
%147 = bitcast i32* %146 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %147
%148 = or i64 %112, 56
%149 = getelementptr i32, i32* %108, i64 %148
%150 = bitcast i32* %149 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %150
%151 = getelementptr i32, i32* %149, i64 4
%152 = bitcast i32* %151 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %152
%153 = add nuw i64 %112, 64
%154 = add nuw i64 %113, 8
%155 = icmp eq i64 %154, %100
br i1 %155, label %156, label %111
156: ; preds = %111, %109
%157 = phi i64 [ 0, %109 ], [ %153, %111 ]
br i1 %101, label %168, label %158
158: ; preds = %156, %158
%159 = phi i64 [ %165, %158 ], [ %157, %156 ]
%160 = phi i64 [ %166, %158 ], [ 0, %156 ]
%161 = getelementptr i32, i32* %108, i64 %159
%162 = bitcast i32* %161 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %162
%163 = getelementptr i32, i32* %161, i64 4
%164 = bitcast i32* %163 to <4 x i32>*
store <4 x i32> <i32 64, i32 64, i32 64, i32 64>, <4 x i32>* %164
%165 = add nuw i64 %159, 8
%166 = add i64 %160, 1
%167 = icmp eq i64 %166, %98
br i1 %167, label %168, label %158
168: ; preds = %158, %156
br i1 %102, label %178, label %169
169: ; preds = %105, %168
%170 = phi i32* [ %108, %105 ], [ %110, %168 ]
%171 = phi i32 [ 1, %105 ], [ %97, %168 ]
br label %172
172: ; preds = %169, %172
%173 = phi i32* [ %175, %172 ], [ %170, %169 ]
%174 = phi i32 [ %176, %172 ], [ %171, %169 ]
%175 = getelementptr inbounds i32, i32* %173, i64 1
store i32 64, i32* %173
%176 = add nuw nsw i32 %174, 1
%177 = icmp eq i32 %176, %82
br i1 %177, label %178, label %172
178: ; preds = %172, %168, %103
%179 = add nuw nsw i64 %104, 1
%180 = icmp eq i64 %179, %86
br i1 %180, label %181, label %103
181: ; preds = %178, %79
ret void
}