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

```asm
<HlsToRgb>:
  endbr64
  movaps %xmm1,%xmm3
  sub    $0x28,%rsp
  mov    %rsi,%rcx
  mov    %rdi,%rax
  mulss  %xmm2,%xmm3
  movss  D127(%rip),%xmm5
  pxor   %xmm4,%xmm4
  movsd  D116(%rip),%xmm8
  mov    %fs:0x28,%rsi
  mov    %rsi,0x18(%rsp)
  xor    %esi,%esi
  cvtss2sd %xmm0,%xmm4
  comiss %xmm1,%xmm5
  subss  %xmm3,%xmm2
  jae    L372
  movapd %xmm4,%xmm3
  pxor   %xmm7,%xmm7
  movss  D107(%rip),%xmm5
  addsd  %xmm8,%xmm3
  cvtsd2ss %xmm3,%xmm3
  comiss %xmm3,%xmm7
  ja     L309
  comiss %xmm5,%xmm3
  jbe    L53
  subss  %xmm5,%xmm3
  jmp    L53
  nopl   0x0(%rax)
L309:
  addss  %xmm5,%xmm3
L53:
  movsd  D286(%rip),%xmm6
  pxor   %xmm10,%xmm10
  movsd  D452(%rip),%xmm9
  cvtss2sd %xmm3,%xmm10
  movapd %xmm10,%xmm11
  mulsd  %xmm6,%xmm11
  comisd %xmm11,%xmm9
  ja     L298
  movapd %xmm10,%xmm11
  addsd  %xmm10,%xmm11
  comisd %xmm11,%xmm9
  ja     L310
  mulsd  D371(%rip),%xmm10
  movsd  D304(%rip),%xmm11
  comisd %xmm10,%xmm11
  ja     L371
  movaps %xmm1,%xmm3
  subss  %xmm2,%xmm3
  jmp    L43
  nopw   0x0(%rax,%rax,1)
L372:
  movapd %xmm4,%xmm2
  pxor   %xmm7,%xmm7
  movss  D107(%rip),%xmm5
  addsd  %xmm8,%xmm2
  cvtsd2ss %xmm2,%xmm2
  comiss %xmm2,%xmm7
  ja     L484
  comiss %xmm5,%xmm2
  jbe    L77
  subss  %xmm5,%xmm2
L77:
  movsd  D286(%rip),%xmm6
  pxor   %xmm10,%xmm10
  movsd  D452(%rip),%xmm9
  cvtss2sd %xmm2,%xmm10
  movapd %xmm10,%xmm11
  mulsd  %xmm6,%xmm11
  comisd %xmm11,%xmm9
  ja     L406
  movapd %xmm10,%xmm11
  addsd  %xmm10,%xmm11
  comisd %xmm11,%xmm9
  ja     L164
  mulsd  D371(%rip),%xmm10
  movsd  D304(%rip),%xmm11
  comisd %xmm10,%xmm11
  ja     L362
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  jmp    L55
  nopl   (%rax)
L484:
  addss  %xmm5,%xmm2
  jmp    L77
  xchg   %ax,%ax
L298:
  mulss  D344(%rip),%xmm3
  subss  D117(%rip),%xmm3
  addss  D351(%rip),%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm1,%xmm3
L43:
  addss  %xmm7,%xmm0
  movss  %xmm3,0x8(%rsp)
  comiss %xmm0,%xmm7
  ja     L67
  comiss %xmm5,%xmm0
  jbe    L368
  subss  %xmm5,%xmm0
L368:
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  movapd %xmm3,%xmm10
  mulsd  %xmm6,%xmm10
  comisd %xmm10,%xmm9
  ja     L270
  movapd %xmm3,%xmm10
  addsd  %xmm3,%xmm10
  comisd %xmm10,%xmm9
  ja     L404
  mulsd  D371(%rip),%xmm3
  movsd  D304(%rip),%xmm10
  comisd %xmm3,%xmm10
  ja     L6
  movaps %xmm1,%xmm0
  subss  %xmm2,%xmm0
  jmp    L278
  nopw   0x0(%rax,%rax,1)
L67:
  addss  %xmm5,%xmm0
  jmp    L368
  xchg   %ax,%ax
L406:
  mulss  D344(%rip),%xmm2
  subss  %xmm5,%xmm2
  mulss  %xmm3,%xmm2
  addss  %xmm1,%xmm2
L55:
  movss  %xmm2,0x8(%rsp)
  movaps %xmm0,%xmm2
  addss  %xmm7,%xmm2
  comiss %xmm2,%xmm7
  ja     L331
  comiss %xmm5,%xmm2
  jbe    L558
  subss  %xmm5,%xmm2
L558:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm2,%xmm0
  movapd %xmm0,%xmm10
  mulsd  %xmm6,%xmm10
  comisd %xmm10,%xmm9
  ja     L122
  movapd %xmm0,%xmm10
  addsd  %xmm0,%xmm10
  comisd %xmm10,%xmm9
  ja     L306
  mulsd  D371(%rip),%xmm0
  movsd  D304(%rip),%xmm10
  comisd %xmm0,%xmm10
  ja     L158
  movaps %xmm1,%xmm2
  subss  %xmm3,%xmm2
  jmp    L323
  nopl   0x0(%rax)
L331:
  addss  %xmm5,%xmm2
  jmp    L558
  cs nopw 0x0(%rax,%rax,1)
L270:
  mulss  D344(%rip),%xmm0
  subss  D117(%rip),%xmm0
  addss  D351(%rip),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
L278:
  subsd  %xmm8,%xmm4
  movss  %xmm0,0xc(%rsp)
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm4,%xmm0
  comiss %xmm0,%xmm7
  ja     L24
  comiss %xmm5,%xmm0
  jbe    L272
  subss  %xmm5,%xmm0
L272:
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  mulsd  %xmm3,%xmm6
  comisd %xmm6,%xmm9
  ja     L9
L46:
  movapd %xmm3,%xmm4
  addsd  %xmm3,%xmm4
  comisd %xmm4,%xmm9
  ja     L534
  mulsd  D371(%rip),%xmm3
  movsd  D304(%rip),%xmm4
  comisd %xmm3,%xmm4
  ja     L259
  subss  %xmm2,%xmm1
  jmp    L136
  nopw   0x0(%rax,%rax,1)
L24:
  addss  %xmm5,%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  mulsd  %xmm3,%xmm6
  comisd %xmm6,%xmm9
  jbe    L46
L9:
  mulss  D344(%rip),%xmm0
  subss  D117(%rip),%xmm0
  addss  D351(%rip),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
L136:
  movss  D79(%rip),%xmm0
  movss  %xmm1,0x10(%rsp)
  movss  0x8(%rsp),%xmm1
  mulss  %xmm0,%xmm1
  cvttss2si %xmm1,%esi
  movss  0xc(%rsp),%xmm1
  mulss  %xmm0,%xmm1
  mulss  0x10(%rsp),%xmm0
  mov    %esi,(%rax)
  cvttss2si %xmm1,%eax
  mov    %eax,(%rcx)
  cvttss2si %xmm0,%eax
  mov    %eax,(%rdx)
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L450
  add    $0x28,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L122:
  mulss  D344(%rip),%xmm2
  subss  %xmm5,%xmm2
  mulss  %xmm3,%xmm2
  addss  %xmm1,%xmm2
L323:
  subsd  %xmm8,%xmm4
  pxor   %xmm0,%xmm0
  movss  %xmm2,0xc(%rsp)
  cvtsd2ss %xmm4,%xmm0
  comiss %xmm0,%xmm7
  ja     L373
  comiss %xmm5,%xmm0
  jbe    L303
  subss  %xmm5,%xmm0
L303:
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  mulsd  %xmm2,%xmm6
  comisd %xmm6,%xmm9
  ja     L266
L208:
  movapd %xmm2,%xmm4
  addsd  %xmm2,%xmm4
  comisd %xmm4,%xmm9
  ja     L459
  mulsd  D371(%rip),%xmm2
  movsd  D304(%rip),%xmm4
  comisd %xmm2,%xmm4
  ja     L196
  subss  %xmm3,%xmm1
  jmp    L136
  xchg   %ax,%ax
L373:
  addss  %xmm5,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  mulsd  %xmm2,%xmm6
  comisd %xmm6,%xmm9
  jbe    L208
L266:
  mulss  D344(%rip),%xmm0
  subss  %xmm5,%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm1
  jmp    L136
L534:
  addss  %xmm2,%xmm1
  jmp    L136
  nopl   0x0(%rax)
L310:
  movaps %xmm1,%xmm3
  addss  %xmm2,%xmm3
  jmp    L43
  nopl   0x0(%rax)
L306:
  movaps %xmm1,%xmm2
  addss  %xmm3,%xmm2
  jmp    L323
  nopl   0x0(%rax)
L404:
  movaps %xmm1,%xmm0
  addss  %xmm2,%xmm0
  jmp    L278
  nopl   0x0(%rax)
L164:
  movaps %xmm1,%xmm2
  addss  %xmm3,%xmm2
  jmp    L55
  nopl   0x0(%rax)
L459:
  addss  %xmm3,%xmm1
  jmp    L136
  nopl   0x0(%rax)
L196:
  mulss  D344(%rip),%xmm0
  movss  D351(%rip),%xmm2
  subss  D117(%rip),%xmm0
  subss  %xmm0,%xmm2
  mulss  %xmm3,%xmm2
  addss  %xmm2,%xmm1
  jmp    L136
  nopl   0x0(%rax)
L259:
  mulss  D344(%rip),%xmm0
  movss  D351(%rip),%xmm3
  subss  D117(%rip),%xmm0
  subss  %xmm0,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm3,%xmm1
  jmp    L136
  nopl   0x0(%rax)
L6:
  mulss  D344(%rip),%xmm0
  movss  D351(%rip),%xmm3
  subss  D117(%rip),%xmm0
  subss  %xmm0,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm1,%xmm3
  movaps %xmm3,%xmm0
  jmp    L278
  nopl   0x0(%rax)
L158:
  mulss  D344(%rip),%xmm2
  movss  D351(%rip),%xmm0
  subss  D117(%rip),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm3,%xmm0
  movaps %xmm0,%xmm2
  addss  %xmm1,%xmm2
  jmp    L323
  nopl   0x0(%rax)
L362:
  mulss  D344(%rip),%xmm2
  movss  D351(%rip),%xmm10
  subss  D117(%rip),%xmm2
  subss  %xmm2,%xmm10
  mulss  %xmm3,%xmm10
  movaps %xmm10,%xmm2
  addss  %xmm1,%xmm2
  jmp    L55
L371:
  mulss  D344(%rip),%xmm3
  movss  D351(%rip),%xmm10
  subss  D117(%rip),%xmm3
  subss  %xmm3,%xmm10
  mulss  %xmm2,%xmm10
  movaps %xmm10,%xmm3
  addss  %xmm1,%xmm3
  jmp    L43
L450:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: label: D127
type_guessed: f32
name: read_data
arguments: label: D116
type_guessed: f64
name: read_data
arguments: label: D107
type_guessed: f32
name: read_data
arguments: label: D286
type_guessed: f64
name: read_data
arguments: label: D452
type_guessed: f32[2]
name: read_data
arguments: label: D371
type_guessed: f64
name: read_data
arguments: label: D304
type_guessed: f64
name: read_data
arguments: label: D344
type_guessed: byte[4]
name: read_data
arguments: label: D117
type_guessed: byte[4]
name: read_data
arguments: label: D351
type_guessed: byte[4]
name: read_data
arguments: label: D79
type_guessed: byte[4]

tool: D127: 0.5

tool: D116: 0.3333

tool: D107: 1

tool: D286: 6

tool: {"D452": [0.0,1.875]}

tool: D371: 3

tool: D304: 2

tool: {"D344": [0x00,0x00,0x40,0x41]}

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

tool: {"D351": [0x00,0x00,0x40,0x40]}

tool: {"D79": [0x00,0x00,0x7f,0x43]}

assistant: ```c
void HlsToRgb(float hue, float luminance, float saturation, int *red, int *green, int *blue) {
  float rgb[3] = {0, 0, 0};
  float ls = luminance * saturation;
  float sls = saturation - ls;
  for (int channel = 0; channel < 3; channel++) {
    float Hue = hue + 0.3333 * (1 - channel);
    if (Hue < 0.0)
      Hue += 1.0;
    else if (Hue > 1.0)
      Hue -= 1.0;
    if ((6.0 * Hue) < 1.0) {
      if (luminance <= 0.5)
        rgb[channel] = luminance + ls * (Hue * 12 - 1);
      else
        rgb[channel] = luminance + sls * (3 + (Hue * 12 - 4));
    } else if ((2.0 * Hue) < 1.0) {
      if (luminance <= 0.5)
        rgb[channel] = luminance + ls;
      else
        rgb[channel] = luminance + sls;
    } else if ((3.0 * Hue) < 2.0) {
      if (luminance <= 0.5)
        rgb[channel] = luminance + ls * (3 - (Hue * 12 - 4));
      else
        rgb[channel] = luminance + sls * (3 - (Hue * 12 - 4));
    } else {
      if (luminance <= 0.5)
        rgb[channel] = luminance - ls;
      else
        rgb[channel] = luminance - sls;
    }
  }
  *red = 255 * rgb[0];
  *green = 255 * rgb[1];
  *blue = 255 * rgb[2];
}
```