user: 下面的汇编指令对应的C源代码是什么:

```asm
<temperature_to_colour>:
  endbr64
  mov    %rdi,%r9
  mov    %rsi,%r10
  mov    %rdx,%r8
  mov    %rcx,%rax
  movsd  D86(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L42
  comisd D124(%rip),%xmm0
  jbe    L46
  mov    $0x64,%esi
  mov    $0xffffff99,%edx
  mov    $0xffffff9d,%edi
  mov    $0xfffffffc,%ecx
L0:
  mov    %cl,(%r9)
  mov    %dil,(%r10)
  mov    %dl,(%r8)
  mov    %sil,(%rax)
  ret
  nopl   0x0(%rax)
L42:
  mov    $0xffffffc8,%edx
  mov    $0xffffffe6,%esi
  mov    $0xffffffc8,%ecx
  mov    %edx,%edi
L26:
  mov    %cl,(%r9)
  mov    %dil,(%r10)
  mov    %dl,(%r8)
  mov    %sil,(%rax)
  ret
L46:
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  D58(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  divsd  D89(%rip),%xmm1
  addsd  D17(%rip),%xmm1
  cvttsd2si %xmm1,%esi
  movsd  D39(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L39
  movsd  D102(%rip),%xmm0
  movsd  D30(%rip),%xmm3
  movsd  D135(%rip),%xmm1
  mulsd  %xmm2,%xmm0
  mulsd  D144(%rip),%xmm2
  divsd  %xmm3,%xmm0
  divsd  %xmm3,%xmm2
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%ecx
  addsd  %xmm1,%xmm2
  cvttsd2si %xmm2,%edx
  mov    %edx,%edi
  jmp    L26
L39:
  subsd  %xmm1,%xmm0
  movsd  D10(%rip),%xmm2
  movsd  D83(%rip),%xmm3
  mulsd  %xmm0,%xmm2
  divsd  %xmm1,%xmm2
  addsd  D25(%rip),%xmm2
  cvttsd2si %xmm2,%ecx
  movsd  D77(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  mulsd  D109(%rip),%xmm0
  divsd  %xmm1,%xmm2
  divsd  %xmm1,%xmm0
  addsd  %xmm3,%xmm2
  cvttsd2si %xmm2,%edi
  addsd  %xmm3,%xmm0
  cvttsd2si %xmm0,%edx
  jmp    L0
```

tool_calls: name: disassemble_data
arguments: data_label: D86
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D124
type_guessed: byte[16]
name: disassemble_data
arguments: data_label: D58
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D89
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D17
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D39
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D102
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D30
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D135
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D144
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D10
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D83
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D25
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D77
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D109
type_guessed: byte[8]

tool: {"D86": [0x00,0x00,0x00,0x00,0x00,0x40,0x7f,0x40]}

tool: {"D124": [0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x40,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0xc0]}

tool: {"D58": [0x00,0x00,0x00,0x00,0x00,0x40,0x60,0xc0]}

tool: {"D89": [0x00,0x00,0x00,0x00,0x00,0x30,0x91,0x40]}

tool: {"D17": [0x00,0x00,0x00,0x00,0x00,0xc0,0x6c,0x40]}

tool: {"D39": [0x00,0x00,0x00,0x00,0x00,0x00,0x89,0x40]}

tool: {"D102": [0x00,0x00,0x00,0x00,0x00,0x00,0x4a,0xc0]}

tool: {"D30": [0x00,0x00,0x00,0x00,0x00,0xc0,0x72,0x40]}

tool: {"D135": [0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x40]}

tool: {"D144": [0x00,0x00,0x00,0x00,0x00,0x00,0x66,0xc0]}

tool: {"D10": [0x00,0x00,0x00,0x00,0x00,0x00,0x5a,0x40]}

tool: {"D83": [0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x40]}

tool: {"D25": [0x00,0x00,0x00,0x00,0x00,0x80,0x62,0x40]}

tool: {"D77": [0x00,0x00,0x00,0x00,0x00,0xa0,0x60,0x40]}

tool: {"D109": [0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x40]}

assistant: ```c
void temperature_to_colour(double temperature, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *transparency) {
  const double max_temperature = 1600;
  const double medium_temperature = 800;
  const double min_temperature = 500;
  const int transparency_hot = 100;
  const int transparency_cold = 230;
  int colour_hot[] = {252, 157, 153};
  int colour_medium[] = {148, 24, 24};
  int colour_cold[] = {200, 200, 200};
  if (temperature < min_temperature) {
    temperature = min_temperature;
  }
  if (temperature > max_temperature) {
    temperature = max_temperature;
  }
  if (temperature > medium_temperature) {
    *r = (unsigned char)(colour_medium[0] + ((temperature - medium_temperature) * (colour_hot[0] - colour_medium[0]) / (max_temperature - medium_temperature)));
    *g = (unsigned char)(colour_medium[1] + ((temperature - medium_temperature) * (colour_hot[1] - colour_medium[1]) / (max_temperature - medium_temperature)));
    *b = (unsigned char)(colour_medium[2] + ((temperature - medium_temperature) * (colour_hot[2] - colour_medium[2]) / (max_temperature - medium_temperature)));
  } else {
    *r = (unsigned char)(colour_cold[0] + ((temperature - min_temperature) * (colour_medium[0] - colour_cold[0]) / (medium_temperature - min_temperature)));
    *g = (unsigned char)(colour_cold[1] + ((temperature - min_temperature) * (colour_medium[1] - colour_cold[1]) / (medium_temperature - min_temperature)));
    *b = (unsigned char)(colour_cold[2] + ((temperature - min_temperature) * (colour_medium[2] - colour_cold[2]) / (medium_temperature - min_temperature)));
  }
  *transparency = (unsigned char)(transparency_cold + ((temperature - min_temperature) * (transparency_hot - transparency_cold) / (max_temperature - min_temperature)));
}
```