#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double _rohair(double, double, double);
double h(double, double, double);
int pow(double, int);
int /*<<< orphan*/ printf(char *, int, double, ...);
double psih01(double);
double psih2(double);
double psim200(double);
double rah(double, double, double);
double rah0(double);
double ustar0(double, int, double);
double ustar2(double, double, double);
double dTair(double a[10], double b[10], double eto_alf, double kc,
             double dem_wet, double t0_wet, double Rnet_wet, double g0_wet,
             double dem_dry, double t0_dry, double Rnet_dry, double g0_dry) {
  int i;
  double eto = eto_alf;
  double LE_wet =
      eto * kc * (2.501 - 0.002361 * (t0_wet - 273.15)) * pow(10, 6) / 3600;
  double LE_dry = 0.0;
  double h_wet = Rnet_wet - g0_wet - LE_wet;
  if (h_wet < 0.0)
    h_wet = 0.0;
  double h_dry = Rnet_dry - g0_dry - LE_dry;
  printf("h_wet=%f\th_dry=%f\n", h_wet, h_dry);
  double airden_wet = 1000 * 101.3 * pow((293 - 0.0065 * dem_wet) / 293, 5.26) /
                      (1.01 * 287 * 293);
  double airden_dry = 1000 * 101.3 * pow((293 - 0.0065 * dem_dry) / 293, 5.26) /
                      (1.01 * 287 * 293);
  printf("airden_wet=%f\tairden_dry=%f\n", airden_wet, airden_dry);
  double ustar_wet = ustar0(3.6, 200, 0.75);
  double ustar_dry = ustar0(3.6, 200, 0.017);
  printf("ustar_wet=%f\tustar_dry=%f\n", ustar_wet, ustar_dry);
  double rah_wet = rah0(ustar_wet);
  double rah_dry = rah0(ustar_dry);
  printf("rah_wet=%f\trah_dry=%f\n", rah_wet, rah_dry);
  double dT_wet = h_wet * rah_wet / (airden_wet * 1004);
  double dT_dry = h_dry * rah_dry / (airden_dry * 1004);
  printf("dT_wet=%f\tdT_dry=%f\n", dT_wet, dT_dry);
  a[0] = 0.0;
  b[0] = 0.0;
  a[0] = (dT_dry - dT_wet) / (t0_dry - t0_wet);
  b[0] = (-1.0 * a[0] * t0_wet) + dT_wet;
  printf("a[0]=%f\tb[0]=%f\n", a[0], b[0]);
  double L_wet, L_dry;
  double psim200_wet, psim200_dry;
  double psih2_wet, psih2_dry;
  double psih01_wet, psih01_dry;
  double z0m_wet, z0m_dry;
  for (i = 1; i <= 8; i++) {
    a[i] = 0.0;
    b[i] = 0.0;
    airden_wet = _rohair(dem_wet, t0_wet, dT_wet);
    airden_dry = _rohair(dem_dry, t0_dry, dT_dry);
    h_wet = h(airden_wet, dT_wet, rah_wet);
    h_dry = h(airden_dry, dT_dry, rah_dry);
    if (h_wet == 0)
      L_wet = -1000;
    else
      L_wet = -1004 * airden_wet * pow(ustar_wet, 3) * t0_wet /
              (0.41 * h_wet * 9.81);
    if (h_dry == 0)
      L_dry = -1000;
    else
      L_dry = -1004 * airden_dry * pow(ustar_dry, 3) * t0_dry /
              (0.41 * h_dry * 9.81);
    psim200_wet = psim200(L_wet);
    psim200_dry = psim200(L_dry);
    psih2_wet = psih2(L_wet);
    psih2_dry = psih2(L_dry);
    psih01_wet = psih01(L_wet);
    psih01_dry = psih01(L_dry);
    z0m_wet = 0.12 * 0.75;
    z0m_dry = 0.12 * 0.02;
    ustar_wet = ustar2(3.6, z0m_wet, psim200_wet);
    ustar_dry = ustar2(3.6, z0m_dry, psim200_dry);
    rah_wet = rah(ustar_wet, psih2_wet, psih01_wet);
    rah_dry = rah(ustar_dry, psih2_dry, psih01_dry);
    dT_wet = h_wet * rah_wet / (airden_wet * 1004);
    dT_dry = h_dry * rah_dry / (airden_dry * 1004);
    a[i] = (dT_dry - dT_wet) / (t0_dry - t0_wet);
    b[i] = (-1.0 * a[i] * t0_wet) + dT_wet;
    printf("a[%d]=%f\tb[%d]=%f\n", i, a[i], i, b[i]);
  }
  return (0);
}


x86 assembly (clang, -O0):
<dTair>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  %xmm4,-0x38(%rbp)
movsd  %xmm5,-0x40(%rbp)
movsd  %xmm6,-0x48(%rbp)
movsd  %xmm7,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xe08(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0xdec(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xde8(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0xdc0(%rip),%xmm0
mov    $0x6,%edi
call   10c0 <pow@plt>
movsd  -0x118(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd96(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x78(%rbp),%xmm0
jbe    12a5 <dTair+0xf5>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x10(%rbp),%xmm0
subsd  0x18(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
cvttsd2si -0x78(%rbp),%esi
movsd  -0x80(%rbp),%xmm0
lea    0xdd6(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  -0x28(%rbp),%xmm0
movsd  0xd8a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd76(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd6a(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    $0x5,%edi
call   10c0 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xd48(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd34(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  0xd33(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd1f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd13(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    $0x5,%edi
call   10c0 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xcf1(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xcdd(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cvttsd2si -0x88(%rbp),%esi
ff
movsd  -0x90(%rbp),%xmm0
ff
lea    0xd1d(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0xc93(%rip),%xmm0
mov    $0xc8,%edi
movsd  0xc96(%rip),%xmm1
call   1090 <ustar0@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xc71(%rip),%xmm0
mov    $0xc8,%edi
movsd  0xc6c(%rip),%xmm1
call   1090 <ustar0@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
cvttsd2si -0x98(%rbp),%esi
ff
movsd  -0xa0(%rbp),%xmm0
ff
lea    0xcd8(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  -0x98(%rbp),%xmm0
ff
call   1030 <rah0@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1030 <rah0@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
cvttsd2si -0xa8(%rbp),%esi
ff
movsd  -0xb0(%rbp),%xmm0
ff
lea    0xcab(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  -0x78(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  0xbd4(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  0xbab(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
cvttsd2si -0xb8(%rbp),%esi
ff
movsd  -0xc0(%rbp),%xmm0
ff
lea    0xc52(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  0xb29(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cvttsd2si (%rax),%esi
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
lea    0xbe0(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movl   $0x1,-0x54(%rbp)
cmpl   $0x8,-0x54(%rbp)
jg     1935 <dTair+0x785>
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0xb8(%rbp),%xmm2
ff
call   10a0 <_rohair@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
call   10a0 <_rohair@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
call   1050 <h@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm2
ff
call   1050 <h@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    161e <dTair+0x46e>
jp     161e <dTair+0x46e>
movsd  0xa77(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1682 <dTair+0x4d2>
movsd  0xa5a(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
mov    $0x3,%edi
call   10c0 <pow@plt>
movsd  -0x120(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0xa13(%rip),%xmm1
mulsd  -0x78(%rbp),%xmm1
movsd  0x9fe(%rip),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    16af <dTair+0x4ff>
jp     16af <dTair+0x4ff>
movsd  0x9e6(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
jmp    1713 <dTair+0x563>
movsd  0x9c9(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mov    $0x3,%edi
call   10c0 <pow@plt>
movsd  -0x128(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0x982(%rip),%xmm1
mulsd  -0x80(%rbp),%xmm1
movsd  0x96d(%rip),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   1070 <psim200@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
call   1070 <psim200@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   1040 <psih2@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
call   1040 <psih2@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   10d0 <psih01@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
call   10d0 <psih01@plt>
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x8ff(%rip),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x8e7(%rip),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x108(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  0x86f(%rip),%xmm0
call   1080 <ustar2@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
movsd  0x84a(%rip),%xmm0
call   1080 <ustar2@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm2
ff
call   10b0 <rah@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm2
ff
call   10b0 <rah@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  0x7d6(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  0x7ad(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  0x756(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%esi
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x54(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
lea    0x808(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1545 <dTair+0x395>
xorps  %xmm0,%xmm0
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dTair>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0xb8,%rsp
movsd  %xmm7,0x78(%rsp)
movsd  %xmm6,0x98(%rsp)
movsd  %xmm5,(%rsp)
movsd  %xmm4,0x30(%rsp)
movsd  %xmm3,0x48(%rsp)
movsd  %xmm2,0x90(%rsp)
mov    %rsi,%r14
mov    %rdi,%r15
mulsd  %xmm1,%xmm0
movsd  0xe07(%rip),%xmm1
addsd  %xmm3,%xmm1
mulsd  0xe03(%rip),%xmm1
addsd  0xe03(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x60(%rsp)
movsd  0xdf9(%rip),%xmm0
mov    $0x6,%edi
call   10c0 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x60(%rsp),%xmm0
divsd  0xde2(%rip),%xmm0
movsd  0x30(%rsp),%xmm1
subsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
xorpd  %xmm1,%xmm1
maxsd  %xmm0,%xmm1
movapd %xmm1,(%rsp)
movsd  0xe0(%rsp),%xmm0
subsd  0xe8(%rsp),%xmm0
movapd %xmm0,0x30(%rsp)
cvttsd2si %xmm1,%esi
lea    0xe3f(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0x90(%rsp),%xmm0
mulsd  0xd8f(%rip),%xmm0
movsd  0xd8f(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
mov    $0x5,%edi
call   10c0 <pow@plt>
mov    %eax,%ebx
movsd  0xd6b(%rip),%xmm0
mulsd  0x98(%rsp),%xmm0
movsd  0xd62(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
mov    $0x5,%edi
call   10c0 <pow@plt>
movd   %ebx,%xmm0
movd   %eax,%xmm1
punpckldq %xmm0,%xmm1
cvtdq2pd %xmm1,%xmm1
mulpd  0xd78(%rip),%xmm1
divpd  0xd80(%rip),%xmm1
movapd %xmm1,%xmm0
movapd %xmm1,0x60(%rsp)
unpckhpd %xmm1,%xmm0
cvttsd2si %xmm0,%esi
lea    0xdba(%rip),%rdi
movapd %xmm1,%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0xd0c(%rip),%xmm0
movsd  0xd0c(%rip),%xmm1
mov    $0xc8,%edi
call   1090 <ustar0@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xcfc(%rip),%xmm1
movsd  0xce4(%rip),%xmm0
mov    $0xc8,%edi
call   1090 <ustar0@plt>
movsd  %xmm0,0x18(%rsp)
cvttsd2si 0x10(%rsp),%esi
lea    0xd7f(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0x10(%rsp),%xmm0
call   1030 <rah0@plt>
movaps %xmm0,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
call   1030 <rah0@plt>
movaps %xmm0,0x50(%rsp)
cvttsd2si 0x20(%rsp),%esi
lea    0xd66(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movapd 0x30(%rsp),%xmm0
unpcklpd (%rsp),%xmm0
movapd 0x50(%rsp),%xmm2
unpcklpd 0x20(%rsp),%xmm2
mulpd  %xmm0,%xmm2
movapd 0x60(%rsp),%xmm0
mulpd  0xcbb(%rip),%xmm0
divpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
movapd %xmm2,(%rsp)
unpckhpd %xmm2,%xmm0
movapd %xmm0,0x30(%rsp)
cvttsd2si %xmm0,%esi
lea    0xd2b(%rip),%rdi
movapd %xmm2,%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
movapd (%rsp),%xmm0
movapd 0x30(%rsp),%xmm3
subsd  %xmm3,%xmm0
movsd  0x78(%rsp),%xmm1
movsd  0x48(%rsp),%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0xa0(%rsp)
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r15)
mulsd  %xmm2,%xmm0
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r14)
movapd %xmm1,%xmm0
cvttsd2si (%r15),%esi
lea    0xce3(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    $0x1,%ebx
lea    0xce1(%rip),%r12
jmp    15e1 <dTair+0x431>
nopl   0x0(%rax)
movapd %xmm0,(%rsp)
movapd %xmm3,%xmm0
call   1070 <psim200@plt>
movsd  %xmm0,0x10(%rsp)
movaps (%rsp),%xmm0
call   1070 <psim200@plt>
movsd  %xmm0,0x18(%rsp)
movaps 0x20(%rsp),%xmm0
call   1040 <psih2@plt>
movsd  %xmm0,0xa8(%rsp)
movaps (%rsp),%xmm0
call   1040 <psih2@plt>
movsd  %xmm0,0xb0(%rsp)
movaps 0x20(%rsp),%xmm0
call   10d0 <psih01@plt>
movsd  %xmm0,0x20(%rsp)
movaps (%rsp),%xmm0
call   10d0 <psih01@plt>
movsd  %xmm0,(%rsp)
movsd  0xb5a(%rip),%xmm0
movsd  0xb72(%rip),%xmm1
movsd  0x10(%rsp),%xmm2
call   1080 <ustar2@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xb39(%rip),%xmm0
movsd  0xb59(%rip),%xmm1
movsd  0x18(%rsp),%xmm2
call   1080 <ustar2@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  0xa8(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   10b0 <rah@plt>
movaps %xmm0,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  0xb0(%rsp),%xmm1
movsd  (%rsp),%xmm2
call   10b0 <rah@plt>
movapd 0x50(%rsp),%xmm1
unpcklpd 0x80(%rsp),%xmm1
movapd %xmm0,0x50(%rsp)
movapd %xmm0,%xmm2
unpcklpd 0x20(%rsp),%xmm2
mulpd  %xmm1,%xmm2
movapd 0x60(%rsp),%xmm0
unpcklpd 0x30(%rsp),%xmm0
mulpd  0xb09(%rip),%xmm0
divpd  %xmm0,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
movapd %xmm2,(%rsp)
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
divsd  0xa0(%rsp),%xmm0
movsd  %xmm0,(%r15,%rbx,8)
mulsd  0x48(%rsp),%xmm0
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r14,%rbx,8)
movsd  (%r15,%rbx,8),%xmm0
mov    %r12,%rdi
mov    %ebx,%esi
mov    %ebx,%edx
mov    $0x2,%al
call   1060 <printf@plt>
add    $0x1,%rbx
cmp    $0x9,%rbx
je     1756 <dTair+0x5a6>
movq   $0x0,(%r15,%rbx,8)
movq   $0x0,(%r14,%rbx,8)
movaps (%rsp),%xmm2
movhlps %xmm2,%xmm2
movaps %xmm2,0x80(%rsp)
movsd  0x90(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
call   10a0 <_rohair@plt>
movaps %xmm0,0x30(%rsp)
movsd  0x98(%rsp),%xmm0
movsd  0x78(%rsp),%xmm1
movaps (%rsp),%xmm2
call   10a0 <_rohair@plt>
movaps %xmm0,0x60(%rsp)
movaps 0x30(%rsp),%xmm0
movaps 0x80(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
call   1050 <h@plt>
movaps %xmm0,0x80(%rsp)
movapd 0x60(%rsp),%xmm0
movaps (%rsp),%xmm1
movaps 0x50(%rsp),%xmm2
call   1050 <h@plt>
movapd %xmm0,%xmm2
xorpd  %xmm0,%xmm0
movapd 0x80(%rsp),%xmm1
ucomisd %xmm0,%xmm1
movsd  0x9ca(%rip),%xmm1
movapd %xmm1,%xmm3
movapd %xmm2,0x50(%rsp)
jne    1694 <dTair+0x4e4>
jnp    16ef <dTair+0x53f>
movsd  0x10(%rsp),%xmm0
mov    $0x3,%edi
call   10c0 <pow@plt>
movapd 0x50(%rsp),%xmm2
movapd 0x30(%rsp),%xmm0
unpcklpd 0x80(%rsp),%xmm0
mulpd  0x9df(%rip),%xmm0
movapd 0x9e7(%rip),%xmm1
cvtsi2sd %eax,%xmm1
mulpd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
movapd %xmm1,%xmm3
mulsd  0x48(%rsp),%xmm3
unpckhpd %xmm1,%xmm1
divsd  %xmm1,%xmm3
movsd  0x961(%rip),%xmm1
ucomisd %xmm0,%xmm2
movapd %xmm1,%xmm0
movapd %xmm3,0x20(%rsp)
jne    1705 <dTair+0x555>
jnp    1470 <dTair+0x2c0>
movsd  0x18(%rsp),%xmm0
mov    $0x3,%edi
call   10c0 <pow@plt>
movapd 0x20(%rsp),%xmm3
movapd 0x60(%rsp),%xmm0
unpcklpd 0x50(%rsp),%xmm0
mulpd  0x971(%rip),%xmm0
movapd 0x979(%rip),%xmm1
cvtsi2sd %eax,%xmm1
mulpd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mulsd  0x78(%rsp),%xmm0
unpckhpd %xmm1,%xmm1
divsd  %xmm1,%xmm0
jmp    1470 <dTair+0x2c0>
xorpd  %xmm0,%xmm0
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [19 x i8] c"h_wet=%f\09h_dry=%f\0A\00"
@.str.1 = [29 x i8] c"airden_wet=%f\09airden_dry=%f\0A\00"
@.str.2 = [27 x i8] c"ustar_wet=%f\09ustar_dry=%f\0A\00"
@.str.3 = [23 x i8] c"rah_wet=%f\09rah_dry=%f\0A\00"
@.str.4 = [21 x i8] c"dT_wet=%f\09dT_dry=%f\0A\00"
@.str.5 = [17 x i8] c"a[0]=%f\09b[0]=%f\0A\00"
@.str.6 = [19 x i8] c"a[%d]=%f\09b[%d]=%f\0A\00"
define double @dTair(double* %0, double* %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11) {
%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 double
%25 = alloca i32
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
store double* %0, double** %13
store double* %1, double** %14
store double %2, double* %15
store double %3, double* %16
store double %4, double* %17
store double %5, double* %18
store double %6, double* %19
store double %7, double* %20
store double %8, double* %21
store double %9, double* %22
store double %10, double* %23
store double %11, double* %24
%49 = load double, double* %15
store double %49, double* %26
%50 = load double, double* %26
%51 = load double, double* %16
%52 = fmul double %50, %51
%53 = load double, double* %18
%54 = fsub double %53, 2.731500e+02
%55 = call double @llvm.fmuladd.f64(double -2.361000e-03, double %54, double 2.501000e+00)
%56 = fmul double %52, %55
%57 = call i32 @pow(double 1.000000e+01, i32 6)
%58 = sitofp i32 %57 to double
%59 = fmul double %56, %58
%60 = fdiv double %59, 3.600000e+03
store double %60, double* %27
store double 0.000000e+00, double* %28
%61 = load double, double* %19
%62 = load double, double* %20
%63 = fsub double %61, %62
%64 = load double, double* %27
%65 = fsub double %63, %64
store double %65, double* %29
%66 = load double, double* %29
%67 = fcmp olt double %66, 0.000000e+00
br i1 %67, label %68, label %69
68: ; preds = %12
store double 0.000000e+00, double* %29
br label %69
69: ; preds = %68, %12
%70 = load double, double* %23
%71 = load double, double* %24
%72 = fsub double %70, %71
%73 = load double, double* %28
%74 = fsub double %72, %73
store double %74, double* %30
%75 = load double, double* %29
%76 = fptosi double %75 to i32
%77 = load double, double* %30
%78 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %76, double %77)
%79 = load double, double* %17
%80 = call double @llvm.fmuladd.f64(double 0xBF7A9FBE76C8B439, double %79, double 2.930000e+02)
%81 = fdiv double %80, 2.930000e+02
%82 = call i32 @pow(double %81, i32 5)
%83 = sitofp i32 %82 to double
%84 = fmul double 1.013000e+05, %83
%85 = fdiv double %84, 0x40F4BC3E8F5C28F6
store double %85, double* %31
%86 = load double, double* %21
%87 = call double @llvm.fmuladd.f64(double 0xBF7A9FBE76C8B439, double %86, double 2.930000e+02)
%88 = fdiv double %87, 2.930000e+02
%89 = call i32 @pow(double %88, i32 5)
%90 = sitofp i32 %89 to double
%91 = fmul double 1.013000e+05, %90
%92 = fdiv double %91, 0x40F4BC3E8F5C28F6
store double %92, double* %32
%93 = load double, double* %31
%94 = fptosi double %93 to i32
%95 = load double, double* %32
%96 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.1, i64 0, i64 0), i32 %94, double %95)
%97 = call double @ustar0(double 3.600000e+00, i32 200, double 7.500000e-01)
store double %97, double* %33
%98 = call double @ustar0(double 3.600000e+00, i32 200, double 1.700000e-02)
store double %98, double* %34
%99 = load double, double* %33
%100 = fptosi double %99 to i32
%101 = load double, double* %34
%102 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0), i32 %100, double %101)
%103 = load double, double* %33
%104 = call double @rah0(double %103)
store double %104, double* %35
%105 = load double, double* %34
%106 = call double @rah0(double %105)
store double %106, double* %36
%107 = load double, double* %35
%108 = fptosi double %107 to i32
%109 = load double, double* %36
%110 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0), i32 %108, double %109)
%111 = load double, double* %29
%112 = load double, double* %35
%113 = fmul double %111, %112
%114 = load double, double* %31
%115 = fmul double %114, 1.004000e+03
%116 = fdiv double %113, %115
store double %116, double* %37
%117 = load double, double* %30
%118 = load double, double* %36
%119 = fmul double %117, %118
%120 = load double, double* %32
%121 = fmul double %120, 1.004000e+03
%122 = fdiv double %119, %121
store double %122, double* %38
%123 = load double, double* %37
%124 = fptosi double %123 to i32
%125 = load double, double* %38
%126 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i32 %124, double %125)
%127 = load double*, double** %13
%128 = getelementptr inbounds double, double* %127, i64 0
store double 0.000000e+00, double* %128
%129 = load double*, double** %14
%130 = getelementptr inbounds double, double* %129, i64 0
store double 0.000000e+00, double* %130
%131 = load double, double* %38
%132 = load double, double* %37
%133 = fsub double %131, %132
%134 = load double, double* %22
%135 = load double, double* %18
%136 = fsub double %134, %135
%137 = fdiv double %133, %136
%138 = load double*, double** %13
%139 = getelementptr inbounds double, double* %138, i64 0
store double %137, double* %139
%140 = load double*, double** %13
%141 = getelementptr inbounds double, double* %140, i64 0
%142 = load double, double* %141
%143 = fmul double -1.000000e+00, %142
%144 = load double, double* %18
%145 = load double, double* %37
%146 = call double @llvm.fmuladd.f64(double %143, double %144, double %145)
%147 = load double*, double** %14
%148 = getelementptr inbounds double, double* %147, i64 0
store double %146, double* %148
%149 = load double*, double** %13
%150 = getelementptr inbounds double, double* %149, i64 0
%151 = load double, double* %150
%152 = fptosi double %151 to i32
%153 = load double*, double** %14
%154 = getelementptr inbounds double, double* %153, i64 0
%155 = load double, double* %154
%156 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0), i32 %152, double %155)
store i32 1, i32* %25
br label %157
157: ; preds = %294, %69
%158 = load i32, i32* %25
%159 = icmp sle i32 %158, 8
br i1 %159, label %160, label %297
160: ; preds = %157
%161 = load double*, double** %13
%162 = load i32, i32* %25
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds double, double* %161, i64 %163
store double 0.000000e+00, double* %164
%165 = load double*, double** %14
%166 = load i32, i32* %25
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
store double 0.000000e+00, double* %168
%169 = load double, double* %17
%170 = load double, double* %18
%171 = load double, double* %37
%172 = call double @_rohair(double %169, double %170, double %171)
store double %172, double* %31
%173 = load double, double* %21
%174 = load double, double* %22
%175 = load double, double* %38
%176 = call double @_rohair(double %173, double %174, double %175)
store double %176, double* %32
%177 = load double, double* %31
%178 = load double, double* %37
%179 = load double, double* %35
%180 = call double @h(double %177, double %178, double %179)
store double %180, double* %29
%181 = load double, double* %32
%182 = load double, double* %38
%183 = load double, double* %36
%184 = call double @h(double %181, double %182, double %183)
store double %184, double* %30
%185 = load double, double* %29
%186 = fcmp oeq double %185, 0.000000e+00
br i1 %186, label %187, label %188
187: ; preds = %160
store double -1.000000e+03, double* %39
br label %201
188: ; preds = %160
%189 = load double, double* %31
%190 = fmul double -1.004000e+03, %189
%191 = load double, double* %33
%192 = call i32 @pow(double %191, i32 3)
%193 = sitofp i32 %192 to double
%194 = fmul double %190, %193
%195 = load double, double* %18
%196 = fmul double %194, %195
%197 = load double, double* %29
%198 = fmul double 4.100000e-01, %197
%199 = fmul double %198, 9.810000e+00
%200 = fdiv double %196, %199
store double %200, double* %39
br label %201
201: ; preds = %188, %187
%202 = load double, double* %30
%203 = fcmp oeq double %202, 0.000000e+00
br i1 %203, label %204, label %205
204: ; preds = %201
store double -1.000000e+03, double* %40
br label %218
205: ; preds = %201
%206 = load double, double* %32
%207 = fmul double -1.004000e+03, %206
%208 = load double, double* %34
%209 = call i32 @pow(double %208, i32 3)
%210 = sitofp i32 %209 to double
%211 = fmul double %207, %210
%212 = load double, double* %22
%213 = fmul double %211, %212
%214 = load double, double* %30
%215 = fmul double 4.100000e-01, %214
%216 = fmul double %215, 9.810000e+00
%217 = fdiv double %213, %216
store double %217, double* %40
br label %218
218: ; preds = %205, %204
%219 = load double, double* %39
%220 = call double @psim200(double %219)
store double %220, double* %41
%221 = load double, double* %40
%222 = call double @psim200(double %221)
store double %222, double* %42
%223 = load double, double* %39
%224 = call double @psih2(double %223)
store double %224, double* %43
%225 = load double, double* %40
%226 = call double @psih2(double %225)
store double %226, double* %44
%227 = load double, double* %39
%228 = call double @psih01(double %227)
store double %228, double* %45
%229 = load double, double* %40
%230 = call double @psih01(double %229)
store double %230, double* %46
store double 0x3FB70A3D70A3D70A, double* %47
store double 2.400000e-03, double* %48
%231 = load double, double* %47
%232 = load double, double* %41
%233 = call double @ustar2(double 3.600000e+00, double %231, double %232)
store double %233, double* %33
%234 = load double, double* %48
%235 = load double, double* %42
%236 = call double @ustar2(double 3.600000e+00, double %234, double %235)
store double %236, double* %34
%237 = load double, double* %33
%238 = load double, double* %43
%239 = load double, double* %45
%240 = call double @rah(double %237, double %238, double %239)
store double %240, double* %35
%241 = load double, double* %34
%242 = load double, double* %44
%243 = load double, double* %46
%244 = call double @rah(double %241, double %242, double %243)
store double %244, double* %36
%245 = load double, double* %29
%246 = load double, double* %35
%247 = fmul double %245, %246
%248 = load double, double* %31
%249 = fmul double %248, 1.004000e+03
%250 = fdiv double %247, %249
store double %250, double* %37
%251 = load double, double* %30
%252 = load double, double* %36
%253 = fmul double %251, %252
%254 = load double, double* %32
%255 = fmul double %254, 1.004000e+03
%256 = fdiv double %253, %255
store double %256, double* %38
%257 = load double, double* %38
%258 = load double, double* %37
%259 = fsub double %257, %258
%260 = load double, double* %22
%261 = load double, double* %18
%262 = fsub double %260, %261
%263 = fdiv double %259, %262
%264 = load double*, double** %13
%265 = load i32, i32* %25
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds double, double* %264, i64 %266
store double %263, double* %267
%268 = load double*, double** %13
%269 = load i32, i32* %25
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds double, double* %268, i64 %270
%272 = load double, double* %271
%273 = fmul double -1.000000e+00, %272
%274 = load double, double* %18
%275 = load double, double* %37
%276 = call double @llvm.fmuladd.f64(double %273, double %274, double %275)
%277 = load double*, double** %14
%278 = load i32, i32* %25
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds double, double* %277, i64 %279
store double %276, double* %280
%281 = load i32, i32* %25
%282 = load double*, double** %13
%283 = load i32, i32* %25
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds double, double* %282, i64 %284
%286 = load double, double* %285
%287 = load i32, i32* %25
%288 = load double*, double** %14
%289 = load i32, i32* %25
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds double, double* %288, i64 %290
%292 = load double, double* %291
%293 = call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), i32 %281, double %286, i32 %287, double %292)
br label %294
294: ; preds = %218
%295 = load i32, i32* %25
%296 = add nsw i32 %295, 1
store i32 %296, i32* %25
br label %157
297: ; preds = %157
ret double 0.000000e+00
}

LLVM IR (-O2):
@.str = [19 x i8] c"h_wet=%f\09h_dry=%f\0A\00"
@.str.1 = [29 x i8] c"airden_wet=%f\09airden_dry=%f\0A\00"
@.str.2 = [27 x i8] c"ustar_wet=%f\09ustar_dry=%f\0A\00"
@.str.3 = [23 x i8] c"rah_wet=%f\09rah_dry=%f\0A\00"
@.str.4 = [21 x i8] c"dT_wet=%f\09dT_dry=%f\0A\00"
@.str.5 = [17 x i8] c"a[0]=%f\09b[0]=%f\0A\00"
@.str.6 = [19 x i8] c"a[%d]=%f\09b[%d]=%f\0A\00"
define double @dTair(double* nocapture %0, double* nocapture writeonly %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11) {
%13 = fmul double %2, %3
%14 = fadd double %5, -2.731500e+02
%15 = tail call double @llvm.fmuladd.f64(double %14, double -2.361000e-03, double 2.501000e+00)
%16 = fmul double %13, %15
%17 = tail call i32 @pow(double 1.000000e+01, i32 6)
%18 = sitofp i32 %17 to double
%19 = fmul double %16, %18
%20 = fdiv double %19, 3.600000e+03
%21 = fsub double %6, %7
%22 = fsub double %21, %20
%23 = fcmp olt double %22, 0.000000e+00
%24 = select i1 %23, double 0.000000e+00, double %22
%25 = fsub double %10, %11
%26 = fptosi double %24 to i32
%27 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %26, double %25)
%28 = tail call double @llvm.fmuladd.f64(double %4, double 0xBF7A9FBE76C8B439, double 2.930000e+02)
%29 = fdiv double %28, 2.930000e+02
%30 = tail call i32 @pow(double %29, i32 5)
%31 = tail call double @llvm.fmuladd.f64(double %8, double 0xBF7A9FBE76C8B439, double 2.930000e+02)
%32 = fdiv double %31, 2.930000e+02
%33 = tail call i32 @pow(double %32, i32 5)
%34 = insertelement <2 x i32> poison, i32 %33, i64 0
%35 = insertelement <2 x i32> %34, i32 %30, i64 1
%36 = sitofp <2 x i32> %35 to <2 x double>
%37 = fmul <2 x double> %36, <double 1.013000e+05, double 1.013000e+05>
%38 = fdiv <2 x double> %37, <double 0x40F4BC3E8F5C28F6, double 0x40F4BC3E8F5C28F6>
%39 = extractelement <2 x double> %38, i64 1
%40 = fptosi double %39 to i32
%41 = extractelement <2 x double> %38, i64 0
%42 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.1, i64 0, i64 0), i32 %40, double %41)
%43 = tail call double @ustar0(double 3.600000e+00, i32 200, double 7.500000e-01)
%44 = tail call double @ustar0(double 3.600000e+00, i32 200, double 1.700000e-02)
%45 = fptosi double %43 to i32
%46 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0), i32 %45, double %44)
%47 = tail call double @rah0(double %43)
%48 = tail call double @rah0(double %44)
%49 = fptosi double %47 to i32
%50 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0), i32 %49, double %48)
%51 = insertelement <2 x double> poison, double %25, i64 0
%52 = insertelement <2 x double> %51, double %24, i64 1
%53 = insertelement <2 x double> poison, double %48, i64 0
%54 = insertelement <2 x double> %53, double %47, i64 1
%55 = fmul <2 x double> %52, %54
%56 = fmul <2 x double> %38, <double 1.004000e+03, double 1.004000e+03>
%57 = fdiv <2 x double> %55, %56
%58 = extractelement <2 x double> %57, i64 1
%59 = fptosi double %58 to i32
%60 = extractelement <2 x double> %57, i64 0
%61 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i32 %59, double %60)
%62 = fsub double %60, %58
%63 = fsub double %9, %5
%64 = fdiv double %62, %63
store double %64, double* %0
%65 = fneg double %64
%66 = tail call double @llvm.fmuladd.f64(double %65, double %5, double %58)
store double %66, double* %1
%67 = load double, double* %0
%68 = fptosi double %67 to i32
%69 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0), i32 %68, double %66)
br label %70
70: ; preds = %12, %113
%71 = phi i64 [ 1, %12 ], [ %143, %113 ]
%72 = phi double [ %43, %12 ], [ %121, %113 ]
%73 = phi double [ %44, %12 ], [ %122, %113 ]
%74 = phi double [ %47, %12 ], [ %123, %113 ]
%75 = phi double [ %48, %12 ], [ %124, %113 ]
%76 = phi <2 x double> [ %57, %12 ], [ %133, %113 ]
%77 = getelementptr inbounds double, double* %0, i64 %71
store double 0.000000e+00, double* %77
%78 = getelementptr inbounds double, double* %1, i64 %71
store double 0.000000e+00, double* %78
%79 = extractelement <2 x double> %76, i64 1
%80 = tail call double @_rohair(double %4, double %5, double %79)
%81 = extractelement <2 x double> %76, i64 0
%82 = tail call double @_rohair(double %8, double %9, double %81)
%83 = tail call double @h(double %80, double %79, double %74)
%84 = tail call double @h(double %82, double %81, double %75)
%85 = fcmp oeq double %83, 0.000000e+00
br i1 %85, label %98, label %86
86: ; preds = %70
%87 = tail call i32 @pow(double %72, i32 3)
%88 = sitofp i32 %87 to double
%89 = insertelement <2 x double> poison, double %80, i64 0
%90 = insertelement <2 x double> %89, double %83, i64 1
%91 = fmul <2 x double> %90, <double -1.004000e+03, double 4.100000e-01>
%92 = insertelement <2 x double> <double poison, double 9.810000e+00>, double %88, i64 0
%93 = fmul <2 x double> %91, %92
%94 = extractelement <2 x double> %93, i64 0
%95 = fmul double %94, %5
%96 = extractelement <2 x double> %93, i64 1
%97 = fdiv double %95, %96
br label %98
98: ; preds = %70, %86
%99 = phi double [ %97, %86 ], [ -1.000000e+03, %70 ]
%100 = fcmp oeq double %84, 0.000000e+00
br i1 %100, label %113, label %101
101: ; preds = %98
%102 = tail call i32 @pow(double %73, i32 3)
%103 = sitofp i32 %102 to double
%104 = insertelement <2 x double> poison, double %82, i64 0
%105 = insertelement <2 x double> %104, double %84, i64 1
%106 = fmul <2 x double> %105, <double -1.004000e+03, double 4.100000e-01>
%107 = insertelement <2 x double> <double poison, double 9.810000e+00>, double %103, i64 0
%108 = fmul <2 x double> %106, %107
%109 = extractelement <2 x double> %108, i64 0
%110 = fmul double %109, %9
%111 = extractelement <2 x double> %108, i64 1
%112 = fdiv double %110, %111
br label %113
113: ; preds = %98, %101
%114 = phi double [ %112, %101 ], [ -1.000000e+03, %98 ]
%115 = tail call double @psim200(double %99)
%116 = tail call double @psim200(double %114)
%117 = tail call double @psih2(double %99)
%118 = tail call double @psih2(double %114)
%119 = tail call double @psih01(double %99)
%120 = tail call double @psih01(double %114)
%121 = tail call double @ustar2(double 3.600000e+00, double 0x3FB70A3D70A3D70A, double %115)
%122 = tail call double @ustar2(double 3.600000e+00, double 2.400000e-03, double %116)
%123 = tail call double @rah(double %121, double %117, double %119)
%124 = tail call double @rah(double %122, double %118, double %120)
%125 = insertelement <2 x double> poison, double %84, i64 0
%126 = insertelement <2 x double> %125, double %83, i64 1
%127 = insertelement <2 x double> poison, double %124, i64 0
%128 = insertelement <2 x double> %127, double %123, i64 1
%129 = fmul <2 x double> %126, %128
%130 = insertelement <2 x double> poison, double %82, i64 0
%131 = insertelement <2 x double> %130, double %80, i64 1
%132 = fmul <2 x double> %131, <double 1.004000e+03, double 1.004000e+03>
%133 = fdiv <2 x double> %129, %132
%134 = extractelement <2 x double> %133, i64 0
%135 = extractelement <2 x double> %133, i64 1
%136 = fsub double %134, %135
%137 = fdiv double %136, %63
store double %137, double* %77
%138 = fneg double %137
%139 = tail call double @llvm.fmuladd.f64(double %138, double %5, double %135)
store double %139, double* %78
%140 = load double, double* %77
%141 = trunc i64 %71 to i32
%142 = tail call i32 (i8*, i32, double, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), i32 %141, double %140, i32 %141, double %139)
%143 = add nuw nsw i64 %71, 1
%144 = icmp eq i64 %143, 9
br i1 %144, label %145, label %70
145: ; preds = %113
ret double 0.000000e+00
}