void shellsort_const(int list[], int n) {
  int i, j, k, r, temp, increment, b1, b2, b3, b4, t1, t2, t3, t4;
  int fi, fj, fk, fr, ftemp, fincrement, fb1, fb2, fb3, fb4, ft1, ft2, ft3, ft4;
  int flist[10000];
  static int incSequence[] = {1750, 701, 301, 132, 57, 23, 10, 4, 1};
  k = 0;
  fk = 0;
  b2 = 1;
  fb2 = 1;
  while (k < sizeof(incSequence) / sizeof(int)) {
    k++;
    if (incSequence[k] * 2 > n)
      b2 = 0;
    if (!(incSequence[k] * 2 > n))
      b2 = 1;
    if (b2) {
      increment = incSequence[k];
      i = increment;
      while (i < n) {
        temp = list[i];
        j = i - increment;
        b1 = 1;
        r = 0;
        while (r < 16) {
          b3 = (j >= 0);
          b4 = (list[j] <= temp);
          t1 = 0;
          if (b3 && b1 && b4)
            b1 = t1;
          if (!(b3 && b1 && b4))
            b1 = b1;
          t2 = list[j];
          t3 = j - increment;
          t4 = list[j + increment];
          if (b3 && b1) {
            list[j + increment] = t2;
            j = t3;
          }
          if (!(b3 && b1)) {
            list[j + increment] = t4;
            j = j;
          }
          r++;
        }
        list[j + increment] = temp;
        i++;
      }
    }
    if (!b2) {
      fincrement = incSequence[k];
      fi = fincrement;
      while (fi < n) {
        ftemp = list[fi];
        fj = fi - fincrement;
        fb1 = 1;
        fr = 0;
        while (fr < 16) {
          fb3 = (fj >= 0);
          fb4 = (list[fj] <= ftemp);
          ft1 = 0;
          if (fb3 && fb1 && fb4)
            fb1 = ft1;
          if (!(fb3 && fb1 && fb4))
            fb1 = fb1;
          ft2 = list[fj];
          ft3 = fj - fincrement;
          ft4 = list[fj + fincrement];
          if (fb3 && fb1) {
            flist[fj + fincrement] = ft2;
            fj = ft3;
          }
          if (!(fb3 && fb1)) {
            flist[fj + fincrement] = ft4;
            fj = fj;
          }
          fr++;
        }
        flist[fj + fincrement] = ftemp;
        fi++;
      }
    }
  }
}


x86 assembly (clang, -O0):
<shellsort_const>:
push   %rbp
mov    %rsp,%rbp
sub    $0x9c40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x50(%rbp)
movl   $0x1,-0x2c(%rbp)
movl   $0x1,-0x64(%rbp)
movslq -0x18(%rbp),%rax
cmp    $0x9,%rax
jae    149f <shellsort_const+0x39f>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
movslq -0x18(%rbp),%rcx
lea    0x2ee0(%rip),%rax
mov    (%rax,%rcx,4),%eax
shl    $0x1,%eax
cmp    -0xc(%rbp),%eax
jle    1166 <shellsort_const+0x66>
movl   $0x0,-0x2c(%rbp)
movslq -0x18(%rbp),%rcx
lea    0x2ebf(%rip),%rax
mov    (%rax,%rcx,4),%eax
shl    $0x1,%eax
cmp    -0xc(%rbp),%eax
jg     1187 <shellsort_const+0x87>
movl   $0x1,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1312 <shellsort_const+0x212>
movslq -0x18(%rbp),%rcx
lea    0x2e94(%rip),%rax
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    130d <shellsort_const+0x20d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x14(%rbp)
movl   $0x1,-0x28(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x10,-0x1c(%rbp)
jge    12ec <shellsort_const+0x1ec>
cmpl   $0x0,-0x14(%rbp)
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x20(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     1236 <shellsort_const+0x136>
cmpl   $0x0,-0x28(%rbp)
je     1236 <shellsort_const+0x136>
cmpl   $0x0,-0x34(%rbp)
je     1236 <shellsort_const+0x136>
mov    -0x38(%rbp),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     1254 <shellsort_const+0x154>
cmpl   $0x0,-0x28(%rbp)
je     1254 <shellsort_const+0x154>
cmpl   $0x0,-0x34(%rbp)
jne    125a <shellsort_const+0x15a>
mov    -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x14(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x44(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     12b1 <shellsort_const+0x1b1>
cmpl   $0x0,-0x28(%rbp)
je     12b1 <shellsort_const+0x1b1>
mov    -0x3c(%rbp),%edx
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     12c5 <shellsort_const+0x1c5>
cmpl   $0x0,-0x28(%rbp)
jne    12de <shellsort_const+0x1de>
mov    -0x44(%rbp),%edx
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11d9 <shellsort_const+0xd9>
mov    -0x20(%rbp),%edx
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11a8 <shellsort_const+0xa8>
jmp    1312 <shellsort_const+0x212>
cmpl   $0x0,-0x2c(%rbp)
jne    149a <shellsort_const+0x39a>
movslq -0x18(%rbp),%rcx
lea    0x2d09(%rip),%rax
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1495 <shellsort_const+0x395>
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x58(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x5c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
movl   $0x1,-0x60(%rbp)
movl   $0x0,-0x54(%rbp)
cmpl   $0x10,-0x54(%rbp)
jge    1475 <shellsort_const+0x375>
cmpl   $0x0,-0x4c(%rbp)
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x58(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x6c(%rbp)
movl   $0x0,-0x70(%rbp)
cmpl   $0x0,-0x68(%rbp)
je     13c1 <shellsort_const+0x2c1>
cmpl   $0x0,-0x60(%rbp)
je     13c1 <shellsort_const+0x2c1>
cmpl   $0x0,-0x6c(%rbp)
je     13c1 <shellsort_const+0x2c1>
mov    -0x70(%rbp),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x68(%rbp)
je     13df <shellsort_const+0x2df>
cmpl   $0x0,-0x60(%rbp)
je     13df <shellsort_const+0x2df>
cmpl   $0x0,-0x6c(%rbp)
jne    13e5 <shellsort_const+0x2e5>
mov    -0x60(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x74(%rbp)
mov    -0x4c(%rbp),%eax
sub    -0x5c(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
add    -0x5c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
cmpl   $0x0,-0x68(%rbp)
je     143b <shellsort_const+0x33b>
cmpl   $0x0,-0x60(%rbp)
je     143b <shellsort_const+0x33b>
mov    -0x74(%rbp),%ecx
mov    -0x4c(%rbp),%eax
add    -0x5c(%rbp),%eax
cltq
mov    %ecx,-0x9cc0(%rbp,%rax,4)
mov    -0x78(%rbp),%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x0,-0x68(%rbp)
je     144f <shellsort_const+0x34f>
cmpl   $0x0,-0x60(%rbp)
jne    1467 <shellsort_const+0x367>
mov    -0x7c(%rbp),%ecx
mov    -0x4c(%rbp),%eax
add    -0x5c(%rbp),%eax
cltq
mov    %ecx,-0x9cc0(%rbp,%rax,4)
mov    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1364 <shellsort_const+0x264>
mov    -0x58(%rbp),%ecx
mov    -0x4c(%rbp),%eax
add    -0x5c(%rbp),%eax
cltq
mov    %ecx,-0x9cc0(%rbp,%rax,4)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1333 <shellsort_const+0x233>
jmp    149a <shellsort_const+0x39a>
jmp    112e <shellsort_const+0x2e>
add    $0x9c40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<shellsort_const>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
movslq %esi,%r10
xor    %r14d,%r14d
lea    0xee9(%rip),%r8
xor    %r9d,%r9d
jmp    112a <shellsort_const+0x2a>
nopl   0x0(%rax)
cmp    $0x9,%r9
je     11b2 <shellsort_const+0xb2>
mov    0x4(%r8,%r9,4),%r15d
add    $0x1,%r9
lea    (%r15,%r15,1),%eax
cmp    %esi,%eax
jg     1120 <shellsort_const+0x20>
cmp    %esi,%r15d
jge    1120 <shellsort_const+0x20>
movslq %r15d,%r11
jmp    1163 <shellsort_const+0x63>
cs nopw 0x0(%rax,%rax,1)
nop
add    %r15d,%r13d
movslq %r13d,%rax
mov    %r12d,(%rdi,%rax,4)
add    $0x1,%r11
cmp    %r10,%r11
je     1120 <shellsort_const+0x20>
mov    (%rdi,%r11,4),%r12d
mov    %r11d,%r13d
sub    %r15d,%r13d
mov    $0x1,%ebp
mov    $0x10,%ecx
jmp    1185 <shellsort_const+0x85>
nopl   0x0(%rax)
add    $0xffffffff,%ecx
je     1150 <shellsort_const+0x50>
mov    %ebp,%eax
movslq %r13d,%rbx
mov    (%rdi,%rbx,4),%edx
cmp    %r12d,%edx
cmovle %r14d,%ebp
test   %eax,%eax
cmove  %eax,%ebp
test   %ebx,%ebx
cmovs  %eax,%ebp
js     1180 <shellsort_const+0x80>
test   %ebp,%ebp
je     1180 <shellsort_const+0x80>
lea    (%r15,%r13,1),%eax
cltq
sub    %r15d,%r13d
mov    %edx,(%rdi,%rax,4)
jmp    1180 <shellsort_const+0x80>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@shellsort_const.incSequence = internal global [9 x i32] [i32 1750, i32 701, i32 301, i32 132, i32 57, i32 23, i32 10, i32 4, i32 1]
define void @shellsort_const(i32* %0, i32 %1) {
%3 = alloca i32*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%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
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca [10000 x i32]
store i32* %0, i32** %3
store i32 %1, i32* %4
store i32 0, i32* %7
store i32 0, i32* %21
store i32 1, i32* %12
store i32 1, i32* %26
br label %34
34: ; preds = %289, %2
%35 = load i32, i32* %7
%36 = sext i32 %35 to i64
%37 = icmp ult i64 %36, 9
br i1 %37, label %38, label %290
38: ; preds = %34
%39 = load i32, i32* %7
%40 = add nsw i32 %39, 1
store i32 %40, i32* %7
%41 = load i32, i32* %7
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [9 x i32], [9 x i32]* @shellsort_const.incSequence, i64 0, i64 %42
%44 = load i32, i32* %43
%45 = mul nsw i32 %44, 2
%46 = load i32, i32* %4
%47 = icmp sgt i32 %45, %46
br i1 %47, label %48, label %49
48: ; preds = %38
store i32 0, i32* %12
br label %49
49: ; preds = %48, %38
%50 = load i32, i32* %7
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [9 x i32], [9 x i32]* @shellsort_const.incSequence, i64 0, i64 %51
%53 = load i32, i32* %52
%54 = mul nsw i32 %53, 2
%55 = load i32, i32* %4
%56 = icmp sgt i32 %54, %55
br i1 %56, label %58, label %57
57: ; preds = %49
store i32 1, i32* %12
br label %58
58: ; preds = %57, %49
%59 = load i32, i32* %12
%60 = icmp ne i32 %59, 0
br i1 %60, label %61, label %175
61: ; preds = %58
%62 = load i32, i32* %7
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [9 x i32], [9 x i32]* @shellsort_const.incSequence, i64 0, i64 %63
%65 = load i32, i32* %64
store i32 %65, i32* %10
%66 = load i32, i32* %10
store i32 %66, i32* %5
br label %67
67: ; preds = %164, %61
%68 = load i32, i32* %5
%69 = load i32, i32* %4
%70 = icmp slt i32 %68, %69
br i1 %70, label %71, label %174
71: ; preds = %67
%72 = load i32*, i32** %3
%73 = load i32, i32* %5
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32, i32* %72, i64 %74
%76 = load i32, i32* %75
store i32 %76, i32* %9
%77 = load i32, i32* %5
%78 = load i32, i32* %10
%79 = sub nsw i32 %77, %78
store i32 %79, i32* %6
store i32 1, i32* %11
store i32 0, i32* %8
br label %80
80: ; preds = %161, %71
%81 = load i32, i32* %8
%82 = icmp slt i32 %81, 16
br i1 %82, label %83, label %164
83: ; preds = %80
%84 = load i32, i32* %6
%85 = icmp sge i32 %84, 0
%86 = zext i1 %85 to i32
store i32 %86, i32* %13
%87 = load i32*, i32** %3
%88 = load i32, i32* %6
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i32, i32* %87, i64 %89
%91 = load i32, i32* %90
%92 = load i32, i32* %9
%93 = icmp sle i32 %91, %92
%94 = zext i1 %93 to i32
store i32 %94, i32* %14
store i32 0, i32* %15
%95 = load i32, i32* %13
%96 = icmp ne i32 %95, 0
br i1 %96, label %97, label %105
97: ; preds = %83
%98 = load i32, i32* %11
%99 = icmp ne i32 %98, 0
br i1 %99, label %100, label %105
100: ; preds = %97
%101 = load i32, i32* %14
%102 = icmp ne i32 %101, 0
br i1 %102, label %103, label %105
103: ; preds = %100
%104 = load i32, i32* %15
store i32 %104, i32* %11
br label %105
105: ; preds = %103, %100, %97, %83
%106 = load i32, i32* %13
%107 = icmp ne i32 %106, 0
br i1 %107, label %108, label %114
108: ; preds = %105
%109 = load i32, i32* %11
%110 = icmp ne i32 %109, 0
br i1 %110, label %111, label %114
111: ; preds = %108
%112 = load i32, i32* %14
%113 = icmp ne i32 %112, 0
br i1 %113, label %116, label %114
114: ; preds = %111, %108, %105
%115 = load i32, i32* %11
store i32 %115, i32* %11
br label %116
116: ; preds = %114, %111
%117 = load i32*, i32** %3
%118 = load i32, i32* %6
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i32, i32* %117, i64 %119
%121 = load i32, i32* %120
store i32 %121, i32* %16
%122 = load i32, i32* %6
%123 = load i32, i32* %10
%124 = sub nsw i32 %122, %123
store i32 %124, i32* %17
%125 = load i32*, i32** %3
%126 = load i32, i32* %6
%127 = load i32, i32* %10
%128 = add nsw i32 %126, %127
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i32, i32* %125, i64 %129
%131 = load i32, i32* %130
store i32 %131, i32* %18
%132 = load i32, i32* %13
%133 = icmp ne i32 %132, 0
br i1 %133, label %134, label %146
134: ; preds = %116
%135 = load i32, i32* %11
%136 = icmp ne i32 %135, 0
br i1 %136, label %137, label %146
137: ; preds = %134
%138 = load i32, i32* %16
%139 = load i32*, i32** %3
%140 = load i32, i32* %6
%141 = load i32, i32* %10
%142 = add nsw i32 %140, %141
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds i32, i32* %139, i64 %143
store i32 %138, i32* %144
%145 = load i32, i32* %17
store i32 %145, i32* %6
br label %146
146: ; preds = %137, %134, %116
%147 = load i32, i32* %13
%148 = icmp ne i32 %147, 0
br i1 %148, label %149, label %152
149: ; preds = %146
%150 = load i32, i32* %11
%151 = icmp ne i32 %150, 0
br i1 %151, label %161, label %152
152: ; preds = %149, %146
%153 = load i32, i32* %18
%154 = load i32*, i32** %3
%155 = load i32, i32* %6
%156 = load i32, i32* %10
%157 = add nsw i32 %155, %156
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds i32, i32* %154, i64 %158
store i32 %153, i32* %159
%160 = load i32, i32* %6
store i32 %160, i32* %6
br label %161
161: ; preds = %152, %149
%162 = load i32, i32* %8
%163 = add nsw i32 %162, 1
store i32 %163, i32* %8
br label %80
164: ; preds = %80
%165 = load i32, i32* %9
%166 = load i32*, i32** %3
%167 = load i32, i32* %6
%168 = load i32, i32* %10
%169 = add nsw i32 %167, %168
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds i32, i32* %166, i64 %170
store i32 %165, i32* %171
%172 = load i32, i32* %5
%173 = add nsw i32 %172, 1
store i32 %173, i32* %5
br label %67
174: ; preds = %67
br label %175
175: ; preds = %174, %58
%176 = load i32, i32* %12
%177 = icmp ne i32 %176, 0
br i1 %177, label %289, label %178
178: ; preds = %175
%179 = load i32, i32* %7
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds [9 x i32], [9 x i32]* @shellsort_const.incSequence, i64 0, i64 %180
%182 = load i32, i32* %181
store i32 %182, i32* %24
%183 = load i32, i32* %24
store i32 %183, i32* %19
br label %184
184: ; preds = %279, %178
%185 = load i32, i32* %19
%186 = load i32, i32* %4
%187 = icmp slt i32 %185, %186
br i1 %187, label %188, label %288
188: ; preds = %184
%189 = load i32*, i32** %3
%190 = load i32, i32* %19
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds i32, i32* %189, i64 %191
%193 = load i32, i32* %192
store i32 %193, i32* %23
%194 = load i32, i32* %19
%195 = load i32, i32* %24
%196 = sub nsw i32 %194, %195
store i32 %196, i32* %20
store i32 1, i32* %25
store i32 0, i32* %22
br label %197
197: ; preds = %276, %188
%198 = load i32, i32* %22
%199 = icmp slt i32 %198, 16
br i1 %199, label %200, label %279
200: ; preds = %197
%201 = load i32, i32* %20
%202 = icmp sge i32 %201, 0
%203 = zext i1 %202 to i32
store i32 %203, i32* %27
%204 = load i32*, i32** %3
%205 = load i32, i32* %20
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds i32, i32* %204, i64 %206
%208 = load i32, i32* %207
%209 = load i32, i32* %23
%210 = icmp sle i32 %208, %209
%211 = zext i1 %210 to i32
store i32 %211, i32* %28
store i32 0, i32* %29
%212 = load i32, i32* %27
%213 = icmp ne i32 %212, 0
br i1 %213, label %214, label %222
214: ; preds = %200
%215 = load i32, i32* %25
%216 = icmp ne i32 %215, 0
br i1 %216, label %217, label %222
217: ; preds = %214
%218 = load i32, i32* %28
%219 = icmp ne i32 %218, 0
br i1 %219, label %220, label %222
220: ; preds = %217
%221 = load i32, i32* %29
store i32 %221, i32* %25
br label %222
222: ; preds = %220, %217, %214, %200
%223 = load i32, i32* %27
%224 = icmp ne i32 %223, 0
br i1 %224, label %225, label %231
225: ; preds = %222
%226 = load i32, i32* %25
%227 = icmp ne i32 %226, 0
br i1 %227, label %228, label %231
228: ; preds = %225
%229 = load i32, i32* %28
%230 = icmp ne i32 %229, 0
br i1 %230, label %233, label %231
231: ; preds = %228, %225, %222
%232 = load i32, i32* %25
store i32 %232, i32* %25
br label %233
233: ; preds = %231, %228
%234 = load i32*, i32** %3
%235 = load i32, i32* %20
%236 = sext i32 %235 to i64
%237 = getelementptr inbounds i32, i32* %234, i64 %236
%238 = load i32, i32* %237
store i32 %238, i32* %30
%239 = load i32, i32* %20
%240 = load i32, i32* %24
%241 = sub nsw i32 %239, %240
store i32 %241, i32* %31
%242 = load i32*, i32** %3
%243 = load i32, i32* %20
%244 = load i32, i32* %24
%245 = add nsw i32 %243, %244
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds i32, i32* %242, i64 %246
%248 = load i32, i32* %247
store i32 %248, i32* %32
%249 = load i32, i32* %27
%250 = icmp ne i32 %249, 0
br i1 %250, label %251, label %262
251: ; preds = %233
%252 = load i32, i32* %25
%253 = icmp ne i32 %252, 0
br i1 %253, label %254, label %262
254: ; preds = %251
%255 = load i32, i32* %30
%256 = load i32, i32* %20
%257 = load i32, i32* %24
%258 = add nsw i32 %256, %257
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [10000 x i32], [10000 x i32]* %33, i64 0, i64 %259
store i32 %255, i32* %260
%261 = load i32, i32* %31
store i32 %261, i32* %20
br label %262
262: ; preds = %254, %251, %233
%263 = load i32, i32* %27
%264 = icmp ne i32 %263, 0
br i1 %264, label %265, label %268
265: ; preds = %262
%266 = load i32, i32* %25
%267 = icmp ne i32 %266, 0
br i1 %267, label %276, label %268
268: ; preds = %265, %262
%269 = load i32, i32* %32
%270 = load i32, i32* %20
%271 = load i32, i32* %24
%272 = add nsw i32 %270, %271
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [10000 x i32], [10000 x i32]* %33, i64 0, i64 %273
store i32 %269, i32* %274
%275 = load i32, i32* %20
store i32 %275, i32* %20
br label %276
276: ; preds = %268, %265
%277 = load i32, i32* %22
%278 = add nsw i32 %277, 1
store i32 %278, i32* %22
br label %197
279: ; preds = %197
%280 = load i32, i32* %23
%281 = load i32, i32* %20
%282 = load i32, i32* %24
%283 = add nsw i32 %281, %282
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds [10000 x i32], [10000 x i32]* %33, i64 0, i64 %284
store i32 %280, i32* %285
%286 = load i32, i32* %19
%287 = add nsw i32 %286, 1
store i32 %287, i32* %19
br label %184
288: ; preds = %184
br label %289
289: ; preds = %288, %175
br label %34
290: ; preds = %34
ret void
}

LLVM IR (-O2):
@shellsort_const.incSequence = internal unnamed_addr constant [9 x i32] [i32 1750, i32 701, i32 301, i32 132, i32 57, i32 23, i32 10, i32 4, i32 1]
define void @shellsort_const(i32* nocapture %0, i32 %1) {
%3 = sext i32 %1 to i64
br label %4
4: ; preds = %2, %51
%5 = phi i64 [ 0, %2 ], [ %6, %51 ]
%6 = add nuw nsw i64 %5, 1
%7 = getelementptr inbounds [9 x i32], [9 x i32]* @shellsort_const.incSequence, i64 0, i64 %6
%8 = load i32, i32* %7
%9 = shl nsw i32 %8, 1
%10 = icmp sle i32 %9, %1
%11 = icmp slt i32 %8, %1
%12 = and i1 %10, %11
br i1 %12, label %13, label %51
13: ; preds = %4
%14 = sext i32 %8 to i64
br label %15
15: ; preds = %13, %45
%16 = phi i64 [ %14, %13 ], [ %49, %45 ]
%17 = getelementptr inbounds i32, i32* %0, i64 %16
%18 = load i32, i32* %17
%19 = trunc i64 %16 to i32
%20 = sub i32 %19, %8
br label %21
21: ; preds = %15, %41
%22 = phi i32 [ %20, %15 ], [ %42, %41 ]
%23 = phi i32 [ 0, %15 ], [ %43, %41 ]
%24 = phi i32 [ 1, %15 ], [ %33, %41 ]
%25 = icmp sgt i32 %22, -1
%26 = sext i32 %22 to i64
%27 = getelementptr inbounds i32, i32* %0, i64 %26
%28 = load i32, i32* %27
%29 = icmp sle i32 %28, %18
%30 = icmp ne i32 %24, 0
%31 = select i1 %25, i1 %30, i1 false
%32 = select i1 %31, i1 %29, i1 false
%33 = select i1 %32, i32 0, i32 %24
%34 = icmp ne i32 %33, 0
%35 = select i1 %25, i1 %34, i1 false
br i1 %35, label %36, label %41
36: ; preds = %21
%37 = add nsw i32 %22, %8
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds i32, i32* %0, i64 %38
%40 = sub nsw i32 %22, %8
store i32 %28, i32* %39
br label %41
41: ; preds = %21, %36
%42 = phi i32 [ %40, %36 ], [ %22, %21 ]
%43 = add nuw nsw i32 %23, 1
%44 = icmp eq i32 %43, 16
br i1 %44, label %45, label %21
45: ; preds = %41
%46 = add nsw i32 %42, %8
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds i32, i32* %0, i64 %47
store i32 %18, i32* %48
%49 = add nsw i64 %16, 1
%50 = icmp eq i64 %49, %3
br i1 %50, label %51, label %15
51: ; preds = %45, %4
%52 = icmp eq i64 %6, 9
br i1 %52, label %53, label %4
53: ; preds = %51
ret void
}