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

```asm
<scale_volume_image_box>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    0x118(%rsp),%r10d
  mov    %esi,0x2c(%rsp)
  mov    %edx,0x7c(%rsp)
  mov    %ecx,0xac(%rsp)
  mov    %r8,0x58(%rsp)
  mov    %r9d,0x34(%rsp)
  movss  %xmm0,0x68(%rsp)
  test   %r10d,%r10d
  jne    L46
  test   %ecx,%ecx
  jle    L43
  mov    0x100(%rsp),%edx
  mov    %r9d,%ecx
  imul   0x100(%rsp),%ecx
  mov    0x108(%rsp),%eax
  shr    $0x1f,%edx
  add    0x100(%rsp),%edx
  sar    %edx
  mov    %ecx,0xb8(%rsp)
  mov    0x7c(%rsp),%ecx
  shr    $0x1f,%eax
  mov    %edx,0xbc(%rsp)
  mov    %r9d,%edx
  add    0x108(%rsp),%eax
  shr    $0x1f,%edx
  sar    %eax
  add    %r9d,%edx
  sar    %edx
  mov    %edx,0xa8(%rsp)
  mov    %r9d,%edx
  imul   0x110(%rsp),%edx
  movslq %edx,%r9
  add    0x110(%rsp),%edx
  movslq %edx,%r8
  test   %ecx,%ecx
  jle    L43
  mov    %eax,0xb4(%rsp)
  mov    0x110(%rsp),%eax
  mov    0x110(%rsp),%r11d
  movslq 0x110(%rsp),%r10
  movl   $0x0,0xb0(%rsp)
  shr    $0x4,%eax
  movdqa D13(%rip),%xmm4
  sub    $0x1,%eax
  and    $0xfffffff0,%r11d
  lea    0x1(%r10),%rdx
  add    $0x1,%rax
  mov    %rdx,0x50(%rsp)
  shl    $0x4,%rax
  mov    %r11d,0x74(%rsp)
  mov    %rax,0x60(%rsp)
  mov    %r11d,%eax
  mov    %r8,%r11
  mov    %r10,%r8
  mov    %rax,0x68(%rsp)
  mov    0xac(%rsp),%eax
  mov    %r9,%r10
  mov    %rdi,%r9
  sub    $0x1,%eax
  mov    %eax,0x70(%rsp)
  mov    0x110(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x48(%rsp)
  mov    %rax,0x20(%rsp)
L29:
  mov    0xb4(%rsp),%eax
  mov    0x58(%rsp),%r13
  mov    %r8,%r14
  movl   $0x0,0x98(%rsp)
  cltd
  idivl  0xac(%rsp)
  mov    0xb8(%rsp),%edx
  lea    -0x1(%rax),%ecx
  xor    %eax,%eax
  test   %ecx,%ecx
  cmovns %ecx,%eax
  mov    %eax,0x30(%rsp)
  imul   %edx,%eax
  add    %eax,%edx
  mov    %eax,0xa0(%rsp)
  mov    0xbc(%rsp),%eax
  mov    %edx,0xa4(%rsp)
  mov    %eax,0x9c(%rsp)
  nopl   (%rax)
L242:
  mov    0x9c(%rsp),%eax
  cltd
  idivl  0x7c(%rsp)
  mov    $0x0,%edx
  sub    $0x1,%eax
  cmovs  %edx,%eax
  mov    0x2c(%rsp),%edx
  test   %edx,%edx
  jle    L230
  imul   0x34(%rsp),%eax
  mov    0xa0(%rsp),%ecx
  movl   $0x0,0x8(%rsp)
  pxor   %xmm1,%xmm1
  lea    (%rcx,%rax,1),%edx
  add    0xa4(%rsp),%eax
  mov    %eax,0x78(%rsp)
  mov    0xa8(%rsp),%eax
  mov    %edx,0x18(%rsp)
  mov    %eax,0x10(%rsp)
  lea    0x1(%r10),%rax
  mov    %rax,0x38(%rsp)
  lea    0x1(%r11),%rax
  mov    %rax,0x40(%rsp)
  nopw   0x0(%rax,%rax,1)
L244:
  mov    0x10(%rsp),%eax
  mov    0x18(%rsp),%ecx
  mov    0x70(%rsp),%edi
  cltd
  idivl  0x2c(%rsp)
  mov    $0x0,%edx
  sub    $0x1,%eax
  cmovs  %edx,%eax
  mov    %r13,%rdx
  lea    (%rax,%rcx,1),%esi
  imul   0x110(%rsp),%esi
  movslq %esi,%rsi
  lea    0x0(%r13,%rsi,1),%rcx
  cmp    %edi,0x30(%rsp)
  jge    L211
  add    0x78(%rsp),%eax
  imul   0x110(%rsp),%eax
  cltq
  lea    0x0(%r13,%rax,1),%rdx
L211:
  mov    0x110(%rsp),%eax
  test   %eax,%eax
  jle    L55
  lea    0x1(%r13,%rsi,1),%rdi
  mov    %r9,%rax
  mov    0x38(%rsp),%rbx
  mov    %r9,%r8
  sub    %rdi,%rax
  mov    0x40(%rsp),%r15
  mov    0x50(%rsp),%rbp
  cmp    $0xe,%rax
  seta   %dil
  cmpl   $0xe,0x48(%rsp)
  seta   %al
  and    %eax,%edi
  lea    (%rsi,%rbx,1),%rax
  add    %r13,%rax
  sub    %rax,%r8
  cmp    $0xe,%r8
  mov    %r9,%r8
  seta   %al
  and    %edi,%eax
  lea    (%rsi,%r15,1),%rdi
  add    %r13,%rdi
  sub    %rdi,%r8
  cmp    $0xe,%r8
  mov    %r9,%r8
  seta   %dil
  and    %eax,%edi
  lea    (%rsi,%rbp,1),%rax
  add    %r13,%rax
  sub    %rax,%r8
  cmp    $0xe,%r8
  lea    (%rdx,%rbx,1),%r8
  seta   %al
  and    %edi,%eax
  mov    %r9,%rdi
  sub    %r8,%rdi
  lea    (%rdx,%r15,1),%r8
  cmp    $0xe,%rdi
  seta   %dil
  and    %eax,%edi
  mov    %r9,%rax
  sub    %r8,%rax
  lea    (%rdx,%rbp,1),%r8
  cmp    $0xe,%rax
  seta   %al
  and    %edi,%eax
  mov    %r9,%rdi
  sub    %r8,%rdi
  cmp    $0xe,%rdi
  seta   %dil
  test   %dil,%al
  je     L249
  lea    0x1(%rdx),%rdi
  mov    %r9,%rax
  sub    %rdi,%rax
  cmp    $0xe,%rax
  jbe    L249
  lea    (%rsi,%r14,1),%r8
  lea    (%rsi,%r10,1),%rdi
  mov    0x60(%rsp),%r15
  add    %r11,%rsi
  add    %r13,%r8
  add    %r13,%rdi
  add    %r13,%rsi
  xor    %eax,%eax
  lea    (%rdx,%r14,1),%r12
  lea    (%rdx,%r10,1),%rbp
  lea    (%rdx,%r11,1),%rbx
  xchg   %ax,%ax
L238:
  movdqu (%rcx,%rax,1),%xmm10
  movdqu (%r8,%rax,1),%xmm0
  movdqu (%rdi,%rax,1),%xmm9
  movdqu (%rsi,%rax,1),%xmm6
  movdqa %xmm10,%xmm11
  movdqa %xmm0,%xmm2
  punpckhbw %xmm1,%xmm0
  movdqu (%rdx,%rax,1),%xmm8
  punpcklbw %xmm1,%xmm11
  punpcklbw %xmm1,%xmm2
  movdqa %xmm9,%xmm12
  movdqu (%r12,%rax,1),%xmm5
  paddw  %xmm11,%xmm2
  movdqa %xmm6,%xmm11
  punpcklbw %xmm1,%xmm12
  movdqu 0x0(%rbp,%rax,1),%xmm7
  punpcklbw %xmm1,%xmm11
  movdqu (%rbx,%rax,1),%xmm3
  punpckhbw %xmm1,%xmm10
  punpckhbw %xmm1,%xmm9
  paddw  %xmm12,%xmm11
  movdqa %xmm8,%xmm12
  punpckhbw %xmm1,%xmm6
  paddw  %xmm11,%xmm2
  movdqa %xmm5,%xmm11
  punpcklbw %xmm1,%xmm12
  punpcklbw %xmm1,%xmm11
  paddw  %xmm10,%xmm0
  paddw  %xmm9,%xmm6
  paddw  %xmm12,%xmm11
  punpckhbw %xmm1,%xmm8
  movdqa %xmm7,%xmm12
  paddw  %xmm11,%xmm2
  punpckhbw %xmm1,%xmm5
  movdqa %xmm3,%xmm11
  punpcklbw %xmm1,%xmm12
  punpcklbw %xmm1,%xmm11
  paddw  %xmm6,%xmm0
  paddw  %xmm8,%xmm5
  punpckhbw %xmm1,%xmm7
  punpckhbw %xmm1,%xmm3
  paddw  %xmm12,%xmm11
  paddw  %xmm5,%xmm0
  paddw  %xmm7,%xmm3
  paddw  %xmm11,%xmm2
  paddw  %xmm3,%xmm0
  psrlw  $0x3,%xmm2
  psrlw  $0x3,%xmm0
  pand   %xmm4,%xmm2
  pand   %xmm4,%xmm0
  packuswb %xmm0,%xmm2
  movups %xmm2,(%r9,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%r15
  jne    L238
  mov    0x68(%rsp),%rax
  mov    0x74(%rsp),%ebx
  add    %rax,%rcx
  add    %rax,%rdx
  lea    (%r9,%rax,1),%r8
  cmp    %ebx,0x110(%rsp)
  je     L166
  mov    0x110(%rsp),%ebp
  mov    %r8,%rdi
  nop
L118:
  movzbl (%rcx),%esi
  movzbl (%rcx,%r14,1),%eax
  add    $0x1,%rdi
  add    $0x1,%rcx
  movzbl (%rdx,%r14,1),%r12d
  add    $0x1,%rdx
  add    %esi,%eax
  movzbl -0x1(%rcx,%r10,1),%esi
  add    %esi,%eax
  movzbl -0x1(%rcx,%r11,1),%esi
  add    %esi,%eax
  movzbl -0x1(%rdx),%esi
  add    %r12d,%esi
  movzbl -0x1(%rdx,%r10,1),%r12d
  add    %r12d,%esi
  movzbl -0x1(%rdx,%r11,1),%r12d
  add    %r12d,%esi
  add    %esi,%eax
  sar    $0x3,%eax
  mov    %al,-0x1(%rdi)
  lea    (%rbx,%rdi,1),%eax
  sub    %r8d,%eax
  cmp    %eax,%ebp
  jg     L118
L166:
  mov    0x20(%rsp),%rax
  lea    0x1(%r9,%rax,1),%r9
L55:
  addl   $0x1,0x8(%rsp)
  mov    0x34(%rsp),%edx
  mov    0x8(%rsp),%eax
  add    %edx,0x10(%rsp)
  cmp    %eax,0x2c(%rsp)
  jne    L244
L230:
  addl   $0x1,0x98(%rsp)
  mov    0x100(%rsp),%ecx
  mov    0x98(%rsp),%eax
  add    %ecx,0x9c(%rsp)
  cmp    %eax,0x7c(%rsp)
  jne    L242
  addl   $0x1,0xb0(%rsp)
  mov    0x108(%rsp),%ecx
  mov    %r14,%r8
  add    %ecx,0xb4(%rsp)
  mov    0xb0(%rsp),%eax
  cmp    %eax,0xac(%rsp)
  jne    L29
L43:
  add    $0xc8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L46:
  movss  D11(%rip),%xmm0
  mov    %ecx,%esi
  divss  0x68(%rsp),%xmm0
  movss  %xmm0,0x74(%rsp)
  test   %ecx,%ecx
  jle    L43
  mov    0x100(%rsp),%edx
  mov    %r9d,%ecx
  mov    0x7c(%rsp),%r8d
  imul   0x100(%rsp),%ecx
  mov    0x108(%rsp),%eax
  shr    $0x1f,%edx
  add    0x100(%rsp),%edx
  sar    %edx
  shr    $0x1f,%eax
  add    0x108(%rsp),%eax
  mov    %edx,0xb0(%rsp)
  mov    %r9d,%edx
  sar    %eax
  shr    $0x1f,%edx
  mov    %ecx,0xa8(%rsp)
  add    %r9d,%edx
  sar    %edx
  mov    %edx,0x9c(%rsp)
  mov    %r9d,%edx
  imul   0x110(%rsp),%edx
  movslq %edx,%r15
  add    0x110(%rsp),%edx
  movslq %edx,%rcx
  mov    %rcx,0x10(%rsp)
  test   %r8d,%r8d
  jle    L43
  mov    %eax,0xa4(%rsp)
  lea    -0x1(%rsi),%eax
  mov    %eax,0x70(%rsp)
  mov    0x110(%rsp),%eax
  movl   $0x0,0xa0(%rsp)
  sub    $0x1,%eax
  mov    %rdi,0x48(%rsp)
  add    $0x1,%rax
  mov    %rax,0x40(%rsp)
L163:
  mov    0xa4(%rsp),%eax
  mov    0xa8(%rsp),%ecx
  movl   $0x0,0x98(%rsp)
  cltd
  idivl  0xac(%rsp)
  lea    -0x1(%rax),%edx
  xor    %eax,%eax
  test   %edx,%edx
  cmovns %edx,%eax
  mov    %eax,0x60(%rsp)
  imul   %ecx,%eax
  mov    %eax,0x88(%rsp)
  add    %ecx,%eax
  mov    %eax,0x90(%rsp)
  mov    0xb0(%rsp),%eax
  mov    %eax,0x80(%rsp)
  nopl   0x0(%rax,%rax,1)
L210:
  mov    0x80(%rsp),%eax
  mov    0x2c(%rsp),%edi
  cltd
  idivl  0x7c(%rsp)
  mov    $0x0,%edx
  sub    $0x1,%eax
  cmovs  %edx,%eax
  test   %edi,%edi
  jle    L196
  imul   0x34(%rsp),%eax
  mov    0x88(%rsp),%edx
  movl   $0x0,0x30(%rsp)
  movslq 0x110(%rsp),%r13
  lea    (%rdx,%rax,1),%ecx
  add    0x90(%rsp),%eax
  mov    %eax,0x78(%rsp)
  mov    0x9c(%rsp),%eax
  mov    %ecx,0x50(%rsp)
  mov    %eax,0x38(%rsp)
  nopl   0x0(%rax)
L134:
  mov    0x38(%rsp),%eax
  mov    0x58(%rsp),%rcx
  mov    0x60(%rsp),%esi
  cltd
  mov    %rcx,%r12
  idivl  0x2c(%rsp)
  mov    $0x0,%edx
  sub    $0x1,%eax
  cmovs  %edx,%eax
  mov    0x50(%rsp),%edx
  lea    (%rdx,%rax,1),%ebp
  imul   0x110(%rsp),%ebp
  movslq %ebp,%rbp
  add    %rcx,%rbp
  cmp    %esi,0x70(%rsp)
  jle    L62
  add    0x78(%rsp),%eax
  imul   0x110(%rsp),%eax
  cltq
  lea    (%rcx,%rax,1),%r12
L62:
  mov    0x110(%rsp),%esi
  test   %esi,%esi
  jle    L103
  mov    0x40(%rsp),%rax
  pxor   %xmm4,%xmm4
  mov    0x48(%rsp),%r14
  cvtss2sd 0x68(%rsp),%xmm4
  movsd  %xmm4,0x8(%rsp)
  pxor   %xmm4,%xmm4
  add    %rbp,%rax
  cvtss2sd 0x74(%rsp),%xmm4
  movsd  %xmm4,0x20(%rsp)
  mov    %rax,0x18(%rsp)
  xchg   %ax,%ax
L85:
  movzbl 0x0(%rbp),%edi
  add    $0x1,%r14
  add    $0x1,%rbp
  add    $0x1,%r12
  movsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movzbl -0x1(%r12),%edi
  movsd  0x8(%rsp),%xmm0
  mov    %eax,%ebx
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movzbl -0x1(%rbp,%r13,1),%edi
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movzbl -0x1(%r12,%r13,1),%edi
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movzbl -0x1(%rbp,%r15,1),%edi
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movzbl -0x1(%r12,%r15,1),%edi
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    0x10(%rsp),%rax
  movzbl -0x1(%rbp,%rax,1),%edi
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movsd  0x8(%rsp),%xmm0
  add    %eax,%ebx
  mov    0x10(%rsp),%rax
  movzbl -0x1(%r12,%rax,1),%edi
  mov    $0x1,%eax
  call   <gamma_correct@plt>
  movsd  0x20(%rsp),%xmm0
  lea    (%rbx,%rax,1),%edi
  mov    $0x1,%eax
  sar    $0x3,%edi
  call   <gamma_correct@plt>
  mov    %al,-0x1(%r14)
  cmp    %rbp,0x18(%rsp)
  jne    L85
  mov    0x40(%rsp),%rdx
  add    %rdx,0x48(%rsp)
L103:
  addl   $0x1,0x30(%rsp)
  mov    0x34(%rsp),%edx
  mov    0x30(%rsp),%eax
  add    %edx,0x38(%rsp)
  cmp    %eax,0x2c(%rsp)
  jne    L134
L196:
  addl   $0x1,0x98(%rsp)
  mov    0x100(%rsp),%edx
  mov    0x98(%rsp),%eax
  add    %edx,0x80(%rsp)
  cmp    %eax,0x7c(%rsp)
  jne    L210
  addl   $0x1,0xa0(%rsp)
  mov    0x108(%rsp),%ecx
  mov    0xa0(%rsp),%eax
  add    %ecx,0xa4(%rsp)
  cmp    %eax,0xac(%rsp)
  jne    L163
  jmp    L43
  nopl   0x0(%rax)
L249:
  lea    (%rdx,%r10,1),%rdi
  lea    (%rdx,%r14,1),%rsi
  mov    %r13,0x90(%rsp)
  mov    0x20(%rsp),%r13
  mov    %r10,0x80(%rsp)
  lea    (%rdx,%r11,1),%r12
  lea    (%rcx,%r10,1),%rbx
  xor    %eax,%eax
  mov    %r11,0x88(%rsp)
  lea    (%rcx,%r11,1),%r8
  lea    (%rcx,%r14,1),%rbp
  mov    %rsi,%r10
  mov    %rdi,%r11
  nopl   (%rax)
L37:
  movzbl (%r10,%rax,1),%esi
  movzbl (%rdx,%rax,1),%edi
  movzbl (%rcx,%rax,1),%r15d
  add    %esi,%edi
  movzbl (%r11,%rax,1),%esi
  add    %edi,%esi
  movzbl (%r12,%rax,1),%edi
  add    %edi,%esi
  movzbl 0x0(%rbp,%rax,1),%edi
  add    %edi,%r15d
  movzbl (%rbx,%rax,1),%edi
  add    %r15d,%edi
  movzbl (%r8,%rax,1),%r15d
  add    %r15d,%edi
  add    %edi,%esi
  sar    $0x3,%esi
  mov    %sil,(%r9,%rax,1)
  mov    %rax,%rsi
  add    $0x1,%rax
  cmp    %r13,%rsi
  jne    L37
  mov    0x80(%rsp),%r10
  mov    0x88(%rsp),%r11
  mov    0x90(%rsp),%r13
  jmp    L166
```

tool_calls: name: retrieve_data
arguments: data_label: D13
data_type: byte[16]
name: retrieve_data
arguments: data_label: D11
data_type: f32

tool: {"D13": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

tool: D11: 1

assistant: ```c
void scale_volume_image_box(unsigned char *dst, int dw, int dh, int dd, unsigned char *src, int sw, int sh, int sd, int bpp, int gc, float gamma) {
  int n, x, y, z, v;
  int ix, iy, iz;
  unsigned char *s1, *s2, *d = dst;
  float invgamma;
  if (gc) {
    invgamma = 1.0 / gamma;
    for (z = 0; z < dd; ++z) {
      iz = ((z * sd + sd / 2) / dd) - 1;
      if (iz < 0)
        iz = 0;
      for (y = 0; y < dh; ++y) {
        iy = ((y * sh + sh / 2) / dh) - 1;
        if (iy < 0)
          iy = 0;
        for (x = 0; x < dw; ++x) {
          ix = ((x * sw + sw / 2) / dw) - 1;
          if (ix < 0)
            ix = 0;
          s1 = src + ((iz * (sw * sh)) + (iy * sw) + ix) * bpp;
          if (iz < dd - 1)
            s2 = src + (((iz + 1) * (sw * sh)) + (iy * sw) + ix) * bpp;
          else
            s2 = src;
          for (n = 0; n < bpp; ++n) {
            v = (gamma_correct(s1[0], gamma) + gamma_correct(s2[0], gamma) + gamma_correct(s1[bpp], gamma) + gamma_correct(s2[bpp], gamma) + gamma_correct(s1[sw * bpp], gamma) + gamma_correct(s2[sw * bpp], gamma) + gamma_correct(s1[(sw + 1) * bpp], gamma) + gamma_correct(s2[(sw + 1) * bpp], gamma)) >> 3;
            *d++ = gamma_correct(v, invgamma);
            ++s1;
            ++s2;
          }
        }
      }
    }
  } else {
    for (z = 0; z < dd; ++z) {
      iz = ((z * sd + sd / 2) / dd) - 1;
      if (iz < 0)
        iz = 0;
      for (y = 0; y < dh; ++y) {
        iy = ((y * sh + sh / 2) / dh) - 1;
        if (iy < 0)
          iy = 0;
        for (x = 0; x < dw; ++x) {
          ix = ((x * sw + sw / 2) / dw) - 1;
          if (ix < 0)
            ix = 0;
          s1 = src + ((iz * (sw * sh)) + (iy * sw) + ix) * bpp;
          if (iz < dd - 1)
            s2 = src + (((iz + 1) * (sw * sh)) + (iy * sw) + ix) * bpp;
          else
            s2 = src;
          for (n = 0; n < bpp; ++n) {
            v = ((s1[0] + s1[bpp] + s1[sw * bpp] + s1[(sw + 1) * bpp]) + (s2[0] + s2[bpp] + s2[sw * bpp] + s2[(sw + 1) * bpp])) >> 3;
            *d++ = v;
            ++s1;
            ++s2;
          }
        }
      }
    }
  }
}
```