int strmaxvych(double *arr, int a, int b) {
  int i, j, str, stolb;
  str = 0;
  stolb = 0;
  for (i = 0; i < a; ++i) {
    for (j = 0; j < b; ++j) {
      if (arr[a * i + j] > arr[a * str + stolb]) {
        str = i;
        stolb = j;
      }
    }
  }
  for (int i = 0; i < a; ++i) {
    if (i == str)
      continue;
    for (int j = 0; j < b; ++j) {
      arr[i * a + j] -= arr[str * a + j];
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<strmaxvych>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11a6 <strmaxvych+0xa6>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1193 <strmaxvych+0x93>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1180 <strmaxvych+0x80>
mov    -0x14(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    1185 <strmaxvych+0x85>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1136 <strmaxvych+0x36>
jmp    1198 <strmaxvych+0x98>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1123 <strmaxvych+0x23>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1233 <strmaxvych+0x133>
mov    -0x24(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    11ca <strmaxvych+0xca>
jmp    1225 <strmaxvych+0x125>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1220 <strmaxvych+0x120>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11d1 <strmaxvych+0xd1>
jmp    1225 <strmaxvych+0x125>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11ad <strmaxvych+0xad>
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<strmaxvych>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %esi,%esi
jle    13fd <strmaxvych+0x2fd>
mov    %esi,%r11d
mov    %edx,%r13d
mov    %r13d,%r9d
and    $0xfffffffe,%r9d
lea    0x8(%rdi),%r15
lea    0x0(,%r11,8),%r8
xor    %r10d,%r10d
xor    %eax,%eax
xor    %ebp,%ebp
jmp    1150 <strmaxvych+0x50>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r10
add    %r8,%r15
cmp    %r11,%r10
je     11e5 <strmaxvych+0xe5>
test   %edx,%edx
jle    1140 <strmaxvych+0x40>
xor    %ebx,%ebx
cmp    $0x1,%edx
jne    11a9 <strmaxvych+0xa9>
mov    %ebp,%r14d
test   $0x1,%r13b
je     1140 <strmaxvych+0x40>
mov    %r10,%rcx
imul   %r11,%rcx
add    %rbx,%rcx
movsd  (%rdi,%rcx,8),%xmm0
mov    %r14d,%ecx
imul   %esi,%ecx
add    %eax,%ecx
movslq %ecx,%rcx
ucomisd (%rdi,%rcx,8),%xmm0
mov    %r10d,%ebp
cmovbe %r14d,%ebp
cmovbe %eax,%ebx
mov    %ebx,%eax
jmp    1140 <strmaxvych+0x40>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x2,%rbx
cmp    %r9,%rbx
je     115b <strmaxvych+0x5b>
mov    %ebp,%ecx
imul   %esi,%ecx
add    %eax,%ecx
movslq %ecx,%rcx
movsd  -0x8(%r15,%rbx,8),%xmm0
ucomisd (%rdi,%rcx,8),%xmm0
cmova  %r10d,%ebp
cmova  %ebx,%eax
movsd  (%r15,%rbx,8),%xmm0
mov    %ebp,%ecx
imul   %esi,%ecx
add    %eax,%ecx
movslq %ecx,%rcx
ucomisd (%rdi,%rcx,8),%xmm0
jbe    11a0 <strmaxvych+0xa0>
lea    0x1(%rbx),%eax
mov    %r10d,%ebp
jmp    11a0 <strmaxvych+0xa0>
test   %esi,%esi
jle    13fd <strmaxvych+0x2fd>
imul   %ebp,%esi
movslq %esi,%r9
mov    %ebp,%r10d
lea    (%rdi,%r9,8),%rsi
lea    (%r9,%r13,1),%rax
lea    (%rdi,%rax,8),%r15
mov    %r13d,%eax
and    $0xfffffffc,%eax
mov    %rax,-0x20(%rsp)
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x28(%rsp)
mov    %rax,%rcx
shr    $0x2,%rcx
add    $0x1,%rcx
mov    %rcx,%rax
mov    %rcx,-0x30(%rsp)
and    $0xfffffffffffffffe,%rcx
mov    %rcx,-0x38(%rsp)
mov    %r13,%rax
neg    %rax
mov    %rax,-0x8(%rsp)
lea    0x30(%rdi),%rbp
lea    0x8(%rdi),%r12
xor    %r14d,%r14d
mov    %r9,-0x10(%rsp)
mov    %r15,-0x18(%rsp)
jmp    1273 <strmaxvych+0x173>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r14
add    %r8,%rbp
add    %r8,%r12
cmp    %r11,%r14
je     13fd <strmaxvych+0x2fd>
cmp    %r10,%r14
je     1260 <strmaxvych+0x160>
test   %edx,%edx
jle    1260 <strmaxvych+0x160>
mov    %r14,%rax
imul   %r11,%rax
cmp    $0x4,%edx
jb     12a4 <strmaxvych+0x1a4>
mov    %r14,%rcx
imul   %r11,%rcx
lea    (%rdi,%rcx,8),%rbx
cmp    %r15,%rbx
jae    1313 <strmaxvych+0x213>
add    %r13,%rcx
lea    (%rdi,%rcx,8),%rcx
cmp    %rcx,%rsi
jae    1313 <strmaxvych+0x213>
xor    %ebx,%ebx
mov    %rbx,%rcx
test   $0x1,%r13b
je     12cc <strmaxvych+0x1cc>
lea    (%rbx,%r9,1),%rcx
add    %rbx,%rax
movsd  (%rdi,%rax,8),%xmm0
subsd  (%rdi,%rcx,8),%xmm0
movsd  %xmm0,(%rdi,%rax,8)
mov    %rbx,%rcx
or     $0x1,%rcx
not    %rbx
cmp    -0x8(%rsp),%rbx
je     1260 <strmaxvych+0x160>
cs nopw 0x0(%rax,%rax,1)
movsd  -0x8(%r12,%rcx,8),%xmm0
subsd  (%rsi,%rcx,8),%xmm0
movsd  (%r12,%rcx,8),%xmm1
movsd  %xmm0,-0x8(%r12,%rcx,8)
subsd  0x8(%rsi,%rcx,8),%xmm1
movsd  %xmm1,(%r12,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%r13
jne    12e0 <strmaxvych+0x1e0>
jmp    1260 <strmaxvych+0x160>
cmpq   $0x0,-0x28(%rsp)
je     139f <strmaxvych+0x29f>
mov    -0x38(%rsp),%r9
xor    %r15d,%r15d
nopw   0x0(%rax,%rax,1)
movupd (%rsi,%r15,8),%xmm0
movupd 0x10(%rsi,%r15,8),%xmm1
movupd -0x30(%rbp,%r15,8),%xmm2
subpd  %xmm0,%xmm2
movupd -0x20(%rbp,%r15,8),%xmm0
subpd  %xmm1,%xmm0
movupd -0x10(%rbp,%r15,8),%xmm1
movupd 0x0(%rbp,%r15,8),%xmm3
movupd %xmm2,-0x30(%rbp,%r15,8)
movupd %xmm0,-0x20(%rbp,%r15,8)
movupd 0x20(%rsi,%r15,8),%xmm0
subpd  %xmm0,%xmm1
movupd 0x30(%rsi,%r15,8),%xmm0
subpd  %xmm0,%xmm3
movupd %xmm1,-0x10(%rbp,%r15,8)
movupd %xmm3,0x0(%rbp,%r15,8)
add    $0x8,%r15
add    $0xfffffffffffffffe,%r9
jne    1330 <strmaxvych+0x230>
jmp    13a2 <strmaxvych+0x2a2>
xor    %r15d,%r15d
testb  $0x1,-0x30(%rsp)
mov    -0x10(%rsp),%r9
je     13e2 <strmaxvych+0x2e2>
lea    (%r15,%r9,1),%rcx
movupd (%rdi,%rcx,8),%xmm0
movupd 0x10(%rdi,%rcx,8),%xmm1
add    %rax,%r15
movupd (%rdi,%r15,8),%xmm2
subpd  %xmm0,%xmm2
movupd 0x10(%rdi,%r15,8),%xmm0
subpd  %xmm1,%xmm0
movupd %xmm2,(%rdi,%r15,8)
movupd %xmm0,0x10(%rdi,%r15,8)
mov    -0x20(%rsp),%rcx
mov    %rcx,%rbx
cmp    %r13,%rcx
mov    -0x18(%rsp),%r15
je     1260 <strmaxvych+0x160>
jmp    12a6 <strmaxvych+0x1a6>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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