void insertion_sort(int a[]) {
  int i, j, key;
  for (i = 1; i < 10; i++) {
    key = a[i];
    j = i - 1;
    while (j >= 0 && a[j] > key) {
      a[j + 1] = a[j];
      j--;
    }
    a[j + 1] = key;
  }
}


x86 assembly (clang, -O0):
<insertion_sort>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x1,-0xc(%rbp)
cmpl   $0xa,-0xc(%rbp)
jge    11ad <insertion_sort+0xad>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x15(%rbp)
jl     1153 <insertion_sort+0x53>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
setg   %al
mov    %al,-0x15(%rbp)
mov    -0x15(%rbp),%al
test   $0x1,%al
jne    1163 <insertion_sort+0x63>
jmp    118c <insertion_sort+0x8c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    1130 <insertion_sort+0x30>
mov    -0x14(%rbp),%edx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <insertion_sort+0xf>
pop    %rbp
ret

x86 assembly (clang, -O2):
<insertion_sort>:
mov    (%rdi),%edx
mov    0x4(%rdi),%eax
mov    $0x1,%ecx
cmp    %eax,%edx
jle    1113 <insertion_sort+0x13>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x4(%rdi),%edx
mov    0x8(%rdi),%eax
mov    $0x2,%ecx
cmp    %eax,%edx
jle    1138 <insertion_sort+0x38>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    1138 <insertion_sort+0x38>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x8(%rdi),%edx
mov    0xc(%rdi),%eax
mov    $0x3,%ecx
cmp    %eax,%edx
jle    116c <insertion_sort+0x6c>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    116c <insertion_sort+0x6c>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    116c <insertion_sort+0x6c>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0xc(%rdi),%edx
mov    0x10(%rdi),%eax
mov    $0x4,%ecx
cmp    %eax,%edx
jle    11af <insertion_sort+0xaf>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    11af <insertion_sort+0xaf>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    11af <insertion_sort+0xaf>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    11af <insertion_sort+0xaf>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x10(%rdi),%edx
mov    0x14(%rdi),%eax
mov    $0x5,%ecx
cmp    %eax,%edx
jle    1201 <insertion_sort+0x101>
mov    %edx,0x14(%rdi)
mov    0xc(%rdi),%edx
mov    $0x4,%ecx
cmp    %eax,%edx
jle    1201 <insertion_sort+0x101>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    1201 <insertion_sort+0x101>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    1201 <insertion_sort+0x101>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    1201 <insertion_sort+0x101>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x14(%rdi),%edx
mov    0x18(%rdi),%eax
mov    $0x6,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0x18(%rdi)
mov    0x10(%rdi),%edx
mov    $0x5,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0x14(%rdi)
mov    0xc(%rdi),%edx
mov    $0x4,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    1262 <insertion_sort+0x162>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x18(%rdi),%edx
mov    0x1c(%rdi),%eax
mov    $0x7,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x1c(%rdi)
mov    0x14(%rdi),%edx
mov    $0x6,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x18(%rdi)
mov    0x10(%rdi),%edx
mov    $0x5,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x14(%rdi)
mov    0xc(%rdi),%edx
mov    $0x4,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    12d2 <insertion_sort+0x1d2>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x1c(%rdi),%edx
mov    0x20(%rdi),%eax
mov    $0x8,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x20(%rdi)
mov    0x18(%rdi),%edx
mov    $0x7,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x1c(%rdi)
mov    0x14(%rdi),%edx
mov    $0x6,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x18(%rdi)
mov    0x10(%rdi),%edx
mov    $0x5,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x14(%rdi)
mov    0xc(%rdi),%edx
mov    $0x4,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    1351 <insertion_sort+0x251>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
mov    0x20(%rdi),%edx
mov    0x24(%rdi),%eax
mov    $0x9,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x24(%rdi)
mov    0x1c(%rdi),%edx
mov    $0x8,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x20(%rdi)
mov    0x18(%rdi),%edx
mov    $0x7,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x1c(%rdi)
mov    0x14(%rdi),%edx
mov    $0x6,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x18(%rdi)
mov    0x10(%rdi),%edx
mov    $0x5,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x14(%rdi)
mov    0xc(%rdi),%edx
mov    $0x4,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x10(%rdi)
mov    0x8(%rdi),%edx
mov    $0x3,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0xc(%rdi)
mov    0x4(%rdi),%edx
mov    $0x2,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x8(%rdi)
mov    (%rdi),%edx
mov    $0x1,%ecx
cmp    %eax,%edx
jle    13df <insertion_sort+0x2df>
mov    %edx,0x4(%rdi)
xor    %ecx,%ecx
mov    %eax,(%rdi,%rcx,4)
ret

LLVM IR (-O0):
define void @insertion_sort(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32* %0, i32** %2
store i32 1, i32* %3
br label %6
6: ; preds = %50, %1
%7 = load i32, i32* %3
%8 = icmp slt i32 %7, 10
br i1 %8, label %9, label %53
9: ; preds = %6
%10 = load i32*, i32** %2
%11 = load i32, i32* %3
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds i32, i32* %10, i64 %12
%14 = load i32, i32* %13
store i32 %14, i32* %5
%15 = load i32, i32* %3
%16 = sub nsw i32 %15, 1
store i32 %16, i32* %4
br label %17
17: ; preds = %30, %9
%18 = load i32, i32* %4
%19 = icmp sge i32 %18, 0
br i1 %19, label %20, label %28
20: ; preds = %17
%21 = load i32*, i32** %2
%22 = load i32, i32* %4
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds i32, i32* %21, i64 %23
%25 = load i32, i32* %24
%26 = load i32, i32* %5
%27 = icmp sgt i32 %25, %26
br label %28
28: ; preds = %20, %17
%29 = phi i1 [ false, %17 ], [ %27, %20 ]
br i1 %29, label %30, label %43
30: ; preds = %28
%31 = load i32*, i32** %2
%32 = load i32, i32* %4
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i32, i32* %31, i64 %33
%35 = load i32, i32* %34
%36 = load i32*, i32** %2
%37 = load i32, i32* %4
%38 = add nsw i32 %37, 1
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i32, i32* %36, i64 %39
store i32 %35, i32* %40
%41 = load i32, i32* %4
%42 = add nsw i32 %41, -1
store i32 %42, i32* %4
br label %17
43: ; preds = %28
%44 = load i32, i32* %5
%45 = load i32*, i32** %2
%46 = load i32, i32* %4
%47 = add nsw i32 %46, 1
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i32, i32* %45, i64 %48
store i32 %44, i32* %49
br label %50
50: ; preds = %43
%51 = load i32, i32* %3
%52 = add nsw i32 %51, 1
store i32 %52, i32* %3
br label %6
53: ; preds = %6
ret void
}

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