void divmodbig(int *x, int *y, int *d) {
  int a, b, n = y[0], l;
  l = x[0] - y[0];
  for (a = l; a >= 0; a--) {
    d[a + 1] = 0;
    if (x[0] < y[0] + a)
      continue;
    else if (x[0] == n + a) {
      for (b = 0; x[x[0] - b] == y[n - b] && b + 1 < n; b++)
        ;
      if (x[x[0] - b] < y[n - b])
        continue;
    }
    d[a + 1] = 1;
    for (b = 1; b <= n; b++) {
      x[a + b] -= y[b];
      if (x[a + b] < 0) {
        x[a + b] += 2;
        x[a + b + 1]--;
      }
    }
    while (x[0] > 1 && x[x[0]] == 0)
      x[0]--;
  }
  for (d[0] = l + 1; d[0] > 1 && d[d[0]] == 0; d[0]--)
    ;
  if (d[0] < 1) {
    d[0] = 1;
    d[1] = 0;
  }
}


x86 assembly (clang, -O0):
<divmodbig>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
sub    (%rcx),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jl     131a <divmodbig+0x21a>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jge    1168 <divmodbig+0x68>
jmp    130c <divmodbig+0x20c>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    -0x24(%rbp),%ecx
add    -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jne    1216 <divmodbig+0x116>
movl   $0x0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
mov    -0x10(%rbp),%rdx
mov    -0x24(%rbp),%eax
sub    -0x20(%rbp),%eax
movslq %eax,%rsi
xor    %eax,%eax
cmp    (%rdx,%rsi,4),%ecx
mov    %al,-0x29(%rbp)
jne    11c0 <divmodbig+0xc0>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
setl   %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    11d0 <divmodbig+0xd0>
jmp    11e3 <divmodbig+0xe3>
jmp    11d5 <divmodbig+0xd5>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1183 <divmodbig+0x83>
mov    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x24(%rbp),%edx
sub    -0x20(%rbp),%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1211 <divmodbig+0x111>
jmp    130c <divmodbig+0x20c>
jmp    1216 <divmodbig+0x116>
jmp    121b <divmodbig+0x11b>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x1,(%rax,%rcx,4)
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     12bb <divmodbig+0x1bb>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    12a8 <divmodbig+0x1a8>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0x2,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0xffffffff,%edx
mov    %edx,(%rax,%rcx,4)
jmp    12ad <divmodbig+0x1ad>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1236 <divmodbig+0x136>
jmp    12c0 <divmodbig+0x1c0>
mov    -0x8(%rbp),%rcx
xor    %eax,%eax
cmpl   $0x1,(%rcx)
mov    %al,-0x2a(%rbp)
jle    12e7 <divmodbig+0x1e7>
mov    -0x8(%rbp),%rax
mov    -0x8(%rbp),%rcx
movslq (%rcx),%rcx
cmpl   $0x0,(%rax,%rcx,4)
sete   %al
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
test   $0x1,%al
jne    12f7 <divmodbig+0x1f7>
jmp    1307 <divmodbig+0x207>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    12c0 <divmodbig+0x1c0>
jmp    130c <divmodbig+0x20c>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    112e <divmodbig+0x2e>
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rcx
xor    %eax,%eax
cmpl   $0x1,(%rcx)
mov    %al,-0x2b(%rbp)
jle    134d <divmodbig+0x24d>
mov    -0x18(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq (%rcx),%rcx
cmpl   $0x0,(%rax,%rcx,4)
sete   %al
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
test   $0x1,%al
jne    135d <divmodbig+0x25d>
jmp    1372 <divmodbig+0x272>
jmp    1362 <divmodbig+0x262>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    1326 <divmodbig+0x226>
mov    -0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jge    1394 <divmodbig+0x294>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x18(%rbp),%rax
movl   $0x0,0x4(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<divmodbig>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
movslq (%rsi),%r15
mov    (%rdi),%eax
sub    %r15d,%eax
js     123d <divmodbig+0x13d>
lea    0x1(%r15),%r9d
mov    %rax,-0x8(%rsp)
mov    %eax,%r10d
lea    (%rsi,%r15,4),%r11
lea    (%rdi,%r10,4),%r13
jmp    1144 <divmodbig+0x44>
xchg   %ax,%ax
lea    -0x1(%r10),%rax
add    $0xfffffffffffffffc,%r13
test   %r10,%r10
mov    %rax,%r10
jle    120d <divmodbig+0x10d>
lea    0x1(%r10),%r14d
movl   $0x0,(%rdx,%r14,4)
movslq (%rdi),%rcx
mov    (%rsi),%eax
add    %r10d,%eax
cmp    %eax,%ecx
jl     1130 <divmodbig+0x30>
lea    (%r10,%r15,1),%eax
cmp    %eax,%ecx
jne    1190 <divmodbig+0x90>
lea    (%rdi,%rcx,4),%r12
mov    $0x1,%ecx
xor    %ebx,%ebx
nop
mov    (%r12,%rbx,1),%ebp
mov    (%r11,%rbx,1),%eax
cmp    %eax,%ebp
jne    118c <divmodbig+0x8c>
add    $0xfffffffffffffffc,%rbx
lea    0x1(%rcx),%r8
cmp    %r15,%rcx
mov    %r8,%rcx
jl     1170 <divmodbig+0x70>
cmp    %eax,%ebp
jl     1130 <divmodbig+0x30>
movl   $0x1,(%rdx,%r14,4)
test   %r15d,%r15d
jle    11e0 <divmodbig+0xe0>
mov    $0x1,%ebx
jmp    11b9 <divmodbig+0xb9>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rbx
cmp    %rbx,%r9
je     11e0 <divmodbig+0xe0>
mov    0x0(%r13,%rbx,4),%eax
sub    (%rsi,%rbx,4),%eax
mov    %eax,0x0(%r13,%rbx,4)
jns    11b0 <divmodbig+0xb0>
add    $0x2,%eax
mov    %eax,0x0(%r13,%rbx,4)
addl   $0xffffffff,0x4(%r13,%rbx,4)
jmp    11b0 <divmodbig+0xb0>
nopl   0x0(%rax,%rax,1)
mov    (%rdi),%ecx
cmp    $0x2,%ecx
jl     1130 <divmodbig+0x30>
nopl   0x0(%rax,%rax,1)
mov    %ecx,%eax
cmpl   $0x0,(%rdi,%rax,4)
jne    1130 <divmodbig+0x30>
lea    -0x1(%rcx),%eax
mov    %eax,(%rdi)
cmp    $0x2,%ecx
mov    %eax,%ecx
jg     11f0 <divmodbig+0xf0>
jmp    1130 <divmodbig+0x30>
mov    -0x8(%rsp),%rcx
lea    0x1(%rcx),%eax
mov    %eax,(%rdx)
test   %ecx,%ecx
jle    1238 <divmodbig+0x138>
nopl   0x0(%rax,%rax,1)
lea    0x1(%rcx),%eax
cmpl   $0x0,(%rdx,%rax,4)
jne    1244 <divmodbig+0x144>
mov    %ecx,(%rdx)
add    $0xffffffff,%ecx
cmp    $0x2,%eax
jg     1220 <divmodbig+0x120>
add    $0x1,%ecx
mov    %ecx,%eax
cmp    $0x1,%eax
je     1244 <divmodbig+0x144>
movq   $0x1,(%rdx)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @divmodbig(i32* nocapture %0, i32* nocapture %1, i32* nocapture %2) {
%4 = load i32, i32* %1
%5 = load i32, i32* %0
%6 = sub i32 %5, %4
%7 = icmp sgt i32 %6, -1
br i1 %7, label %8, label %93
8: ; preds = %3
%9 = icmp slt i32 %4, 1
%10 = sext i32 %4 to i64
%11 = add i32 %4, 1
%12 = zext i32 %6 to i64
%13 = zext i32 %11 to i64
br label %14
14: ; preds = %8, %75
%15 = phi i64 [ %12, %8 ], [ %76, %75 ]
%16 = trunc i64 %15 to i32
%17 = add nuw nsw i64 %15, 1
%18 = and i64 %17, 4294967295
%19 = getelementptr inbounds i32, i32* %2, i64 %18
store i32 0, i32* %19
%20 = load i32, i32* %0
%21 = load i32, i32* %1
%22 = add nsw i32 %21, %16
%23 = icmp slt i32 %20, %22
br i1 %23, label %75, label %24
24: ; preds = %14
%25 = trunc i64 %15 to i32
%26 = add i32 %4, %25
%27 = icmp eq i32 %20, %26
br i1 %27, label %28, label %44
28: ; preds = %24
%29 = sext i32 %20 to i64
br label %30
30: ; preds = %28, %30
%31 = phi i64 [ 0, %28 ], [ %39, %30 ]
%32 = sub nsw i64 %29, %31
%33 = getelementptr inbounds i32, i32* %0, i64 %32
%34 = load i32, i32* %33
%35 = sub nsw i64 %10, %31
%36 = getelementptr inbounds i32, i32* %1, i64 %35
%37 = load i32, i32* %36
%38 = icmp eq i32 %34, %37
%39 = add nuw nsw i64 %31, 1
%40 = icmp slt i64 %39, %10
%41 = select i1 %38, i1 %40, i1 false
br i1 %41, label %30, label %42
42: ; preds = %30
%43 = icmp slt i32 %34, %37
br i1 %43, label %75, label %44
44: ; preds = %24, %42
store i32 1, i32* %19
br i1 %9, label %63, label %45
45: ; preds = %44, %60
%46 = phi i64 [ %61, %60 ], [ 1, %44 ]
%47 = getelementptr inbounds i32, i32* %1, i64 %46
%48 = load i32, i32* %47
%49 = add nsw i64 %46, %15
%50 = getelementptr inbounds i32, i32* %0, i64 %49
%51 = load i32, i32* %50
%52 = sub nsw i32 %51, %48
store i32 %52, i32* %50
%53 = icmp slt i32 %52, 0
br i1 %53, label %54, label %60
54: ; preds = %45
%55 = add nsw i32 %52, 2
store i32 %55, i32* %50
%56 = add nsw i64 %49, 1
%57 = getelementptr inbounds i32, i32* %0, i64 %56
%58 = load i32, i32* %57
%59 = add nsw i32 %58, -1
store i32 %59, i32* %57
br label %60
60: ; preds = %45, %54
%61 = add nuw nsw i64 %46, 1
%62 = icmp eq i64 %61, %13
br i1 %62, label %63, label %45
63: ; preds = %60, %44
%64 = load i32, i32* %0
%65 = icmp sgt i32 %64, 1
br i1 %65, label %66, label %75
66: ; preds = %63, %72
%67 = phi i32 [ %73, %72 ], [ %64, %63 ]
%68 = zext i32 %67 to i64
%69 = getelementptr inbounds i32, i32* %0, i64 %68
%70 = load i32, i32* %69
%71 = icmp eq i32 %70, 0
br i1 %71, label %72, label %75
72: ; preds = %66
%73 = add nsw i32 %67, -1
store i32 %73, i32* %0
%74 = icmp sgt i32 %67, 2
br i1 %74, label %66, label %75
75: ; preds = %72, %66, %63, %42, %14
%76 = add nsw i64 %15, -1
%77 = icmp sgt i64 %15, 0
br i1 %77, label %14, label %78
78: ; preds = %75
%79 = add nsw i32 %6, 1
store i32 %79, i32* %2
%80 = icmp sgt i32 %6, 0
br i1 %80, label %81, label %90
81: ; preds = %78, %87
%82 = phi i32 [ %88, %87 ], [ %79, %78 ]
%83 = zext i32 %82 to i64
%84 = getelementptr inbounds i32, i32* %2, i64 %83
%85 = load i32, i32* %84
%86 = icmp eq i32 %85, 0
br i1 %86, label %87, label %95
87: ; preds = %81
%88 = add nsw i32 %82, -1
store i32 %88, i32* %2
%89 = icmp sgt i32 %82, 2
br i1 %89, label %81, label %90
90: ; preds = %87, %78
%91 = phi i32 [ %79, %78 ], [ %88, %87 ]
%92 = icmp eq i32 %91, 1
br i1 %92, label %95, label %93
93: ; preds = %3, %90
store i32 1, i32* %2
%94 = getelementptr inbounds i32, i32* %2, i64 1
store i32 0, i32* %94
br label %95
95: ; preds = %81, %93, %90
ret void
}