void Kit_TruthIthVar(unsigned *pTruth, int nVars, int iVar) {
  unsigned Masks[5] = {0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00,
                       0xFFFF0000};
  int k, nWords = (nVars <= 5 ? 1 : (1 << (nVars - 5)));
  if (iVar < 5) {
    for (k = 0; k < nWords; k++)
      pTruth[k] = Masks[iVar];
  } else {
    for (k = 0; k < nWords; k++)
      if (k & (1 << (iVar - 5)))
        pTruth[k] = ~(unsigned)0;
      else
        pTruth[k] = 0;
  }
}


x86 assembly (clang, -O0):
<Kit_TruthIthVar>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    0xeeb(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xee8(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xee6(%rip),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x5,-0xc(%rbp)
jg     1144 <Kit_TruthIthVar+0x44>
mov    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1154 <Kit_TruthIthVar+0x54>
mov    -0xc(%rbp),%ecx
sub    $0x5,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x5,-0x10(%rbp)
jge    119d <Kit_TruthIthVar+0x9d>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    1198 <Kit_TruthIthVar+0x98>
movslq -0x10(%rbp),%rax
mov    -0x30(%rbp,%rax,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    116b <Kit_TruthIthVar+0x6b>
jmp    1208 <Kit_TruthIthVar+0x108>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    1203 <Kit_TruthIthVar+0x103>
mov    -0x34(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x5,%ecx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     11e1 <Kit_TruthIthVar+0xe1>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
jmp    11f0 <Kit_TruthIthVar+0xf0>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    11f5 <Kit_TruthIthVar+0xf5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    11a4 <Kit_TruthIthVar+0xa4>
jmp    1208 <Kit_TruthIthVar+0x108>
pop    %rbp
ret

x86 assembly (clang, -O2):
<Kit_TruthIthVar>:
lea    -0x5(%rsi),%ecx
mov    $0x1,%r8d
mov    $0x1,%eax
shl    %cl,%eax
cmp    $0x6,%esi
cmovl  %r8d,%eax
cmp    $0x5,%edx
jge    1140 <Kit_TruthIthVar+0x40>
test   %eax,%eax
jle    13bd <Kit_TruthIthVar+0x2bd>
movslq %edx,%rcx
lea    0xf22(%rip),%rdx
mov    (%rdx,%rcx,4),%r9d
mov    %eax,%ecx
cmp    $0x8,%eax
jae    1165 <Kit_TruthIthVar+0x65>
xor    %edx,%edx
jmp    13b0 <Kit_TruthIthVar+0x2b0>
test   %eax,%eax
jle    13bd <Kit_TruthIthVar+0x2bd>
add    $0xfb,%dl
mov    $0x1,%r10d
mov    %edx,%ecx
shl    %cl,%r10d
mov    %eax,%r9d
cmp    $0x8,%eax
jae    119b <Kit_TruthIthVar+0x9b>
xor    %edx,%edx
jmp    12d0 <Kit_TruthIthVar+0x1d0>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %r9d,%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    -0x8(%rdx),%rax
mov    %rax,%rsi
shr    $0x3,%rsi
add    $0x1,%rsi
mov    %esi,%r8d
and    $0x7,%r8d
cmp    $0x38,%rax
jae    12ea <Kit_TruthIthVar+0x1ea>
xor    %eax,%eax
jmp    1375 <Kit_TruthIthVar+0x275>
mov    %r9d,%edx
and    $0xfffffff8,%edx
movd   %r10d,%xmm0
pshufd $0x0,%xmm0,%xmm5
lea    -0x8(%rdx),%rax
mov    %rax,%r8
shr    $0x3,%r8
add    $0x1,%r8
test   %rax,%rax
je     13be <Kit_TruthIthVar+0x2be>
movabs $0x3ffffffffffffff8,%rcx
ff ff 3f
or     $0x6,%rcx
and    %r8,%rcx
movdqa 0xe24(%rip),%xmm2
xor    %esi,%esi
movdqa 0xe29(%rip),%xmm8
pxor   %xmm3,%xmm3
pcmpeqd %xmm4,%xmm4
movdqa 0xe28(%rip),%xmm9
movdqa 0xe30(%rip),%xmm6
movdqa 0xe38(%rip),%xmm7
nopl   0x0(%rax,%rax,1)
movdqa %xmm2,%xmm1
paddd  %xmm8,%xmm1
movdqa %xmm5,%xmm0
pand   %xmm2,%xmm0
pand   %xmm5,%xmm1
pcmpeqd %xmm3,%xmm0
pxor   %xmm4,%xmm0
pcmpeqd %xmm3,%xmm1
pxor   %xmm4,%xmm1
movdqu %xmm0,(%rdi,%rsi,4)
movdqu %xmm1,0x10(%rdi,%rsi,4)
movdqa %xmm2,%xmm0
paddd  %xmm9,%xmm0
movdqa %xmm2,%xmm1
paddd  %xmm6,%xmm1
pand   %xmm5,%xmm0
pand   %xmm5,%xmm1
pcmpeqd %xmm3,%xmm0
pxor   %xmm4,%xmm0
pcmpeqd %xmm3,%xmm1
pxor   %xmm4,%xmm1
movdqu %xmm0,0x20(%rdi,%rsi,4)
movdqu %xmm1,0x30(%rdi,%rsi,4)
add    $0x10,%rsi
paddd  %xmm7,%xmm2
add    $0xfffffffffffffffe,%rcx
jne    1210 <Kit_TruthIthVar+0x110>
test   $0x1,%r8b
je     12c0 <Kit_TruthIthVar+0x1c0>
movdqa %xmm5,%xmm0
pand   %xmm2,%xmm0
paddd  0xd77(%rip),%xmm2
pand   %xmm5,%xmm2
pxor   %xmm1,%xmm1
pcmpeqd %xmm1,%xmm0
pcmpeqd %xmm3,%xmm3
pxor   %xmm3,%xmm0
pcmpeqd %xmm1,%xmm2
pxor   %xmm3,%xmm2
movdqu %xmm0,(%rdi,%rsi,4)
movdqu %xmm2,0x10(%rdi,%rsi,4)
cmp    %r9,%rdx
je     13bd <Kit_TruthIthVar+0x2bd>
nopl   0x0(%rax)
mov    %r10d,%eax
and    %edx,%eax
neg    %eax
sbb    %eax,%eax
mov    %eax,(%rdi,%rdx,4)
add    $0x1,%rdx
cmp    %rdx,%r9
jne    12d0 <Kit_TruthIthVar+0x1d0>
jmp    13bd <Kit_TruthIthVar+0x2bd>
and    $0xfffffffffffffff8,%rsi
xor    %eax,%eax
movdqu %xmm0,(%rdi,%rax,4)
movdqu %xmm0,0x10(%rdi,%rax,4)
movdqu %xmm0,0x20(%rdi,%rax,4)
movdqu %xmm0,0x30(%rdi,%rax,4)
movdqu %xmm0,0x40(%rdi,%rax,4)
movdqu %xmm0,0x50(%rdi,%rax,4)
movdqu %xmm0,0x60(%rdi,%rax,4)
movdqu %xmm0,0x70(%rdi,%rax,4)
movdqu %xmm0,0x80(%rdi,%rax,4)
movdqu %xmm0,0x90(%rdi,%rax,4)
movdqu %xmm0,0xa0(%rdi,%rax,4)
movdqu %xmm0,0xb0(%rdi,%rax,4)
movdqu %xmm0,0xc0(%rdi,%rax,4)
movdqu %xmm0,0xd0(%rdi,%rax,4)
movdqu %xmm0,0xe0(%rdi,%rax,4)
movdqu %xmm0,0xf0(%rdi,%rax,4)
add    $0x40,%rax
add    $0xfffffffffffffff8,%rsi
jne    12f0 <Kit_TruthIthVar+0x1f0>
test   %r8,%r8
je     13a4 <Kit_TruthIthVar+0x2a4>
lea    (%rdi,%rax,4),%rax
add    $0x10,%rax
shl    $0x5,%r8
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movdqu %xmm0,-0x10(%rax,%rsi,1)
movdqu %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%r8
jne    1390 <Kit_TruthIthVar+0x290>
cmp    %rcx,%rdx
je     13bd <Kit_TruthIthVar+0x2bd>
nopl   0x0(%rax)
mov    %r9d,(%rdi,%rdx,4)
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    13b0 <Kit_TruthIthVar+0x2b0>
ret
movdqa 0xc3a(%rip),%xmm2
xor    %esi,%esi
test   $0x1,%r8b
jne    1289 <Kit_TruthIthVar+0x189>
jmp    12c0 <Kit_TruthIthVar+0x1c0>

LLVM IR (-O0):
@__const.Kit_TruthIthVar.Masks = [5 x i32] [i32 -1431655766, i32 -858993460, i32 -252645136, i32 -16711936, i32 -65536]
define void @Kit_TruthIthVar(i32* %0, i32 %1, i32 %2) {
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32
%7 = alloca [5 x i32]
%8 = alloca i32
%9 = alloca i32
store i32* %0, i32** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%10 = bitcast [5 x i32]* %7 to i8*
%11 = load i32, i32* %5
%12 = icmp sle i32 %11, 5
br i1 %12, label %13, label %14
13: ; preds = %3
br label %18
14: ; preds = %3
%15 = load i32, i32* %5
%16 = sub nsw i32 %15, 5
%17 = shl i32 1, %16
br label %18
18: ; preds = %14, %13
%19 = phi i32 [ 1, %13 ], [ %17, %14 ]
store i32 %19, i32* %9
%20 = load i32, i32* %6
%21 = icmp slt i32 %20, 5
br i1 %21, label %22, label %40
22: ; preds = %18
store i32 0, i32* %8
br label %23
23: ; preds = %36, %22
%24 = load i32, i32* %8
%25 = load i32, i32* %9
%26 = icmp slt i32 %24, %25
br i1 %26, label %27, label %39
27: ; preds = %23
%28 = load i32, i32* %6
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [5 x i32], [5 x i32]* %7, i64 0, i64 %29
%31 = load i32, i32* %30
%32 = load i32*, i32** %4
%33 = load i32, i32* %8
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds i32, i32* %32, i64 %34
store i32 %31, i32* %35
br label %36
36: ; preds = %27
%37 = load i32, i32* %8
%38 = add nsw i32 %37, 1
store i32 %38, i32* %8
br label %23
39: ; preds = %23
br label %67
40: ; preds = %18
store i32 0, i32* %8
br label %41
41: ; preds = %63, %40
%42 = load i32, i32* %8
%43 = load i32, i32* %9
%44 = icmp slt i32 %42, %43
br i1 %44, label %45, label %66
45: ; preds = %41
%46 = load i32, i32* %8
%47 = load i32, i32* %6
%48 = sub nsw i32 %47, 5
%49 = shl i32 1, %48
%50 = and i32 %46, %49
%51 = icmp ne i32 %50, 0
br i1 %51, label %52, label %57
52: ; preds = %45
%53 = load i32*, i32** %4
%54 = load i32, i32* %8
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i32, i32* %53, i64 %55
store i32 -1, i32* %56
br label %62
57: ; preds = %45
%58 = load i32*, i32** %4
%59 = load i32, i32* %8
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds i32, i32* %58, i64 %60
store i32 0, i32* %61
br label %62
62: ; preds = %57, %52
br label %63
63: ; preds = %62
%64 = load i32, i32* %8
%65 = add nsw i32 %64, 1
store i32 %65, i32* %8
br label %41
66: ; preds = %41
br label %67
67: ; preds = %66, %39
ret void
}

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