double jitter(int ft0, int ft1, int il0, int il1, double frac) {
  int i, j, il_cycles;
  double time = 0, il_time = 0;
  double jit = 0, min_jitter = 0, max_jitter = 0;
  if ((ft0 / il0) < (ft1 / il1)) {
    il_cycles = ft0 / il0;
  } else {
    il_cycles = ft1 / il1;
  }
  for (i = 0; i < il_cycles; i++) {
    for (j = 0; j < il0; j++) {
      time += frac;
      jit = il_time - time;
      if (jit < min_jitter) {
        min_jitter = jit;
      } else if (jit > max_jitter) {
        max_jitter = jit;
      }
    }
    for (j = 0; j < il1; j++) {
      il_time++;
      time += frac;
      jit = il_time - time;
      if (jit < min_jitter) {
        min_jitter = jit;
      } else if (jit > max_jitter) {
        max_jitter = jit;
      }
    }
  }
  for (i = 0; i < (ft0 - il0 * il_cycles); i++) {
    time += frac;
    jit = il_time - time;
    if (jit < min_jitter) {
      min_jitter = jit;
    } else if (jit > max_jitter) {
      max_jitter = jit;
    }
  }
  for (i = 0; i < (ft1 - il1 * il_cycles); i++) {
    il_time++;
    time += frac;
    jit = il_time - time;
    if (jit < min_jitter) {
      min_jitter = jit;
    } else if (jit > max_jitter) {
      max_jitter = jit;
    }
  }
  return (max_jitter - min_jitter) / 27000000;
}


x86 assembly (clang, -O0):
<jitter>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x4(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %eax,-0x54(%rbp)
mov    -0x8(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,%ecx
mov    -0x54(%rbp),%eax
cmp    %ecx,%eax
jge    116a <jitter+0x6a>
mov    -0x4(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %eax,-0x24(%rbp)
jmp    1174 <jitter+0x74>
mov    -0x8(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    12b8 <jitter+0x1b8>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    120d <jitter+0x10d>
movsd  -0x18(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11db <jitter+0xdb>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    11fa <jitter+0xfa>
movsd  -0x40(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    11f5 <jitter+0xf5>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    11fa <jitter+0xfa>
jmp    11ff <jitter+0xff>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    118e <jitter+0x8e>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    12a5 <jitter+0x1a5>
movsd  0xde0(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1273 <jitter+0x173>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1292 <jitter+0x192>
movsd  -0x40(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    128d <jitter+0x18d>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1292 <jitter+0x192>
jmp    1297 <jitter+0x197>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1214 <jitter+0x114>
jmp    12aa <jitter+0x1aa>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    117b <jitter+0x7b>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x4(%rbp),%ecx
mov    -0xc(%rbp),%edx
imul   -0x24(%rbp),%edx
sub    %edx,%ecx
cmp    %ecx,%eax
jge    1349 <jitter+0x249>
movsd  -0x18(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1317 <jitter+0x217>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1336 <jitter+0x236>
movsd  -0x40(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1331 <jitter+0x231>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1336 <jitter+0x236>
jmp    133b <jitter+0x23b>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12bf <jitter+0x1bf>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%ecx
mov    -0x10(%rbp),%edx
imul   -0x24(%rbp),%edx
sub    %edx,%ecx
cmp    %ecx,%eax
jge    13ec <jitter+0x2ec>
movsd  0xc99(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    13ba <jitter+0x2ba>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    13d9 <jitter+0x2d9>
movsd  -0x40(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    13d4 <jitter+0x2d4>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    13d9 <jitter+0x2d9>
jmp    13de <jitter+0x2de>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1350 <jitter+0x250>
movsd  -0x50(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  0xc02(%rip),%xmm1
divsd  %xmm1,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<jitter>:
mov    %edx,%r8d
mov    %esi,%r9d
mov    %edi,%r10d
mov    %edi,%eax
cltd
idiv   %r8d
mov    %eax,%esi
mov    %r9d,%eax
cltd
idiv   %ecx
cmp    %eax,%esi
cmovl  %esi,%eax
test   %eax,%eax
jle    12a8 <jitter+0x1a8>
mov    %r8d,%r11d
and    $0xfffffffe,%r11d
mov    %ecx,%edx
and    $0xfffffffe,%edx
xor    %edi,%edi
xorpd  %xmm5,%xmm5
movsd  0xec2(%rip),%xmm1
xorpd  %xmm2,%xmm2
xorpd  %xmm4,%xmm4
xorpd  %xmm3,%xmm3
jmp    115f <jitter+0x5f>
movapd %xmm5,%xmm2
movapd %xmm6,%xmm5
add    $0x1,%edi
cmp    %eax,%edi
je     12b8 <jitter+0x1b8>
test   %r8d,%r8d
jle    1200 <jitter+0x100>
mov    %r11d,%esi
cmp    $0x1,%r8d
jne    11ad <jitter+0xad>
movapd %xmm5,%xmm6
test   $0x1,%r8b
je     1204 <jitter+0x104>
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm6
subsd  %xmm3,%xmm6
ucomisd %xmm6,%xmm2
jbe    11f4 <jitter+0xf4>
movapd %xmm6,%xmm2
jmp    1200 <jitter+0x100>
nopw   0x0(%rax,%rax,1)
movapd %xmm5,%xmm2
movapd %xmm6,%xmm5
add    $0xfffffffe,%esi
je     1171 <jitter+0x71>
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm6
subsd  %xmm3,%xmm6
ucomisd %xmm6,%xmm2
jbe    11d0 <jitter+0xd0>
movapd %xmm6,%xmm2
jmp    11d6 <jitter+0xd6>
cs nopw 0x0(%rax,%rax,1)
nop
ucomisd %xmm5,%xmm6
ja     11da <jitter+0xda>
movapd %xmm5,%xmm6
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm3,%xmm5
ucomisd %xmm5,%xmm2
ja     11a0 <jitter+0xa0>
ucomisd %xmm6,%xmm5
jbe    11a4 <jitter+0xa4>
jmp    11a8 <jitter+0xa8>
ucomisd %xmm5,%xmm6
ja     1204 <jitter+0x104>
nopw   0x0(%rax,%rax,1)
movapd %xmm5,%xmm6
test   %ecx,%ecx
jle    1150 <jitter+0x50>
mov    %edx,%esi
cmp    $0x1,%ecx
jne    125d <jitter+0x15d>
movapd %xmm6,%xmm5
test   $0x1,%cl
je     1154 <jitter+0x54>
addsd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm3,%xmm5
ucomisd %xmm5,%xmm2
ja     114c <jitter+0x4c>
ucomisd %xmm6,%xmm5
jbe    1150 <jitter+0x50>
jmp    1154 <jitter+0x54>
nopl   0x0(%rax)
movapd %xmm6,%xmm2
movapd %xmm5,%xmm6
add    $0xfffffffe,%esi
je     1213 <jitter+0x113>
addsd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm3,%xmm5
ucomisd %xmm5,%xmm2
jbe    1280 <jitter+0x180>
movapd %xmm5,%xmm2
jmp    1286 <jitter+0x186>
nopl   0x0(%rax)
ucomisd %xmm6,%xmm5
ja     128a <jitter+0x18a>
movapd %xmm6,%xmm5
addsd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm6
subsd  %xmm3,%xmm6
ucomisd %xmm6,%xmm2
ja     1250 <jitter+0x150>
ucomisd %xmm5,%xmm6
jbe    1254 <jitter+0x154>
jmp    1258 <jitter+0x158>
xorpd  %xmm3,%xmm3
xorpd  %xmm4,%xmm4
xorpd  %xmm2,%xmm2
xorpd  %xmm5,%xmm5
imul   %eax,%r8d
mov    %r10d,%edx
sub    %r8d,%edx
test   %edx,%edx
jle    135a <jitter+0x25a>
not    %r8d
add    %r10d,%r8d
jne    12f7 <jitter+0x1f7>
movapd %xmm5,%xmm6
test   $0x1,%dl
je     135e <jitter+0x25e>
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm6
subsd  %xmm3,%xmm6
ucomisd %xmm6,%xmm2
jbe    1354 <jitter+0x254>
movapd %xmm6,%xmm2
jmp    135a <jitter+0x25a>
mov    %edx,%esi
and    $0xfffffffe,%esi
jmp    130d <jitter+0x20d>
xchg   %ax,%ax
movapd %xmm5,%xmm2
movapd %xmm1,%xmm5
add    $0xfffffffe,%esi
je     12d2 <jitter+0x1d2>
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm1
subsd  %xmm3,%xmm1
ucomisd %xmm1,%xmm2
jbe    1330 <jitter+0x230>
movapd %xmm1,%xmm2
jmp    1336 <jitter+0x236>
cs nopw 0x0(%rax,%rax,1)
nop
ucomisd %xmm5,%xmm1
ja     133a <jitter+0x23a>
movapd %xmm5,%xmm1
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm3,%xmm5
ucomisd %xmm5,%xmm2
ja     1300 <jitter+0x200>
ucomisd %xmm1,%xmm5
jbe    1304 <jitter+0x204>
jmp    1308 <jitter+0x208>
ucomisd %xmm5,%xmm6
ja     135e <jitter+0x25e>
movapd %xmm5,%xmm6
imul   %ecx,%eax
mov    %r9d,%ecx
sub    %eax,%ecx
test   %ecx,%ecx
jle    141e <jitter+0x31e>
not    %eax
add    %r9d,%eax
jne    13a2 <jitter+0x2a2>
movapd %xmm6,%xmm1
test   $0x1,%cl
je     1422 <jitter+0x322>
addsd  0xc76(%rip),%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm1
subsd  %xmm3,%xmm1
ucomisd %xmm1,%xmm2
jbe    1418 <jitter+0x318>
movapd %xmm1,%xmm2
jmp    141e <jitter+0x31e>
mov    %ecx,%eax
and    $0xfffffffe,%eax
movsd  0xc51(%rip),%xmm1
jmp    13cd <jitter+0x2cd>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd %xmm6,%xmm2
movapd %xmm5,%xmm6
add    $0xfffffffe,%eax
je     1375 <jitter+0x275>
addsd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm5
subsd  %xmm3,%xmm5
ucomisd %xmm5,%xmm2
jbe    13f0 <jitter+0x2f0>
movapd %xmm5,%xmm2
jmp    13f6 <jitter+0x2f6>
nopl   0x0(%rax)
ucomisd %xmm6,%xmm5
ja     13fa <jitter+0x2fa>
movapd %xmm6,%xmm5
addsd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movapd %xmm4,%xmm6
subsd  %xmm3,%xmm6
ucomisd %xmm6,%xmm2
ja     13c0 <jitter+0x2c0>
ucomisd %xmm5,%xmm6
jbe    13c4 <jitter+0x2c4>
jmp    13c8 <jitter+0x2c8>
ucomisd %xmm6,%xmm1
ja     1422 <jitter+0x322>
movapd %xmm6,%xmm1
subsd  %xmm2,%xmm1
divsd  0xbda(%rip),%xmm1
movapd %xmm1,%xmm0
ret

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

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