int mc64qd_(int *ip, int *lenl, int *lenh, int *w, int *wlen, double *a,
            int *nval, double *val) {
  int i__1, i__2, i__3;
  int j, k, s;
  double ha;
  int ii, pos;
  double split[10];
  --a;
  --w;
  --lenh;
  --lenl;
  --ip;
  *nval = 0;
  i__1 = *wlen;
  for (k = 1; k <= i__1; ++k) {
    j = w[k];
    i__2 = ip[j] + lenh[j] - 1;
    for (ii = ip[j] + lenl[j]; ii <= i__2; ++ii) {
      ha = a[ii];
      if (*nval == 0) {
        split[0] = ha;
        *nval = 1;
      } else {
        for (s = *nval; s >= 1; --s) {
          if (split[s - 1] == ha) {
            goto L15;
          }
          if (split[s - 1] > ha) {
            pos = s + 1;
            goto L21;
          }
        }
        pos = 1;
      L21:
        i__3 = pos;
        for (s = *nval; s >= i__3; --s) {
          split[s] = split[s - 1];
        }
        split[pos - 1] = ha;
        ++(*nval);
      }
      if (*nval == 10) {
        goto L11;
      }
    L15:;
    }
  }
L11:
  if (*nval > 0) {
    *val = split[(*nval + 1) / 2 - 1];
  }
  return 0;
}


x86 assembly (clang, -O0):
<mc64qd_>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x30(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x8(%rbp)
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x34(%rbp)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x34(%rbp),%eax
jg     1337 <mc64qd_+0x237>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
movslq -0x40(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
movslq -0x40(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x38(%rbp),%eax
jg     1324 <mc64qd_+0x224>
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jne    1214 <mc64qd_+0x114>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    12fa <mc64qd_+0x1fa>
mov    0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x48(%rbp)
cmpl   $0x1,-0x48(%rbp)
jl     128b <mc64qd_+0x18b>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
ucomisd -0x50(%rbp),%xmm0
jne    124e <mc64qd_+0x14e>
jp     124e <mc64qd_+0x14e>
jmp    1311 <mc64qd_+0x211>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
ucomisd -0x50(%rbp),%xmm0
jbe    1278 <mc64qd_+0x178>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1292 <mc64qd_+0x192>
jmp    127d <mc64qd_+0x17d>
mov    -0x48(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x48(%rbp)
jmp    121d <mc64qd_+0x11d>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jl     12d9 <mc64qd_+0x1d9>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x48(%rbp),%rax
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
mov    -0x48(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x48(%rbp)
jmp    12a1 <mc64qd_+0x1a1>
movsd  -0x50(%rbp),%xmm0
mov    -0x58(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0xb0(%rbp,%rax,8)
ff ff
mov    0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x10(%rbp),%rax
cmpl   $0xa,(%rax)
jne    130c <mc64qd_+0x20c>
jmp    133c <mc64qd_+0x23c>
jmp    1311 <mc64qd_+0x211>
jmp    1316 <mc64qd_+0x216>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11cd <mc64qd_+0xcd>
jmp    1329 <mc64qd_+0x229>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    117e <mc64qd_+0x7e>
jmp    133c <mc64qd_+0x23c>
mov    0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1370 <mc64qd_+0x270>
mov    0x10(%rbp),%rax
mov    (%rax),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
sub    $0x1,%eax
cltq
movsd  -0xb0(%rbp,%rax,8),%xmm0
ff ff
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mc64qd_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x38(%rsp),%r10
movl   $0x0,(%r10)
mov    (%r8),%r11d
test   %r11d,%r11d
jle    1257 <mc64qd_+0x157>
mov    0x40(%rsp),%r8
add    $0x1,%r11
mov    $0x1,%r14d
xor    %r12d,%r12d
jmp    114d <mc64qd_+0x4d>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r14
cmp    %r11,%r14
je     1264 <mc64qd_+0x164>
movslq -0x4(%rcx,%r14,4),%rbp
mov    -0x4(%rdx,%rbp,4),%eax
mov    -0x4(%rsi,%rbp,4),%ebx
cmp    %eax,%ebx
jge    1140 <mc64qd_+0x40>
mov    -0x4(%rdi,%rbp,4),%ebp
add    %ebp,%eax
add    %ebp,%ebx
movslq %ebx,%r13
movslq %eax,%r15
jmp    1193 <mc64qd_+0x93>
xchg   %ax,%ax
add    $0xffffffff,%eax
movsd  %xmm0,-0x58(%rsp,%rax,8)
add    $0x1,%r12d
mov    %r12d,(%r10)
cmp    $0xa,%r12d
je     123a <mc64qd_+0x13a>
add    $0x1,%r13
cmp    %r15,%r13
jge    1140 <mc64qd_+0x40>
movsd  -0x8(%r9,%r13,8),%xmm0
test   %r12d,%r12d
je     11e0 <mc64qd_+0xe0>
mov    %r12d,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
test   %eax,%eax
jle    1200 <mc64qd_+0x100>
movsd  -0x60(%rsp,%rax,8),%xmm1
ucomisd %xmm0,%xmm1
jne    11c2 <mc64qd_+0xc2>
jnp    118a <mc64qd_+0x8a>
add    $0xffffffffffffffff,%rax
ucomisd %xmm0,%xmm1
jbe    11b0 <mc64qd_+0xb0>
add    $0x2,%eax
cmp    %eax,%r12d
jl     1170 <mc64qd_+0x70>
jmp    120e <mc64qd_+0x10e>
cs nopw 0x0(%rax,%rax,1)
movsd  %xmm0,-0x58(%rsp)
movl   $0x1,(%r10)
mov    $0x1,%r12d
jmp    118a <mc64qd_+0x8a>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x1,%eax
cmp    %eax,%r12d
jl     1170 <mc64qd_+0x70>
movslq %r12d,%rbx
mov    %eax,%ebp
add    $0x1,%rbx
nopw   0x0(%rax,%rax,1)
movsd  -0x68(%rsp,%rbx,8),%xmm1
movsd  %xmm1,-0x60(%rsp,%rbx,8)
add    $0xffffffffffffffff,%rbx
cmp    %rbp,%rbx
jg     1220 <mc64qd_+0x120>
jmp    1170 <mc64qd_+0x70>
mov    $0xa,%r12d
add    $0x1,%r12d
shr    %r12d
add    $0xffffffff,%r12d
movsd  -0x58(%rsp,%r12,8),%xmm0
movsd  %xmm0,(%r8)
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
test   %r12d,%r12d
jg     1240 <mc64qd_+0x140>
jmp    1257 <mc64qd_+0x157>

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

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