void sort(double **arr, int size, char u) {
  double temp[3];
  int i, j, k, l;
  double u0, u1;
  if (u == 'x') {
    u0 = arr[0][0];
    u1 = arr[size - 1][0];
    k = 0;
  } else {
    u0 = arr[0][1];
    u1 = arr[size - 1][1];
    k = 1;
  }
  if (u0 < u1) {
    for (i = 1; i < size - 1; ++i) {
      for (j = 1; j < size - 1; ++j) {
        if (arr[i][k] < arr[j][k]) {
          for (l = 0; l < 3; ++l) {
            temp[l] = arr[i][l];
            arr[i][l] = arr[j][l];
            arr[j][l] = temp[l];
          }
        }
      }
    }
  } else {
    for (i = 1; i < size - 1; ++i) {
      for (j = 1; j < size - 1; ++j) {
        if (arr[i][k] > arr[j][k]) {
          for (l = 0; l < 3; ++l) {
            temp[l] = arr[i][l];
            arr[i][l] = arr[j][l];
            arr[j][l] = temp[l];
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<sort>:
push   %rbp
mov    %rsp,%rbp
mov    %dl,%al
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %al,-0xd(%rbp)
movsbl -0xd(%rbp),%eax
cmp    $0x78,%eax
jne    1153 <sort+0x53>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x3c(%rbp)
jmp    1186 <sort+0x86>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x1,-0x3c(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12b5 <sort+0x1b5>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    12b0 <sort+0x1b0>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    129d <sort+0x19d>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    128a <sort+0x18a>
movl   $0x0,-0x40(%rbp)
cmpl   $0x3,-0x40(%rbp)
jge    1285 <sort+0x185>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x40(%rbp),%rax
movsd  %xmm0,-0x30(%rbp,%rax,8)
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x40(%rbp),%rax
movsd  -0x30(%rbp,%rax,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1205 <sort+0x105>
jmp    128a <sort+0x18a>
jmp    128f <sort+0x18f>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11b9 <sort+0xb9>
jmp    12a2 <sort+0x1a2>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    11a1 <sort+0xa1>
jmp    13cc <sort+0x2cc>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    13c7 <sort+0x2c7>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    13b4 <sort+0x2b4>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    13a1 <sort+0x2a1>
movl   $0x0,-0x40(%rbp)
cmpl   $0x3,-0x40(%rbp)
jge    139c <sort+0x29c>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x40(%rbp),%rax
movsd  %xmm0,-0x30(%rbp,%rax,8)
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x40(%rbp),%rax
movsd  -0x30(%rbp,%rax,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    131c <sort+0x21c>
jmp    13a1 <sort+0x2a1>
jmp    13a6 <sort+0x2a6>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    12d4 <sort+0x1d4>
jmp    13b9 <sort+0x2b9>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    12bc <sort+0x1bc>
jmp    13cc <sort+0x2cc>
pop    %rbp
ret

x86 assembly (clang, -O2):
<sort>:
mov    (%rdi),%rcx
cmp    $0x78,%dl
jne    1115 <sort+0x15>
movslq %esi,%rax
mov    -0x8(%rdi,%rax,8),%rdx
xor    %r9d,%r9d
jmp    112b <sort+0x2b>
add    $0x8,%rcx
movslq %esi,%rax
mov    -0x8(%rdi,%rax,8),%rdx
add    $0x8,%rdx
mov    $0x1,%r9d
movsd  (%rdx),%xmm0
ucomisd (%rcx),%xmm0
jbe    11c5 <sort+0xc5>
cmp    $0x3,%esi
jl     1255 <sort+0x155>
add    $0xffffffff,%esi
mov    $0x1,%r8d
jmp    115d <sort+0x5d>
nopl   (%rax)
add    $0x1,%r8
cmp    %rsi,%r8
je     1255 <sort+0x155>
mov    (%rdi,%r8,8),%rdx
mov    $0x1,%ecx
jmp    1179 <sort+0x79>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %rcx,%rsi
je     1150 <sort+0x50>
mov    (%rdi,%rcx,8),%rax
movsd  (%rax,%r9,8),%xmm0
ucomisd (%rdx,%r9,8),%xmm0
jbe    1170 <sort+0x70>
movsd  (%rdx),%xmm0
movsd  (%rax),%xmm1
movsd  %xmm1,(%rdx)
movsd  %xmm0,(%rax)
movsd  0x8(%rdx),%xmm0
movsd  0x8(%rax),%xmm1
movsd  %xmm1,0x8(%rdx)
movsd  %xmm0,0x8(%rax)
movsd  0x10(%rdx),%xmm0
movsd  0x10(%rax),%xmm1
movsd  %xmm1,0x10(%rdx)
movsd  %xmm0,0x10(%rax)
jmp    1170 <sort+0x70>
cmp    $0x3,%esi
jl     1255 <sort+0x155>
add    $0xffffffff,%esi
mov    $0x1,%r8d
jmp    11e9 <sort+0xe9>
nopl   0x0(%rax)
add    $0x1,%r8
cmp    %rsi,%r8
je     1255 <sort+0x155>
mov    (%rdi,%r8,8),%rdx
mov    $0x1,%ecx
jmp    1209 <sort+0x109>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rcx
cmp    %rcx,%rsi
je     11e0 <sort+0xe0>
movsd  (%rdx,%r9,8),%xmm0
mov    (%rdi,%rcx,8),%rax
ucomisd (%rax,%r9,8),%xmm0
jbe    1200 <sort+0x100>
movsd  (%rdx),%xmm0
movsd  (%rax),%xmm1
movsd  %xmm1,(%rdx)
movsd  %xmm0,(%rax)
movsd  0x8(%rdx),%xmm0
movsd  0x8(%rax),%xmm1
movsd  %xmm1,0x8(%rdx)
movsd  %xmm0,0x8(%rax)
movsd  0x10(%rdx),%xmm0
movsd  0x10(%rax),%xmm1
movsd  %xmm1,0x10(%rdx)
movsd  %xmm0,0x10(%rax)
jmp    1200 <sort+0x100>
ret

LLVM IR (-O0):
define void @sort(double** %0, i32 %1, i8 signext %2) {
%4 = alloca double**
%5 = alloca i32
%6 = alloca i8
%7 = alloca [3 x double]
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca double
%13 = alloca double
store double** %0, double*** %4
store i32 %1, i32* %5
store i8 %2, i8* %6
%14 = load i8, i8* %6
%15 = sext i8 %14 to i32
%16 = icmp eq i32 %15, 120
br i1 %16, label %17, label %31
17: ; preds = %3
%18 = load double**, double*** %4
%19 = getelementptr inbounds double*, double** %18, i64 0
%20 = load double*, double** %19
%21 = getelementptr inbounds double, double* %20, i64 0
%22 = load double, double* %21
store double %22, double* %12
%23 = load double**, double*** %4
%24 = load i32, i32* %5
%25 = sub nsw i32 %24, 1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds double*, double** %23, i64 %26
%28 = load double*, double** %27
%29 = getelementptr inbounds double, double* %28, i64 0
%30 = load double, double* %29
store double %30, double* %13
store i32 0, i32* %10
br label %45
31: ; preds = %3
%32 = load double**, double*** %4
%33 = getelementptr inbounds double*, double** %32, i64 0
%34 = load double*, double** %33
%35 = getelementptr inbounds double, double* %34, i64 1
%36 = load double, double* %35
store double %36, double* %12
%37 = load double**, double*** %4
%38 = load i32, i32* %5
%39 = sub nsw i32 %38, 1
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds double*, double** %37, i64 %40
%42 = load double*, double** %41
%43 = getelementptr inbounds double, double* %42, i64 1
%44 = load double, double* %43
store double %44, double* %13
store i32 1, i32* %10
br label %45
45: ; preds = %31, %17
%46 = load double, double* %12
%47 = load double, double* %13
%48 = fcmp olt double %46, %47
br i1 %48, label %49, label %140
49: ; preds = %45
store i32 1, i32* %8
br label %50
50: ; preds = %136, %49
%51 = load i32, i32* %8
%52 = load i32, i32* %5
%53 = sub nsw i32 %52, 1
%54 = icmp slt i32 %51, %53
br i1 %54, label %55, label %139
55: ; preds = %50
store i32 1, i32* %9
br label %56
56: ; preds = %132, %55
%57 = load i32, i32* %9
%58 = load i32, i32* %5
%59 = sub nsw i32 %58, 1
%60 = icmp slt i32 %57, %59
br i1 %60, label %61, label %135
61: ; preds = %56
%62 = load double**, double*** %4
%63 = load i32, i32* %8
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds double*, double** %62, i64 %64
%66 = load double*, double** %65
%67 = load i32, i32* %10
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds double, double* %66, i64 %68
%70 = load double, double* %69
%71 = load double**, double*** %4
%72 = load i32, i32* %9
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double*, double** %71, i64 %73
%75 = load double*, double** %74
%76 = load i32, i32* %10
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds double, double* %75, i64 %77
%79 = load double, double* %78
%80 = fcmp olt double %70, %79
br i1 %80, label %81, label %131
81: ; preds = %61
store i32 0, i32* %11
br label %82
82: ; preds = %127, %81
%83 = load i32, i32* %11
%84 = icmp slt i32 %83, 3
br i1 %84, label %85, label %130
85: ; preds = %82
%86 = load double**, double*** %4
%87 = load i32, i32* %8
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds double*, double** %86, i64 %88
%90 = load double*, double** %89
%91 = load i32, i32* %11
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds double, double* %90, i64 %92
%94 = load double, double* %93
%95 = load i32, i32* %11
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds [3 x double], [3 x double]* %7, i64 0, i64 %96
store double %94, double* %97
%98 = load double**, double*** %4
%99 = load i32, i32* %9
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds double*, double** %98, i64 %100
%102 = load double*, double** %101
%103 = load i32, i32* %11
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds double, double* %102, i64 %104
%106 = load double, double* %105
%107 = load double**, double*** %4
%108 = load i32, i32* %8
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds double*, double** %107, i64 %109
%111 = load double*, double** %110
%112 = load i32, i32* %11
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds double, double* %111, i64 %113
store double %106, double* %114
%115 = load i32, i32* %11
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds [3 x double], [3 x double]* %7, i64 0, i64 %116
%118 = load double, double* %117
%119 = load double**, double*** %4
%120 = load i32, i32* %9
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds double*, double** %119, i64 %121
%123 = load double*, double** %122
%124 = load i32, i32* %11
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %123, i64 %125
store double %118, double* %126
br label %127
127: ; preds = %85
%128 = load i32, i32* %11
%129 = add nsw i32 %128, 1
store i32 %129, i32* %11
br label %82
130: ; preds = %82
br label %131
131: ; preds = %130, %61
br label %132
132: ; preds = %131
%133 = load i32, i32* %9
%134 = add nsw i32 %133, 1
store i32 %134, i32* %9
br label %56
135: ; preds = %56
br label %136
136: ; preds = %135
%137 = load i32, i32* %8
%138 = add nsw i32 %137, 1
store i32 %138, i32* %8
br label %50
139: ; preds = %50
br label %231
140: ; preds = %45
store i32 1, i32* %8
br label %141
141: ; preds = %227, %140
%142 = load i32, i32* %8
%143 = load i32, i32* %5
%144 = sub nsw i32 %143, 1
%145 = icmp slt i32 %142, %144
br i1 %145, label %146, label %230
146: ; preds = %141
store i32 1, i32* %9
br label %147
147: ; preds = %223, %146
%148 = load i32, i32* %9
%149 = load i32, i32* %5
%150 = sub nsw i32 %149, 1
%151 = icmp slt i32 %148, %150
br i1 %151, label %152, label %226
152: ; preds = %147
%153 = load double**, double*** %4
%154 = load i32, i32* %8
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds double*, double** %153, i64 %155
%157 = load double*, double** %156
%158 = load i32, i32* %10
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds double, double* %157, i64 %159
%161 = load double, double* %160
%162 = load double**, double*** %4
%163 = load i32, i32* %9
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double*, double** %162, i64 %164
%166 = load double*, double** %165
%167 = load i32, i32* %10
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds double, double* %166, i64 %168
%170 = load double, double* %169
%171 = fcmp ogt double %161, %170
br i1 %171, label %172, label %222
172: ; preds = %152
store i32 0, i32* %11
br label %173
173: ; preds = %218, %172
%174 = load i32, i32* %11
%175 = icmp slt i32 %174, 3
br i1 %175, label %176, label %221
176: ; preds = %173
%177 = load double**, double*** %4
%178 = load i32, i32* %8
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double*, double** %177, i64 %179
%181 = load double*, double** %180
%182 = load i32, i32* %11
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds double, double* %181, i64 %183
%185 = load double, double* %184
%186 = load i32, i32* %11
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds [3 x double], [3 x double]* %7, i64 0, i64 %187
store double %185, double* %188
%189 = load double**, double*** %4
%190 = load i32, i32* %9
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds double*, double** %189, i64 %191
%193 = load double*, double** %192
%194 = load i32, i32* %11
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds double, double* %193, i64 %195
%197 = load double, double* %196
%198 = load double**, double*** %4
%199 = load i32, i32* %8
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds double*, double** %198, i64 %200
%202 = load double*, double** %201
%203 = load i32, i32* %11
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds double, double* %202, i64 %204
store double %197, double* %205
%206 = load i32, i32* %11
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [3 x double], [3 x double]* %7, i64 0, i64 %207
%209 = load double, double* %208
%210 = load double**, double*** %4
%211 = load i32, i32* %9
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds double*, double** %210, i64 %212
%214 = load double*, double** %213
%215 = load i32, i32* %11
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds double, double* %214, i64 %216
store double %209, double* %217
br label %218
218: ; preds = %176
%219 = load i32, i32* %11
%220 = add nsw i32 %219, 1
store i32 %220, i32* %11
br label %173
221: ; preds = %173
br label %222
222: ; preds = %221, %152
br label %223
223: ; preds = %222
%224 = load i32, i32* %9
%225 = add nsw i32 %224, 1
store i32 %225, i32* %9
br label %147
226: ; preds = %147
br label %227
227: ; preds = %226
%228 = load i32, i32* %8
%229 = add nsw i32 %228, 1
store i32 %229, i32* %8
br label %141
230: ; preds = %141
br label %231
231: ; preds = %230, %139
ret void
}

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