user: 请将以下的汇编代码转换成C语言代码：

```asm
<temperature_to_colour>:
  endbr64
  mov    %rcx,%rax
  movsd  D180(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L32
  comisd D66(%rip),%xmm0
  jbe    L27
  movsd  D66(%rip),%xmm0
L12:
  movsd  D42(%rip),%xmm3
  movapd %xmm0,%xmm1
  subsd  %xmm3,%xmm1
  movapd %xmm1,%xmm2
  mulsd  D143(%rip),%xmm2
  divsd  %xmm3,%xmm2
  addsd  D63(%rip),%xmm2
  cvttsd2si %xmm2,%r9d
  movapd %xmm1,%xmm2
  mulsd  D75(%rip),%xmm2
  divsd  %xmm3,%xmm2
  movsd  D133(%rip),%xmm4
  addsd  %xmm4,%xmm2
  cvttsd2si %xmm2,%ecx
  mulsd  D34(%rip),%xmm1
  divsd  %xmm3,%xmm1
  addsd  %xmm4,%xmm1
  cvttsd2si %xmm1,%r8d
L46:
  mov    %r9b,(%rdi)
  mov    %cl,(%rsi)
  mov    %r8b,(%rdx)
  subsd  D180(%rip),%xmm0
  mulsd  D136(%rip),%xmm0
  divsd  D40(%rip),%xmm0
  addsd  D176(%rip),%xmm0
  cvttsd2si %xmm0,%edx
  mov    %dl,(%rax)
  ret
L27:
  comisd D42(%rip),%xmm0
  jbe    L13
  jmp    L12
L32:
  movsd  D180(%rip),%xmm0
L13:
  movapd %xmm0,%xmm1
  subsd  D180(%rip),%xmm1
  movapd %xmm1,%xmm2
  mulsd  D140(%rip),%xmm2
  movsd  D177(%rip),%xmm4
  divsd  %xmm4,%xmm2
  movsd  D23(%rip),%xmm3
  addsd  %xmm3,%xmm2
  cvttsd2si %xmm2,%r9d
  mulsd  D190(%rip),%xmm1
  divsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm1
  cvttsd2si %xmm1,%ecx
  mov    %ecx,%r8d
  jmp    L46
```

tool_calls: name: parse_data
arguments: label: D180
type_guessed: byte[8]
name: parse_data
arguments: label: D66
type_guessed: byte[16]
name: parse_data
arguments: label: D42
type_guessed: byte[16]
name: parse_data
arguments: label: D143
type_guessed: byte[8]
name: parse_data
arguments: label: D63
type_guessed: byte[8]
name: parse_data
arguments: label: D75
type_guessed: byte[8]
name: parse_data
arguments: label: D133
type_guessed: byte[8]
name: parse_data
arguments: label: D34
type_guessed: byte[8]
name: parse_data
arguments: label: D136
type_guessed: byte[8]
name: parse_data
arguments: label: D40
type_guessed: byte[8]
name: parse_data
arguments: label: D176
type_guessed: byte[8]
name: parse_data
arguments: label: D140
type_guessed: byte[8]
name: parse_data
arguments: label: D177
type_guessed: byte[8]
name: parse_data
arguments: label: D23
type_guessed: byte[8]
name: parse_data
arguments: label: D190
type_guessed: byte[8]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)));
}
```