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

```asm
<heatindex_F>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  cmpl   $0x3e7,-0x14(%rbp)
  je     L33
  cmpl   $0x45,-0x14(%rbp)
  jle    L33
  cmpl   $0x0,-0x18(%rbp)
  jns    L6
L33:
  mov    $0x3e7,%eax
  jmp    L22
L6:
  mov    -0x14(%rbp),%eax
  imul   %eax,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  imul   -0x14(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  imul   %eax,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x14(%rbp),%xmm1
  movsd  D102(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x18(%rbp),%xmm2
  movsd  D133(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x14(%rbp),%xmm2
  movsd  D116(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x18(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movsd  D25(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x8(%rbp),%xmm2
  movsd  D69(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movsd  D91(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x18(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x14(%rbp),%xmm2
  movsd  D27(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x8(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movsd  D15(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x8(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc(%rbp),%xmm2
  movsd  D147(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x4(%rbp),%xmm2
  movsd  D105(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc(%rbp),%xmm2
  movsd  D29(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x18(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x14(%rbp),%xmm2
  movsd  D33(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x4(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc(%rbp),%xmm2
  movsd  D73(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x8(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movsd  D93(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x4(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc(%rbp),%xmm2
  movsd  D126(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x4(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <round@plt>
L22:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D102
type_infered: byte[8]
name: disassemble_data
arguments: label: D48
type_infered: f64
name: disassemble_data
arguments: label: D133
type_infered: f64
name: disassemble_data
arguments: label: D116
type_infered: byte[8]
name: disassemble_data
arguments: label: D25
type_infered: byte[8]
name: disassemble_data
arguments: label: D69
type_infered: byte[8]
name: disassemble_data
arguments: label: D91
type_infered: byte[8]
name: disassemble_data
arguments: label: D27
type_infered: byte[8]
name: disassemble_data
arguments: label: D15
type_infered: byte[8]
name: disassemble_data
arguments: label: D147
type_infered: byte[8]
name: disassemble_data
arguments: label: D105
type_infered: byte[8]
name: disassemble_data
arguments: label: D29
type_infered: byte[8]
name: disassemble_data
arguments: label: D33
type_infered: byte[8]
name: disassemble_data
arguments: label: D73
type_infered: byte[8]
name: disassemble_data
arguments: label: D93
type_infered: byte[8]
name: disassemble_data
arguments: label: D126
type_infered: byte[8]

tool: {"D102": [0x02,0xd3,0x69,0xdd,0x06,0xb5,0xc7,0x3f]}

tool: D48: 16.923

tool: D133: 5.37941

tool: {"D116": [0x1b,0x0e,0x4b,0x03,0x3f,0xaa,0xb9,0x3f]}

tool: {"D25": [0x4c,0x7b,0x39,0xa2,0x31,0x49,0x83,0x3f]}

tool: {"D69": [0xff,0x06,0x8a,0xab,0x0c,0xdb,0x7d,0x3f]}

tool: {"D91": [0x3f,0x83,0xe8,0x71,0x61,0xa2,0x36,0x3f]}

tool: {"D27": [0x15,0x6e,0x66,0xe5,0x78,0xb4,0x4a,0x3f]}

tool: {"D15": [0xa8,0xc1,0xe6,0x33,0x8f,0x69,0xe5,0x3e]}

tool: {"D147": [0x1b,0xae,0xef,0x72,0xfa,0x42,0x04,0x3f]}

tool: {"D105": [0xd4,0xc1,0x56,0x1e,0x1f,0x93,0xfe,0x3e]}

tool: {"D29": [0x02,0xdf,0x82,0xfd,0xd1,0xf1,0xb7,0x3e]}

tool: {"D33": [0x11,0x23,0x9b,0xd6,0x76,0x81,0x8a,0x3e]}

tool: {"D73": [0x58,0xe8,0x33,0x71,0x21,0x74,0x57,0x3e]}

tool: {"D93": [0x53,0x10,0x93,0xc6,0xb5,0xf9,0x0c,0x3e]}

tool: {"D126": [0x0b,0x0e,0xbf,0xf1,0x31,0x7f,0xca,0x3d]}

assistant: ```c
int heatindex_F(int temp_F, int rh) {
  int temp2, temp3, rh2, rh3;
  if (temp_F == 999 || temp_F < 70 || rh < 0)
    return 999;
  temp2 = temp_F * temp_F;
  temp3 = temp2 * temp_F;
  rh2 = rh * rh;
  rh3 = rh2 * rh;
  return round(16.923 + .185212 * temp_F + 5.37941 * rh - .100254 * temp_F * rh + (9.41695e-3) * temp2 + (7.28898e-3) * rh2 + (3.45372e-4) * temp2 * rh - (8.14971e-4) * temp_F * rh2 + (1.02102e-5) * temp2 * rh2 - (3.8646e-5) * temp3 + (2.91583e-5) * rh3 + (1.42721e-6) * temp3 * rh + (1.97483e-7) * temp_F * rh3 - (2.18429e-8) * temp3 * rh2 + (8.43296e-10) * temp2 * rh3 - (4.81975e-11) * temp3 * rh3);
}
```