void set_swift_record(struct module *mod, double st_array[],
                      unsigned long long pre_array[],
                      unsigned long long cur_array[], int inter) {
  if (cur_array[0] >= pre_array[0]) {
    st_array[0] = (cur_array[0] - pre_array[0]) / inter;
  } else {
    st_array[0] = 0;
  }
  if (cur_array[0] > pre_array[0] && cur_array[1] > pre_array[1])
    st_array[1] = (cur_array[1] - pre_array[1]) / (cur_array[0] - pre_array[0]);
  else
    st_array[1] = 0;
  if (cur_array[0] > pre_array[0] && cur_array[2] > pre_array[2])
    st_array[2] =
        100 * (cur_array[2] - pre_array[2]) / (cur_array[0] - pre_array[0]);
  else
    st_array[2] = 0;
  if (cur_array[3] > 0)
    st_array[3] = cur_array[3] * 1.0 / 1000;
  else
    st_array[3] = 0;
  if (cur_array[4] > 0)
    st_array[4] = cur_array[4];
  else
    st_array[4] = 0;
  if (cur_array[5] >= pre_array[5]) {
    st_array[5] = (cur_array[5] - pre_array[5]) / inter;
  } else {
    st_array[5] = 0;
  }
  if (cur_array[6] >= pre_array[6]) {
    st_array[6] = (cur_array[6] - pre_array[6]) / inter;
  } else {
    st_array[6] = 0;
  }
  if (cur_array[7] > pre_array[7] && cur_array[8] >= pre_array[8]) {
    st_array[7] =
        (cur_array[8] - pre_array[8]) * 100.0 / (cur_array[7] - pre_array[7]);
  } else {
    st_array[7] = 0;
  }
}


x86 assembly (clang, -O0):
<set_swift_record>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%rax
jb     117a <set_swift_record+0x7a>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%rcx
sub    %rcx,%rax
movslq -0x24(%rbp),%rcx
xor    %edx,%edx
div    %rcx
movq   %rax,%xmm0
movaps 0xeae(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xeb2(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1185 <set_swift_record+0x85>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%rax
jbe    1205 <set_swift_record+0x105>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x8(%rcx),%rax
jbe    1205 <set_swift_record+0x105>
mov    -0x20(%rbp),%rax
mov    (%rax),%rcx
mov    0x8(%rax),%rax
mov    -0x18(%rbp),%rsi
mov    (%rsi),%rdx
mov    0x8(%rsi),%rsi
sub    %rsi,%rax
sub    %rdx,%rcx
xor    %edx,%edx
div    %rcx
movq   %rax,%xmm0
movaps 0xe24(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xe28(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
jmp    1211 <set_swift_record+0x111>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%rax
jbe    1295 <set_swift_record+0x195>
mov    -0x20(%rbp),%rax
mov    0x10(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x10(%rcx),%rax
jbe    1295 <set_swift_record+0x195>
mov    -0x20(%rbp),%rax
mov    (%rax),%rcx
mov    0x10(%rax),%rax
mov    -0x18(%rbp),%rsi
mov    (%rsi),%rdx
mov    0x10(%rsi),%rsi
sub    %rsi,%rax
imul   $0x64,%rax,%rax
sub    %rdx,%rcx
xor    %edx,%edx
div    %rcx
movq   %rax,%xmm0
movaps 0xd94(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xd98(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    12a1 <set_swift_record+0x1a1>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
cmpq   $0x0,0x18(%rax)
jbe    1301 <set_swift_record+0x201>
mov    -0x20(%rbp),%rax
movq   0x18(%rax),%xmm0
movaps 0xd40(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xd44(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd45(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd31(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
jmp    130d <set_swift_record+0x20d>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x20(%rbp),%rax
cmpq   $0x0,0x20(%rax)
jbe    1355 <set_swift_record+0x255>
mov    -0x20(%rbp),%rax
movq   0x20(%rax),%xmm0
movaps 0xcd4(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xcd8(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
jmp    1361 <set_swift_record+0x261>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x20(%rax)
mov    -0x20(%rbp),%rax
mov    0x28(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x28(%rcx),%rax
jb     13c8 <set_swift_record+0x2c8>
mov    -0x20(%rbp),%rax
mov    0x28(%rax),%rax
mov    -0x18(%rbp),%rcx
mov    0x28(%rcx),%rcx
sub    %rcx,%rax
movslq -0x24(%rbp),%rcx
xor    %edx,%edx
div    %rcx
movq   %rax,%xmm0
movaps 0xc61(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xc65(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
jmp    13d4 <set_swift_record+0x2d4>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x28(%rax)
mov    -0x20(%rbp),%rax
mov    0x30(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x30(%rcx),%rax
jb     143b <set_swift_record+0x33b>
mov    -0x20(%rbp),%rax
mov    0x30(%rax),%rax
mov    -0x18(%rbp),%rcx
mov    0x30(%rcx),%rcx
sub    %rcx,%rax
movslq -0x24(%rbp),%rcx
xor    %edx,%edx
div    %rcx
movq   %rax,%xmm0
movaps 0xbee(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xbf2(%rip),%xmm1
subpd  %xmm1,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
jmp    1447 <set_swift_record+0x347>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
mov    -0x20(%rbp),%rax
mov    0x38(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x38(%rcx),%rax
jbe    14ee <set_swift_record+0x3ee>
mov    -0x20(%rbp),%rax
mov    0x40(%rax),%rax
mov    -0x18(%rbp),%rcx
cmp    0x40(%rcx),%rax
jb     14ee <set_swift_record+0x3ee>
mov    -0x20(%rbp),%rcx
mov    0x38(%rcx),%rax
mov    0x40(%rcx),%rdx
mov    -0x18(%rbp),%rsi
mov    0x38(%rsi),%rcx
mov    0x40(%rsi),%rsi
sub    %rsi,%rdx
movq   %rdx,%xmm0
movaps 0xb66(%rip),%xmm3
punpckldq %xmm3,%xmm0
movapd 0xb6a(%rip),%xmm2
subpd  %xmm2,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb73(%rip),%xmm1
mulsd  %xmm1,%xmm0
sub    %rcx,%rax
movq   %rax,%xmm1
punpckldq %xmm3,%xmm1
subpd  %xmm2,%xmm1
movaps %xmm1,%xmm2
unpckhpd %xmm1,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x38(%rax)
jmp    14fa <set_swift_record+0x3fa>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x38(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<set_swift_record>:
mov    %rdx,%r9
mov    (%rcx),%r10
mov    (%rdx),%rdi
xorpd  %xmm0,%xmm0
mov    %r10,%rax
sub    %rdi,%rax
jb     1151 <set_swift_record+0x51>
movslq %r8d,%r11
mov    %rax,%rdx
or     %r11,%rdx
shr    $0x20,%rdx
je     112b <set_swift_record+0x2b>
xor    %edx,%edx
div    %r11
jmp    1130 <set_swift_record+0x30>
xor    %edx,%edx
div    %r8d
movq   %rax,%xmm1
punpckldq 0xec3(%rip),%xmm1
subpd  0xecb(%rip),%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rsi)
sub    %rdi,%r10
jbe    117f <set_swift_record+0x7f>
mov    0x8(%rcx),%rax
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
sub    0x8(%r9),%rax
jbe    11b3 <set_swift_record+0xb3>
mov    %rax,%rdx
or     %r10,%rdx
shr    $0x20,%rdx
je     118d <set_swift_record+0x8d>
xor    %edx,%edx
div    %r10
jmp    1192 <set_swift_record+0x92>
movq   $0x0,0x8(%rsi)
xorpd  %xmm0,%xmm0
jmp    11ff <set_swift_record+0xff>
xor    %edx,%edx
div    %r10d
movq   %rax,%xmm2
punpckldq 0xe61(%rip),%xmm2
subpd  0xe69(%rip),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsi)
mov    0x10(%rcx),%rax
sub    0x10(%r9),%rax
jbe    11ff <set_swift_record+0xff>
imul   $0x64,%rax,%rax
mov    %rax,%rdx
or     %r10,%rdx
shr    $0x20,%rdx
je     11d9 <set_swift_record+0xd9>
xor    %edx,%edx
div    %r10
jmp    11de <set_swift_record+0xde>
xor    %edx,%edx
div    %r10d
movq   %rax,%xmm1
punpckldq 0xe15(%rip),%xmm1
subpd  0xe1d(%rip),%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsi)
mov    0x18(%rcx),%rax
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
test   %rax,%rax
je     123e <set_swift_record+0x13e>
movq   %rax,%xmm2
punpckldq 0xdde(%rip),%xmm2
subpd  0xde6(%rip),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  %xmm2,%xmm1
divsd  0xde2(%rip),%xmm1
movsd  %xmm1,0x18(%rsi)
movsd  0x20(%rcx),%xmm1
unpcklps 0xdb1(%rip),%xmm1
subpd  0xdb9(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x20(%rsi)
mov    0x28(%rcx),%rax
sub    0x28(%r9),%rax
jb     12ae <set_swift_record+0x1ae>
movslq %r8d,%rdi
mov    %rax,%rdx
or     %rdi,%rdx
shr    $0x20,%rdx
je     1288 <set_swift_record+0x188>
xor    %edx,%edx
div    %rdi
jmp    128d <set_swift_record+0x18d>
xor    %edx,%edx
div    %r8d
movq   %rax,%xmm1
punpckldq 0xd66(%rip),%xmm1
subpd  0xd6e(%rip),%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x28(%rsi)
mov    0x30(%rcx),%rax
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
sub    0x30(%r9),%rax
jb     1301 <set_swift_record+0x201>
movslq %r8d,%rdi
mov    %rax,%rdx
or     %rdi,%rdx
shr    $0x20,%rdx
je     12db <set_swift_record+0x1db>
xor    %edx,%edx
div    %rdi
jmp    12e0 <set_swift_record+0x1e0>
xor    %edx,%edx
div    %r8d
movq   %rax,%xmm2
punpckldq 0xd13(%rip),%xmm2
subpd  0xd1b(%rip),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x30(%rsi)
mov    0x38(%rcx),%rax
sub    0x38(%r9),%rax
jbe    1368 <set_swift_record+0x268>
mov    0x40(%rcx),%rcx
sub    0x40(%r9),%rcx
jb     1368 <set_swift_record+0x268>
movq   %rcx,%xmm1
movdqa 0xcd9(%rip),%xmm2
punpckldq %xmm2,%xmm1
movapd 0xcdd(%rip),%xmm3
subpd  %xmm3,%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  %xmm1,%xmm0
mulsd  0xcdd(%rip),%xmm0
movq   %rax,%xmm1
punpckldq %xmm2,%xmm1
subpd  %xmm3,%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
movsd  %xmm0,0x38(%rsi)
ret

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

LLVM IR (-O2):
%struct.module = type opaque
define void @set_swift_record(%struct.module* nocapture readnone %0, double* nocapture writeonly %1, i64* nocapture %2, i64* nocapture %3, i32 %4) {
%6 = load i64, i64* %3
%7 = load i64, i64* %2
%8 = icmp ult i64 %6, %7
br i1 %8, label %14, label %9
9: ; preds = %5
%10 = sub i64 %6, %7
%11 = sext i32 %4 to i64
%12 = udiv i64 %10, %11
%13 = uitofp i64 %12 to double
br label %14
14: ; preds = %5, %9
%15 = phi double [ %13, %9 ], [ 0.000000e+00, %5 ]
store double %15, double* %1
%16 = icmp ugt i64 %6, %7
br i1 %16, label %17, label %28
17: ; preds = %14
%18 = getelementptr inbounds i64, i64* %3, i64 1
%19 = load i64, i64* %18
%20 = getelementptr inbounds i64, i64* %2, i64 1
%21 = load i64, i64* %20
%22 = icmp ugt i64 %19, %21
br i1 %22, label %23, label %30
23: ; preds = %17
%24 = sub i64 %19, %21
%25 = sub i64 %6, %7
%26 = udiv i64 %24, %25
%27 = uitofp i64 %26 to double
br label %30
28: ; preds = %14
%29 = getelementptr inbounds double, double* %1, i64 1
store double 0.000000e+00, double* %29
br label %44
30: ; preds = %17, %23
%31 = phi double [ %27, %23 ], [ 0.000000e+00, %17 ]
%32 = getelementptr inbounds double, double* %1, i64 1
store double %31, double* %32
%33 = getelementptr inbounds i64, i64* %3, i64 2
%34 = load i64, i64* %33
%35 = getelementptr inbounds i64, i64* %2, i64 2
%36 = load i64, i64* %35
%37 = icmp ugt i64 %34, %36
br i1 %37, label %38, label %44
38: ; preds = %30
%39 = sub i64 %34, %36
%40 = mul i64 %39, 100
%41 = sub i64 %6, %7
%42 = udiv i64 %40, %41
%43 = uitofp i64 %42 to double
br label %44
44: ; preds = %30, %28, %38
%45 = phi double [ %43, %38 ], [ 0.000000e+00, %28 ], [ 0.000000e+00, %30 ]
%46 = getelementptr inbounds double, double* %1, i64 2
store double %45, double* %46
%47 = getelementptr inbounds i64, i64* %3, i64 3
%48 = load i64, i64* %47
%49 = icmp eq i64 %48, 0
br i1 %49, label %53, label %50
50: ; preds = %44
%51 = uitofp i64 %48 to double
%52 = fdiv double %51, 1.000000e+03
br label %53
53: ; preds = %44, %50
%54 = phi double [ %52, %50 ], [ 0.000000e+00, %44 ]
%55 = getelementptr inbounds double, double* %1, i64 3
store double %54, double* %55
%56 = getelementptr inbounds i64, i64* %3, i64 4
%57 = load i64, i64* %56
%58 = uitofp i64 %57 to double
%59 = getelementptr inbounds double, double* %1, i64 4
store double %58, double* %59
%60 = getelementptr inbounds i64, i64* %3, i64 5
%61 = load i64, i64* %60
%62 = getelementptr inbounds i64, i64* %2, i64 5
%63 = load i64, i64* %62
%64 = icmp ult i64 %61, %63
br i1 %64, label %70, label %65
65: ; preds = %53
%66 = sub i64 %61, %63
%67 = sext i32 %4 to i64
%68 = udiv i64 %66, %67
%69 = uitofp i64 %68 to double
br label %70
70: ; preds = %53, %65
%71 = phi double [ %69, %65 ], [ 0.000000e+00, %53 ]
%72 = getelementptr inbounds double, double* %1, i64 5
store double %71, double* %72
%73 = getelementptr inbounds i64, i64* %3, i64 6
%74 = load i64, i64* %73
%75 = getelementptr inbounds i64, i64* %2, i64 6
%76 = load i64, i64* %75
%77 = icmp ult i64 %74, %76
br i1 %77, label %83, label %78
78: ; preds = %70
%79 = sub i64 %74, %76
%80 = sext i32 %4 to i64
%81 = udiv i64 %79, %80
%82 = uitofp i64 %81 to double
br label %83
83: ; preds = %70, %78
%84 = phi double [ %82, %78 ], [ 0.000000e+00, %70 ]
%85 = getelementptr inbounds double, double* %1, i64 6
store double %84, double* %85
%86 = getelementptr inbounds i64, i64* %3, i64 7
%87 = load i64, i64* %86
%88 = getelementptr inbounds i64, i64* %2, i64 7
%89 = load i64, i64* %88
%90 = icmp ugt i64 %87, %89
br i1 %90, label %91, label %104
91: ; preds = %83
%92 = getelementptr inbounds i64, i64* %3, i64 8
%93 = load i64, i64* %92
%94 = getelementptr inbounds i64, i64* %2, i64 8
%95 = load i64, i64* %94
%96 = icmp ult i64 %93, %95
br i1 %96, label %104, label %97
97: ; preds = %91
%98 = sub i64 %93, %95
%99 = uitofp i64 %98 to double
%100 = fmul double %99, 1.000000e+02
%101 = sub i64 %87, %89
%102 = uitofp i64 %101 to double
%103 = fdiv double %100, %102
br label %104
104: ; preds = %83, %91, %97
%105 = phi double [ %103, %97 ], [ 0.000000e+00, %91 ], [ 0.000000e+00, %83 ]
%106 = getelementptr inbounds double, double* %1, i64 7
store double %105, double* %106
ret void
}