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

```asm
<AdjustScaling>:
  endbr64
  push   %rbp
  mov    $0x3,%eax
  mov    %rdi,%rbp
  mov    $0x5,%edi
  push   %rbx
  mov    %rsi,%rbx
  lea    D13(%rip),%rsi
  sub    $0x38,%rsp
  movsd  %xmm2,0x10(%rsp)
  movapd %xmm4,%xmm2
  movsd  %xmm3,0x8(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm0,0x28(%rsp)
  call   <diagnostics@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm0
  lea    D10(%rip),%rsi
  mov    $0x5,%edi
  mov    $0x2,%eax
  call   <diagnostics@plt>
  movsd  0x10(%rsp),%xmm6
  pxor   %xmm3,%xmm3
  mov    $0x1,%edx
  movsd  D23(%rip),%xmm4
  movsd  0x18(%rsp),%xmm2
  ucomisd %xmm3,%xmm6
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  je     L97
  movsd  0x28(%rsp),%xmm5
  ucomisd %xmm3,%xmm5
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  je     L97
  mulsd  %xmm4,%xmm6
  movsd  %xmm4,0x18(%rsp)
  movapd %xmm6,%xmm0
  divsd  %xmm5,%xmm0
  call   <my_rint@plt>
  movsd  0x8(%rsp),%xmm7
  pxor   %xmm3,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  mov    $0x0,%edx
  ucomisd %xmm3,%xmm7
  setnp  %al
  movsd  %xmm0,(%rbx)
  cmovne %edx,%eax
  test   %al,%al
  jne    L77
  movsd  0x20(%rsp),%xmm1
  ucomisd %xmm3,%xmm1
  setnp  %dl
  cmove  %edx,%eax
  test   %al,%al
  je     L106
L77:
  movsd  %xmm0,0x0(%rbp)
L9:
  movsd  (%rbx),%xmm1
  jmp    L11
L97:
  mulsd  %xmm4,%xmm2
  movsd  %xmm4,0x18(%rsp)
  movapd %xmm2,%xmm0
  call   <my_rint@plt>
  movsd  0x8(%rsp),%xmm7
  pxor   %xmm3,%xmm3
  pxor   %xmm1,%xmm1
  cvtsi2sd %rax,%xmm1
  mov    $0x0,%edx
  ucomisd %xmm3,%xmm7
  setnp  %al
  movsd  %xmm1,(%rbx)
  cmovne %edx,%eax
  test   %al,%al
  jne    L12
  movsd  0x20(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm4
  ucomisd %xmm3,%xmm7
  setnp  %dl
  cmove  %edx,%eax
  test   %al,%al
  je     L70
L12:
  movsd  0x10(%rsp),%xmm7
  mov    $0x0,%edx
  movsd  %xmm1,0x0(%rbp)
  ucomisd %xmm3,%xmm7
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  je     L53
  movsd  0x8(%rsp),%xmm7
  mov    $0x1,%edx
  ucomisd %xmm3,%xmm7
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  je     L53
  movsd  %xmm1,(%rbx)
  movapd %xmm1,%xmm0
L11:
  add    $0x38,%rsp
  mov    $0x5,%edi
  mov    $0x2,%eax
  pop    %rbx
  lea    D21(%rip),%rsi
  pop    %rbp
  jmp    1060 <diagnostics@plt>
  nopw   0x0(%rax,%rax,1)
L106:
  movsd  0x18(%rsp),%xmm4
L70:
  mulsd  0x8(%rsp),%xmm4
  divsd  0x20(%rsp),%xmm4
  movapd %xmm4,%xmm0
  call   <my_rint@plt>
  pxor   %xmm1,%xmm1
  pxor   %xmm3,%xmm3
  cvtsi2sd %rax,%xmm1
  jmp    L12
  nopl   (%rax)
L53:
  movapd %xmm1,%xmm0
  jmp    L9
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D13
datatype: string
name: extract_symbolic_data
arguments: data_label: D10
datatype: string
name: extract_symbolic_data
arguments: data_label: D23
datatype: f64
name: extract_symbolic_data
arguments: data_label: D21
datatype: string

tool: D13: AdjustScaling h       =%f w       =%f s=%f

tool: D10: AdjustScaling target_h=%f target_w=%f

tool: D23: 100

tool: D21: AdjustScaling xscale=%d yscale=%d

assistant: ```c
void AdjustScaling(double h, double w, double target_h, double target_w, double s, uint16_t *sx, uint16_t *sy) {
  diagnostics(5, "AdjustScaling h       =%f w       =%f s=%f", h, w, s);
  diagnostics(5, "AdjustScaling target_h=%f target_w=%f", target_h, target_w);
  if (target_h != 0 && h != 0)
    *sy = (uint16_t)my_rint(100.0 * target_h / h);
  else
    *sy = (uint16_t)my_rint(s * 100);
  if (target_w == 0 || w == 0)
    *sx = *sy;
  else
    *sx = (uint16_t)my_rint(100.0 * target_w / w);
  if (target_h == 0 && target_w != 0)
    *sy = *sx;
  diagnostics(5, "AdjustScaling xscale=%d yscale=%d", *sx, *sy);
}
```