user: 请从给定的汇编指令推导出C源代码:

```asm
<kb_1>:
  endbr64
  push   %rbx
  movq   %xmm5,%rbx
  movapd %xmm1,%xmm7
  sub    $0x50,%rsp
  movsd  D180(%rip),%xmm5
  movsd  %xmm0,0x20(%rsp)
  subsd  %xmm4,%xmm5
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,(%rsp)
  pxor   %xmm5,%xmm5
  ucomisd %xmm5,%xmm4
  jp     L67
  jne    L67
  movsd  D230(%rip),%xmm2
  movsd  D32(%rip),%xmm1
  movsd  D8(%rip),%xmm8
  movsd  %xmm2,0x8(%rsp)
L34:
  movapd %xmm7,%xmm0
  subsd  %xmm1,%xmm0
  divsd  %xmm8,%xmm0
  ucomisd %xmm0,%xmm5
  jae    L64
L76:
  movapd %xmm3,%xmm0
  movsd  %xmm4,0x48(%rsp)
  mulsd  D3(%rip),%xmm0
  movsd  %xmm2,0x40(%rsp)
  movsd  %xmm7,0x38(%rsp)
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm3,0x28(%rsp)
  call   <exp@plt>
  movsd  D241(%rip),%xmm6
  movapd %xmm0,%xmm1
  movsd  D211(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  D45(%rip),%xmm1
  subsd  %xmm0,%xmm6
  movq   %rbx,%xmm0
  divsd  D166(%rip),%xmm0
  movsd  %xmm6,0x18(%rsp)
  call   <pow@plt>
  movsd  0x18(%rsp),%xmm6
  pxor   %xmm5,%xmm5
  movsd  0x28(%rsp),%xmm3
  movapd %xmm0,%xmm1
  movsd  D21(%rip),%xmm0
  divsd  0x10(%rsp),%xmm0
  movsd  0x30(%rsp),%xmm8
  mulsd  D76(%rip),%xmm0
  movsd  0x38(%rsp),%xmm7
  mulsd  D133(%rip),%xmm3
  movsd  0x40(%rsp),%xmm2
  movsd  0x48(%rsp),%xmm4
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm6,%xmm0
  mulsd  %xmm6,%xmm0
  addsd  %xmm0,%xmm0
  divsd  %xmm0,%xmm3
  ucomisd %xmm5,%xmm3
  jp     L14
  movsd  D74(%rip),%xmm1
  jne    L14
L72:
  divsd  %xmm2,%xmm8
  addsd  %xmm4,%xmm4
  movapd %xmm7,%xmm0
  movsd  %xmm1,0x28(%rsp)
  mulsd  %xmm1,%xmm6
  divsd  0x8(%rsp),%xmm0
  mulsd  (%rsp),%xmm4
  mulsd  %xmm8,%xmm6
  mulsd  %xmm4,%xmm6
  addsd  %xmm5,%xmm6
  movsd  %xmm6,0x18(%rsp)
  call   <log@plt>
  movsd  0x28(%rsp),%xmm1
  movapd %xmm0,%xmm2
  movsd  0x20(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D234(%rip),%xmm1
  divsd  %xmm2,%xmm0
  mulsd  0x8(%rsp),%xmm0
  divsd  0x10(%rsp),%xmm0
  mulsd  D132(%rip),%xmm0
  call   <pow@plt>
  subsd  D1(%rip),%xmm0
  movsd  (%rsp),%xmm7
  mulsd  %xmm7,%xmm0
  mulsd  %xmm7,%xmm0
  addsd  0x18(%rsp),%xmm0
  add    $0x50,%rsp
  pop    %rbx
  ret
  cs nopw 0x0(%rax,%rax,1)
L67:
  movsd  D61(%rip),%xmm1
  movsd  D230(%rip),%xmm6
  movsd  D150(%rip),%xmm8
  mulsd  %xmm2,%xmm1
  movsd  %xmm6,0x8(%rsp)
  mulsd  %xmm2,%xmm8
  jmp    L34
  nopl   (%rax)
L14:
  xorpd  D182(%rip),%xmm3
  movsd  %xmm4,0x40(%rsp)
  mulsd  D105(%rip),%xmm3
  movsd  %xmm2,0x38(%rsp)
  movsd  %xmm7,0x30(%rsp)
  movsd  %xmm8,0x28(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movapd %xmm3,%xmm0
  call   <exp@plt>
  movsd  0x40(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm6
  movapd %xmm0,%xmm9
  movsd  D133(%rip),%xmm0
  movsd  D180(%rip),%xmm3
  movapd %xmm4,%xmm5
  movsd  D74(%rip),%xmm1
  movsd  0x38(%rsp),%xmm2
  mulsd  %xmm4,%xmm5
  subsd  %xmm9,%xmm3
  movsd  0x30(%rsp),%xmm7
  movsd  0x28(%rsp),%xmm8
  mulsd  %xmm6,%xmm0
  mulsd  %xmm1,%xmm5
  mulsd  D133(%rip),%xmm5
  mulsd  %xmm3,%xmm0
  divsd  %xmm0,%xmm5
  jmp    L72
L64:
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm7,0x28(%rsp)
  movsd  %xmm8,0x18(%rsp)
  call   <log@plt>
  movsd  0x40(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm3
  movsd  0x30(%rsp),%xmm2
  movsd  0x28(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm8
  jmp    L76
```

tool_calls: name: parse_data
arguments: data_label: D180
datatype: f64
name: parse_data
arguments: data_label: D230
datatype: f64
name: parse_data
arguments: data_label: D32
datatype: byte[8]
name: parse_data
arguments: data_label: D8
datatype: byte[8]
name: parse_data
arguments: data_label: D3
datatype: byte[8]
name: parse_data
arguments: data_label: D241
datatype: f64
name: parse_data
arguments: data_label: D211
datatype: f64
name: parse_data
arguments: data_label: D45
datatype: f64
name: parse_data
arguments: data_label: D166
datatype: f64
name: parse_data
arguments: data_label: D21
datatype: f64
name: parse_data
arguments: data_label: D76
datatype: byte[8]
name: parse_data
arguments: data_label: D133
datatype: f64
name: parse_data
arguments: data_label: D74
datatype: f64
name: parse_data
arguments: data_label: D234
datatype: f64
name: parse_data
arguments: data_label: D132
datatype: f64
name: parse_data
arguments: data_label: D1
datatype: byte[8]
name: parse_data
arguments: data_label: D61
datatype: f64
name: parse_data
arguments: data_label: D150
datatype: f64
name: parse_data
arguments: data_label: D182
datatype: f32[4]
name: parse_data
arguments: data_label: D105
datatype: f32[2]

tool: D180: 1

tool: D230: 0.009

tool: {"D32": [0x16,0xa1,0xd8,0x0a,0x9a,0x96,0x78,0x3f]}

tool: {"D8": [0xf3,0x75,0x19,0xfe,0xd3,0x0d,0x54,0x3f]}

tool: {"D3": [0x29,0x5c,0x8f,0xc2,0xf5,0x28,0x08,0x40]}

tool: D241: 0.32

tool: D211: 0.264

tool: D45: 1.81

tool: D166: 273.15

tool: D21: 101325

tool: {"D76": [0xb8,0x69,0x9e,0xe9,0x46,0xd4,0xeb,0x3e]}

tool: D133: 0.2

tool: D74: 0.4

tool: D234: 0.25

tool: D132: 2.46

tool: {"D1": [0x24,0x01,0x44,0xf2,0x07,0x03,0x00,0x40]}

tool: D61: 0.667

tool: D150: 0.136

tool: {"D182": [0.0,-0.0,0.0,0.0]}

tool: {"D105": [0.0,1.75]}

assistant: ```c
double kb_1(double u_zref, double zref, double h, double lai, double fc, double tempka, double pa) {
  double c_d = 0.2;
  double c_t = 0.05;
  double k = 0.4;
  double Pr = 0.7;
  double hs = 0.009;
  double fs = 1.0 - fc;
  if (fc == 0.0)
    h = hs;
  double z0 = 0.136 * h;
  double u_h0 = u_zref * log(2.446) / log((zref - 0.667 * h) / z0);
  double ust2u_h = 0.32 - 0.264 / exp(15.1 * c_d * lai);
  double ustarh = ust2u_h * u_h0;
  double nu0 = 1.327 * pow(10, -5) * (101325.0 / pa) * pow((tempka / 273.15), 1.81);
  double nec = c_d * lai / (2.0 * pow(ust2u_h, 2));
  double re_star = hs * ustarh / nu0;
  double kb1;
  if (nec != 0.0)
    kb1 = (fc * fc) * k * c_d / (4.0 * c_t * ust2u_h * (1.0 - exp(-nec / 2.0)));
  else
    kb1 = 0.0;
  double c_t_star = pow(Pr, -2 / 3) * pow(re_star, -1 / 2);
  kb1 = kb1 + 2 * fc * fs * (k * ust2u_h * (z0 / h)) / c_t_star;
  re_star = hs * (u_zref * k / log(zref / hs)) / nu0;
  double kb1soil = pow(2.46 * (re_star), 0.25);
  kb1 = kb1 + (kb1soil - log(7.4)) * fs * fs;
  return (kb1);
}
```