void ICCITTFlatQuantize(int *matrix, int dcqfact, int acqfact) {
  static char RoutineName[] = "ICCITTFlatQuantize";
  int *mptr;
  *matrix = *matrix * dcqfact;
  if (acqfact & 1) {
    for (mptr = matrix + 1; mptr < matrix + 64; mptr++) {
      if (*mptr > 0) {
        *mptr = ((*mptr << 1) + 1) * acqfact;
      } else if (*mptr < 0) {
        *mptr = ((*mptr << 1) - 1) * acqfact;
      }
    }
  } else {
    for (mptr = matrix + 1; mptr < matrix + 64; mptr++) {
      if (*mptr > 0) {
        *mptr = (((*mptr << 1) + 1) * acqfact) - 1;
      } else if (*mptr < 0) {
        *mptr = (((*mptr << 1) - 1) * acqfact) + 1;
      }
    }
  }
}


x86 assembly (clang, -O0):
<ICCITTFlatQuantize>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     11bc <ICCITTFlatQuantize+0xbc>
mov    -0x8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
add    $0x100,%rcx
cmp    %rcx,%rax
jae    11b7 <ICCITTFlatQuantize+0xb7>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1179 <ICCITTFlatQuantize+0x79>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    11a1 <ICCITTFlatQuantize+0xa1>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jge    119c <ICCITTFlatQuantize+0x9c>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
shl    $0x1,%ecx
sub    $0x1,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    11a1 <ICCITTFlatQuantize+0xa1>
jmp    11a6 <ICCITTFlatQuantize+0xa6>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    1139 <ICCITTFlatQuantize+0x39>
jmp    1251 <ICCITTFlatQuantize+0x151>
mov    -0x8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
add    $0x100,%rcx
cmp    %rcx,%rax
jae    124c <ICCITTFlatQuantize+0x14c>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jle    120b <ICCITTFlatQuantize+0x10b>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
imul   -0x10(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1236 <ICCITTFlatQuantize+0x136>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jge    1231 <ICCITTFlatQuantize+0x131>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
shl    $0x1,%ecx
sub    $0x1,%ecx
imul   -0x10(%rbp),%ecx
add    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1236 <ICCITTFlatQuantize+0x136>
jmp    123b <ICCITTFlatQuantize+0x13b>
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    11c8 <ICCITTFlatQuantize+0xc8>
jmp    1251 <ICCITTFlatQuantize+0x151>
pop    %rbp
ret

x86 assembly (clang, -O2):
<ICCITTFlatQuantize>:
imul   (%rdi),%esi
mov    %esi,(%rdi)
xor    %eax,%eax
pxor   %xmm0,%xmm0
pcmpeqd %xmm1,%xmm1
movdqa 0xee9(%rip),%xmm2
test   $0x1,%dl
je     113e <ICCITTFlatQuantize+0x3e>
jmp    122e <ICCITTFlatQuantize+0x12e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x4,%rax
cmp    $0x3c,%rax
je     12d1 <ICCITTFlatQuantize+0x1d1>
movdqu 0x4(%rdi,%rax,4),%xmm5
pxor   %xmm3,%xmm3
pcmpgtd %xmm5,%xmm3
movdqa %xmm5,%xmm6
paddd  %xmm5,%xmm6
movdqa %xmm6,%xmm4
paddd  %xmm1,%xmm4
por    %xmm2,%xmm6
movdqa %xmm3,%xmm7
pandn  %xmm6,%xmm7
pand   %xmm3,%xmm4
por    %xmm7,%xmm4
movdqa %xmm3,%xmm6
pxor   %xmm1,%xmm6
psrld  $0x1f,%xmm3
por    %xmm6,%xmm3
pcmpeqd %xmm0,%xmm5
movd   %xmm5,%ecx
not    %ecx
test   $0x1,%cl
je     11a1 <ICCITTFlatQuantize+0xa1>
movd   %xmm4,%ecx
imul   %edx,%ecx
movd   %xmm3,%esi
add    %ecx,%esi
mov    %esi,0x4(%rdi,%rax,4)
pxor   %xmm1,%xmm5
pextrw $0x2,%xmm5,%ecx
test   $0x1,%cl
je     11ca <ICCITTFlatQuantize+0xca>
pshufd $0x55,%xmm4,%xmm6
movd   %xmm6,%ecx
imul   %edx,%ecx
pshufd $0x55,%xmm3,%xmm6
movd   %xmm6,%esi
add    %ecx,%esi
mov    %esi,0x8(%rdi,%rax,4)
pextrw $0x4,%xmm5,%ecx
test   $0x1,%cl
je     11ef <ICCITTFlatQuantize+0xef>
pshufd $0xee,%xmm4,%xmm6
movd   %xmm6,%ecx
imul   %edx,%ecx
pshufd $0xee,%xmm3,%xmm6
movd   %xmm6,%esi
add    %ecx,%esi
mov    %esi,0xc(%rdi,%rax,4)
pextrw $0x6,%xmm5,%ecx
test   $0x1,%cl
je     1130 <ICCITTFlatQuantize+0x30>
pshufd $0xff,%xmm4,%xmm4
movd   %xmm4,%ecx
imul   %edx,%ecx
pshufd $0xff,%xmm3,%xmm3
movd   %xmm3,%esi
add    %ecx,%esi
mov    %esi,0x10(%rdi,%rax,4)
jmp    1130 <ICCITTFlatQuantize+0x30>
nopl   (%rax)
add    $0x4,%rax
cmp    $0x3c,%rax
je     12f2 <ICCITTFlatQuantize+0x1f2>
movdqu 0x4(%rdi,%rax,4),%xmm4
pxor   %xmm3,%xmm3
pcmpgtd %xmm4,%xmm3
movdqa %xmm4,%xmm5
paddd  %xmm4,%xmm5
movdqa %xmm5,%xmm6
paddd  %xmm1,%xmm6
por    %xmm2,%xmm5
pand   %xmm3,%xmm6
pandn  %xmm5,%xmm3
por    %xmm6,%xmm3
pcmpeqd %xmm0,%xmm4
movd   %xmm4,%ecx
not    %ecx
test   $0x1,%cl
je     1276 <ICCITTFlatQuantize+0x176>
movd   %xmm3,%ecx
imul   %edx,%ecx
mov    %ecx,0x4(%rdi,%rax,4)
pxor   %xmm1,%xmm4
pextrw $0x2,%xmm4,%ecx
test   $0x1,%cl
je     1294 <ICCITTFlatQuantize+0x194>
pshufd $0x55,%xmm3,%xmm5
movd   %xmm5,%ecx
imul   %edx,%ecx
mov    %ecx,0x8(%rdi,%rax,4)
pextrw $0x4,%xmm4,%ecx
test   $0x1,%cl
je     12ae <ICCITTFlatQuantize+0x1ae>
pshufd $0xee,%xmm3,%xmm5
movd   %xmm5,%ecx
imul   %edx,%ecx
mov    %ecx,0xc(%rdi,%rax,4)
pextrw $0x6,%xmm4,%ecx
test   $0x1,%cl
je     1220 <ICCITTFlatQuantize+0x120>
pshufd $0xff,%xmm3,%xmm3
movd   %xmm3,%ecx
imul   %edx,%ecx
mov    %ecx,0x10(%rdi,%rax,4)
jmp    1220 <ICCITTFlatQuantize+0x120>
mov    0xf4(%rdi),%eax
test   %eax,%eax
jle    130c <ICCITTFlatQuantize+0x20c>
add    %eax,%eax
add    $0x1,%eax
mov    $0xffffffff,%ecx
imul   %edx,%eax
add    %ecx,%eax
mov    %eax,0xf4(%rdi)
jmp    1312 <ICCITTFlatQuantize+0x212>
mov    0xf4(%rdi),%eax
test   %eax,%eax
jle    1333 <ICCITTFlatQuantize+0x233>
add    %eax,%eax
add    $0x1,%eax
imul   %edx,%eax
mov    %eax,0xf4(%rdi)
jmp    1335 <ICCITTFlatQuantize+0x235>
js     139e <ICCITTFlatQuantize+0x29e>
mov    0xf8(%rdi),%eax
test   %eax,%eax
jle    134f <ICCITTFlatQuantize+0x24f>
add    %eax,%eax
add    $0x1,%eax
mov    $0xffffffff,%ecx
imul   %edx,%eax
add    %ecx,%eax
mov    %eax,0xf8(%rdi)
jmp    1351 <ICCITTFlatQuantize+0x251>
js     13ad <ICCITTFlatQuantize+0x2ad>
mov    0xf8(%rdi),%eax
test   %eax,%eax
jle    136c <ICCITTFlatQuantize+0x26c>
add    %eax,%eax
add    $0x1,%eax
imul   %edx,%eax
mov    %eax,0xf8(%rdi)
jmp    136e <ICCITTFlatQuantize+0x26e>
js     13b7 <ICCITTFlatQuantize+0x2b7>
mov    0xfc(%rdi),%eax
test   %eax,%eax
jle    1387 <ICCITTFlatQuantize+0x287>
add    %eax,%eax
add    $0x1,%eax
mov    $0xffffffff,%ecx
imul   %edx,%eax
add    %ecx,%eax
jmp    1380 <ICCITTFlatQuantize+0x280>
js     13c6 <ICCITTFlatQuantize+0x2c6>
mov    0xfc(%rdi),%eax
test   %eax,%eax
jle    1395 <ICCITTFlatQuantize+0x295>
add    %eax,%eax
add    $0x1,%eax
imul   %edx,%eax
mov    %eax,0xfc(%rdi)
ret
jns    1386 <ICCITTFlatQuantize+0x286>
add    %eax,%eax
add    $0xffffffff,%eax
mov    $0x1,%ecx
jmp    1365 <ICCITTFlatQuantize+0x265>
jns    1386 <ICCITTFlatQuantize+0x286>
add    %eax,%eax
add    $0xffffffff,%eax
jmp    137d <ICCITTFlatQuantize+0x27d>
add    %eax,%eax
add    $0xffffffff,%eax
mov    $0x1,%ecx
jmp    12e5 <ICCITTFlatQuantize+0x1e5>
add    %eax,%eax
add    $0xffffffff,%eax
jmp    1301 <ICCITTFlatQuantize+0x201>
add    %eax,%eax
add    $0xffffffff,%eax
mov    $0x1,%ecx
jmp    1326 <ICCITTFlatQuantize+0x226>
add    %eax,%eax
add    $0xffffffff,%eax
jmp    1344 <ICCITTFlatQuantize+0x244>

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

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