double wordline_delay(B, A, Ndwl, Nspd, inrisetime, outrisetime)
int B, A, Ndwl, Nspd;
double inrisetime, *outrisetime;
{
  double Rpdrive, nextrisetime;
  double desiredrisetime, psize, nsize;
  double tf, nextinputtime, Ceq, Req, Rline, Cline;
  int cols;
  double Tworddrivedel, Twordchargedel;
  cols = 8 * B * A * Nspd / Ndwl;
  desiredrisetime = 0.4e-9 * log((double)(cols)) / 2.0;
  Cline = (gatecappass(2.4, 0.0) + gatecappass(2.4, 0.0) + 1.8e-15) * cols;
  Rpdrive = desiredrisetime / (Cline * log(0.456) * -1.0);
  psize = restowidth(Rpdrive, 0);
  if (psize > 100.0) {
    psize = 100.0;
  }
  nsize = psize * 5.0 / 10.0;
  Ceq =
      draincap(5.0, 1, 1) + draincap(10.0, 0, 1) + gatecap(nsize + psize, 20.0);
  tf = transreson(5.0, 1, 1) * Ceq;
  Tworddrivedel = horowitz(inrisetime, tf, 0.456, 0.456, 1);
  nextinputtime = Tworddrivedel / (1.0 - 0.456);
  Cline = (gatecappass(2.4, (8.0 - 2 * 2.4) / 2.0) +
           gatecappass(2.4, (8.0 - 2 * 2.4) / 2.0) + 1.8e-15) *
              cols +
          draincap(nsize, 1, 1) + draincap(psize, 0, 1);
  Rline = 0.080 * cols / 2;
  tf = (transreson(psize, 0, 1) + Rline) * Cline;
  Twordchargedel = horowitz(nextinputtime, tf, 0.456, 0.456, 0);
  *outrisetime = Twordchargedel / 0.456;
  return (Tworddrivedel + Twordchargedel);
}


x86 assembly (clang, -O0):
<wordline_delay>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x3,%eax
imul   -0x8(%rbp),%eax
imul   -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %eax,-0x7c(%rbp)
cvtsi2sdl -0x7c(%rbp),%xmm0
call   1080 <log@plt>
movaps %xmm0,%xmm1
movsd  0xe76(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xe62(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe49(%rip),%xmm0
xorps  %xmm1,%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,-0xa4(%rbp)
movsd  0xe31(%rip),%xmm0
xorps  %xmm1,%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,%ecx
mov    -0xa4(%rbp),%eax
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  0xe09(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsi2sdl -0x7c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xdcd(%rip),%xmm0
call   1080 <log@plt>
movsd  -0xa0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
movsd  0xda1(%rip),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1030 <restowidth@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xd68(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12af <wordline_delay+0x13f>
movsd  0xd56(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xd99(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0xd9c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xd7b(%rip),%xmm0
mov    $0x1,%esi
mov    %esi,%edi
mov    $0x1,%al
call   1040 <draincap@plt>
mov    %eax,-0xcc(%rbp)
movsd  0xd6f(%rip),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
mov    %eax,%ecx
mov    -0xcc(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0xc8(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  0xd37(%rip),%xmm1
mov    $0x2,%al
call   1050 <gatecap@plt>
mov    %eax,%ecx
mov    -0xc8(%rbp),%eax
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xd0d(%rip),%xmm0
mov    $0x1,%esi
mov    %esi,%edi
mov    $0x1,%al
call   1060 <transreson@plt>
cvtsi2sd %eax,%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  0xc9f(%rip),%xmm3
mov    $0x1,%edi
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1090 <horowitz@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xcac(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xc73(%rip),%xmm0
movsd  0xc8b(%rip),%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,-0xc4(%rbp)
movsd  0xc56(%rip),%xmm0
movsd  0xc6e(%rip),%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,%ecx
mov    -0xc4(%rbp),%eax
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  0xc29(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
cvtsi2sdl -0x7c(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mov    $0x1,%esi
mov    %esi,%edi
mov    $0x1,%al
call   1040 <draincap@plt>
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
movsd  -0xb0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
cvtsi2sdl -0x7c(%rbp),%xmm1
movsd  0xbc4(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xba8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1060 <transreson@plt>
cvtsi2sd %eax,%xmm0
addsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  0xb4f(%rip),%xmm3
xor    %edi,%edi
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1090 <horowitz@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xb27(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<wordline_delay>:
push   %rbp
push   %r14
push   %rbx
sub    $0x40,%rsp
mov    %r8,%r14
movsd  %xmm0,(%rsp)
mov    %edx,%ebx
imul   %esi,%edi
imul   %ecx,%edi
lea    0x0(,%rdi,8),%eax
cltd
idiv   %ebx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,0x20(%rsp)
call   1080 <log@plt>
movapd %xmm0,0x10(%rsp)
movsd  0xe4e(%rip),%xmm0
xorps  %xmm1,%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,%ebx
xorps  %xmm1,%xmm1
movsd  0xe37(%rip),%xmm0
mov    $0x2,%al
call   1070 <gatecappass@plt>
add    %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xe27(%rip),%xmm0
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd 0xe5d(%rip),%xmm0
unpcklpd 0x20(%rsp),%xmm0
mulpd  %xmm1,%xmm0
mulpd  0xe5b(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
divsd  %xmm1,%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1030 <restowidth@plt>
cmp    $0x64,%eax
mov    $0x64,%ecx
cmovl  %eax,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xdd6(%rip),%xmm1
mulsd  %xmm1,%xmm0
divsd  0xdd2(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movapd %xmm1,%xmm0
mov    $0x1,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
mov    %eax,%ebx
movsd  0xdad(%rip),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
mov    %eax,%ebp
add    %ebx,%ebp
movsd  0x30(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  0xd8f(%rip),%xmm1
mov    $0x2,%al
call   1050 <gatecap@plt>
add    %ebp,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xd61(%rip),%xmm0
mov    $0x1,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1060 <transreson@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0x8(%rsp),%xmm1
movsd  0xd53(%rip),%xmm2
movsd  (%rsp),%xmm0
movaps %xmm2,%xmm3
mov    $0x1,%edi
mov    $0x4,%al
call   1090 <horowitz@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
divsd  0xd32(%rip),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0xd2c(%rip),%xmm1
movsd  0xcec(%rip),%xmm0
mov    $0x2,%al
call   1070 <gatecappass@plt>
mov    %eax,%ebx
movsd  0xcdb(%rip),%xmm0
movsd  0xd0b(%rip),%xmm1
mov    $0x2,%al
call   1070 <gatecappass@plt>
add    %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xcc3(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x30(%rsp),%xmm0
mov    $0x1,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  (%rsp),%xmm1
mulsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x10(%rsp),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1040 <draincap@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movapd 0x20(%rsp),%xmm0
mulsd  0xc91(%rip),%xmm0
mulsd  0xc91(%rip),%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
xor    %edi,%edi
mov    $0x1,%esi
mov    $0x1,%al
call   1060 <transreson@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
addsd  0x20(%rsp),%xmm1
mulsd  (%rsp),%xmm1
movsd  0x38(%rsp),%xmm0
movsd  0xc37(%rip),%xmm2
movaps %xmm2,%xmm3
xor    %edi,%edi
mov    $0x4,%al
call   1090 <horowitz@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
addsd  %xmm1,%xmm0
divsd  0xc12(%rip),%xmm1
movsd  %xmm1,(%r14)
add    $0x40,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
define double @wordline_delay(i32 %0, i32 %1, i32 %2, i32 %3, double %4, double* %5) {
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca double
%12 = alloca double*
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca i32
%25 = alloca double
%26 = alloca double
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store double %4, double* %11
store double* %5, double** %12
%27 = load i32, i32* %7
%28 = mul nsw i32 8, %27
%29 = load i32, i32* %8
%30 = mul nsw i32 %28, %29
%31 = load i32, i32* %10
%32 = mul nsw i32 %30, %31
%33 = load i32, i32* %9
%34 = sdiv i32 %32, %33
store i32 %34, i32* %24
%35 = load i32, i32* %24
%36 = sitofp i32 %35 to double
%37 = call double @log(double %36)
%38 = fmul double 4.000000e-10, %37
%39 = fdiv double %38, 2.000000e+00
store double %39, double* %15
%40 = call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 0.000000e+00)
%41 = call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 0.000000e+00)
%42 = add nsw i32 %40, %41
%43 = sitofp i32 %42 to double
%44 = fadd double %43, 1.800000e-15
%45 = load i32, i32* %24
%46 = sitofp i32 %45 to double
%47 = fmul double %44, %46
store double %47, double* %23
%48 = load double, double* %15
%49 = load double, double* %23
%50 = call double @log(double 4.560000e-01)
%51 = fmul double %49, %50
%52 = fmul double %51, -1.000000e+00
%53 = fdiv double %48, %52
store double %53, double* %13
%54 = load double, double* %13
%55 = call i32 (double, i32, ...) bitcast (i32 (...)* @restowidth to i32 (double, i32, ...)*)(double %54, i32 0)
%56 = sitofp i32 %55 to double
store double %56, double* %16
%57 = load double, double* %16
%58 = fcmp ogt double %57, 1.000000e+02
br i1 %58, label %59, label %60
59: ; preds = %6
store double 1.000000e+02, double* %16
br label %60
60: ; preds = %59, %6
%61 = load double, double* %16
%62 = fmul double %61, 5.000000e+00
%63 = fdiv double %62, 1.000000e+01
store double %63, double* %17
%64 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double 5.000000e+00, i32 1, i32 1)
%65 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double 1.000000e+01, i32 0, i32 1)
%66 = add nsw i32 %64, %65
%67 = load double, double* %17
%68 = load double, double* %16
%69 = fadd double %67, %68
%70 = call i32 (double, double, ...) bitcast (i32 (...)* @gatecap to i32 (double, double, ...)*)(double %69, double 2.000000e+01)
%71 = add nsw i32 %66, %70
%72 = sitofp i32 %71 to double
store double %72, double* %20
%73 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @transreson to i32 (double, i32, i32, ...)*)(double 5.000000e+00, i32 1, i32 1)
%74 = sitofp i32 %73 to double
%75 = load double, double* %20
%76 = fmul double %74, %75
store double %76, double* %18
%77 = load double, double* %11
%78 = load double, double* %18
%79 = call i32 (double, double, double, double, i32, ...) bitcast (i32 (...)* @horowitz to i32 (double, double, double, double, i32, ...)*)(double %77, double %78, double 4.560000e-01, double 4.560000e-01, i32 1)
%80 = sitofp i32 %79 to double
store double %80, double* %25
%81 = load double, double* %25
%82 = fdiv double %81, 5.440000e-01
store double %82, double* %19
%83 = call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 1.600000e+00)
%84 = call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 1.600000e+00)
%85 = add nsw i32 %83, %84
%86 = sitofp i32 %85 to double
%87 = fadd double %86, 1.800000e-15
%88 = load i32, i32* %24
%89 = sitofp i32 %88 to double
%90 = load double, double* %17
%91 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double %90, i32 1, i32 1)
%92 = sitofp i32 %91 to double
%93 = call double @llvm.fmuladd.f64(double %87, double %89, double %92)
%94 = load double, double* %16
%95 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double %94, i32 0, i32 1)
%96 = sitofp i32 %95 to double
%97 = fadd double %93, %96
store double %97, double* %23
%98 = load i32, i32* %24
%99 = sitofp i32 %98 to double
%100 = fmul double 8.000000e-02, %99
%101 = fdiv double %100, 2.000000e+00
store double %101, double* %22
%102 = load double, double* %16
%103 = call i32 (double, i32, i32, ...) bitcast (i32 (...)* @transreson to i32 (double, i32, i32, ...)*)(double %102, i32 0, i32 1)
%104 = sitofp i32 %103 to double
%105 = load double, double* %22
%106 = fadd double %104, %105
%107 = load double, double* %23
%108 = fmul double %106, %107
store double %108, double* %18
%109 = load double, double* %19
%110 = load double, double* %18
%111 = call i32 (double, double, double, double, i32, ...) bitcast (i32 (...)* @horowitz to i32 (double, double, double, double, i32, ...)*)(double %109, double %110, double 4.560000e-01, double 4.560000e-01, i32 0)
%112 = sitofp i32 %111 to double
store double %112, double* %26
%113 = load double, double* %26
%114 = fdiv double %113, 4.560000e-01
%115 = load double*, double** %12
store double %114, double* %115
%116 = load double, double* %25
%117 = load double, double* %26
%118 = fadd double %116, %117
ret double %118
}

LLVM IR (-O2):
define double @wordline_delay(i32 %0, i32 %1, i32 %2, i32 %3, double %4, double* nocapture writeonly %5) {
%7 = shl nsw i32 %0, 3
%8 = mul nsw i32 %7, %1
%9 = mul nsw i32 %8, %3
%10 = sdiv i32 %9, %2
%11 = sitofp i32 %10 to double
%12 = tail call double @log(double %11)
%13 = tail call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 0.000000e+00)
%14 = tail call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 0.000000e+00)
%15 = add nsw i32 %14, %13
%16 = sitofp i32 %15 to double
%17 = fadd double %16, 1.800000e-15
%18 = insertelement <2 x double> poison, double %12, i64 0
%19 = insertelement <2 x double> %18, double %17, i64 1
%20 = insertelement <2 x double> <double 4.000000e-10, double poison>, double %11, i64 1
%21 = fmul <2 x double> %19, %20
%22 = fmul <2 x double> %21, <double 5.000000e-01, double 0x3FE920DEC2247C6D>
%23 = extractelement <2 x double> %22, i64 0
%24 = extractelement <2 x double> %22, i64 1
%25 = fdiv double %23, %24
%26 = tail call i32 (double, i32, ...) bitcast (i32 (...)* @restowidth to i32 (double, i32, ...)*)(double %25, i32 0)
%27 = icmp slt i32 %26, 100
%28 = select i1 %27, i32 %26, i32 100
%29 = sitofp i32 %28 to double
%30 = fmul double %29, 5.000000e+00
%31 = fdiv double %30, 1.000000e+01
%32 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double 5.000000e+00, i32 1, i32 1)
%33 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double 1.000000e+01, i32 0, i32 1)
%34 = add nsw i32 %33, %32
%35 = fadd double %31, %29
%36 = tail call i32 (double, double, ...) bitcast (i32 (...)* @gatecap to i32 (double, double, ...)*)(double %35, double 2.000000e+01)
%37 = add nsw i32 %34, %36
%38 = sitofp i32 %37 to double
%39 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @transreson to i32 (double, i32, i32, ...)*)(double 5.000000e+00, i32 1, i32 1)
%40 = sitofp i32 %39 to double
%41 = fmul double %40, %38
%42 = tail call i32 (double, double, double, double, i32, ...) bitcast (i32 (...)* @horowitz to i32 (double, double, double, double, i32, ...)*)(double %4, double %41, double 4.560000e-01, double 4.560000e-01, i32 1)
%43 = sitofp i32 %42 to double
%44 = fdiv double %43, 5.440000e-01
%45 = tail call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 1.600000e+00)
%46 = tail call i32 (double, double, ...) bitcast (i32 (...)* @gatecappass to i32 (double, double, ...)*)(double 2.400000e+00, double 1.600000e+00)
%47 = add nsw i32 %46, %45
%48 = sitofp i32 %47 to double
%49 = fadd double %48, 1.800000e-15
%50 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double %31, i32 1, i32 1)
%51 = sitofp i32 %50 to double
%52 = tail call double @llvm.fmuladd.f64(double %49, double %11, double %51)
%53 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @draincap to i32 (double, i32, i32, ...)*)(double %29, i32 0, i32 1)
%54 = sitofp i32 %53 to double
%55 = fadd double %52, %54
%56 = fmul double %11, 8.000000e-02
%57 = fmul double %56, 5.000000e-01
%58 = tail call i32 (double, i32, i32, ...) bitcast (i32 (...)* @transreson to i32 (double, i32, i32, ...)*)(double %29, i32 0, i32 1)
%59 = sitofp i32 %58 to double
%60 = fadd double %57, %59
%61 = fmul double %60, %55
%62 = tail call i32 (double, double, double, double, i32, ...) bitcast (i32 (...)* @horowitz to i32 (double, double, double, double, i32, ...)*)(double %44, double %61, double 4.560000e-01, double 4.560000e-01, i32 0)
%63 = sitofp i32 %62 to double
%64 = fdiv double %63, 4.560000e-01
store double %64, double* %5
%65 = fadd double %43, %63
ret double %65
}