user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x2710,-0x14(%rbp)
  movl   $0x64,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L2
L23:
  mov    $0x0,%eax
  call   <rand@plt>
  cltd
  shr    $0x1c,%edx
  add    %edx,%eax
  and    $0xf,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D56(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x14(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D111(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movq   %xmm2,%rcx
  mov    -0xc(%rbp),%edx
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  mov    $0x40,%esi
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  pxor   %xmm3,%xmm3
  cvtsi2sdl -0x10(%rbp),%xmm3
  movq   %xmm3,%rcx
  mov    -0xc(%rbp),%edx
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  mov    $0x20,%esi
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  pxor   %xmm4,%xmm4
  cvtsi2sdl -0x10(%rbp),%xmm4
  movq   %xmm4,%rcx
  mov    -0xc(%rbp),%edx
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  mov    $0x8,%esi
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  pxor   %xmm5,%xmm5
  cvtsi2sdl -0x10(%rbp),%xmm5
  movq   %xmm5,%rcx
  mov    -0xc(%rbp),%edx
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  mov    $0x2,%esi
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  pxor   %xmm6,%xmm6
  cvtsi2sdl -0x10(%rbp),%xmm6
  movq   %xmm6,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%esi
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  addl   $0x1,-0x18(%rbp)
L2:
  cmpl   $0x13,-0x18(%rbp)
  jle    L23
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x2710,-0x14(%rbp)
  movl   $0x64,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L97
L92:
  mov    $0x0,%eax
  call   <rand@plt>
  cltd
  shr    $0x1c,%edx
  add    %edx,%eax
  and    $0xf,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D56(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm7,%xmm7
  cvtsi2sdl -0x10(%rbp),%xmm7
  movq   %xmm7,%rcx
  mov    -0x14(%rbp),%esi
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  mov    $0x20,%edx
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x14(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D111(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x10(%rbp),%xmm2
  movq   %xmm2,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%esi
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  addl   $0x1,-0x18(%rbp)
L97:
  cmpl   $0x13,-0x18(%rbp)
  jle    L92
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x28,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L6
L68:
  mov    $0x0,%eax
  call   <rand@plt>
  movslq %eax,%rdx
  imul   $0x45e7b273,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0xd,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x7530,%edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  lea    0xa(%rdx),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    $0xa,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm3,%xmm3
  cvtsi2sdl -0x10(%rbp),%xmm3
  movq   %xmm3,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%esi
  movsd  D29(%rip),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  addl   $0x1,-0x18(%rbp)
L6:
  cmpl   $0x63,-0x18(%rbp)
  jle    L68
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x2710,-0x14(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L32
L36:
  mov    $0x0,%eax
  call   <rand@plt>
  movslq %eax,%rdx
  imul   $0x68db8bad,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0xc,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x2710,%edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  lea    0x1(%rdx),%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x14(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm4,%xmm4
  cvtsi2sdl -0x10(%rbp),%xmm4
  movq   %xmm4,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%esi
  movsd  D29(%rip),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  addl   $0x1,-0x18(%rbp)
L32:
  cmpl   $0x63,-0x18(%rbp)
  jle    L36
  lea    D83(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x2710,-0x14(%rbp)
  movl   $0x64,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L53
L61:
  mov    $0x0,%eax
  call   <rand@plt>
  cltd
  shr    $0x1a,%edx
  add    %edx,%eax
  and    $0x3f,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D56(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x14(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D111(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  pxor   %xmm5,%xmm5
  cvtsi2sdl -0x10(%rbp),%xmm5
  movq   %xmm5,%rcx
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%esi
  movsd  -0x8(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %eax,%edi
  call   <runtest@plt>
  addl   $0x1,-0x18(%rbp)
L53:
  cmpl   $0x63,-0x18(%rbp)
  jle    L61
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D105
data_type: string
name: unpack_data
arguments: label: D56
data_type: f64
name: unpack_data
arguments: label: D111
data_type: byte[8]
name: unpack_data
arguments: label: D127
data_type: string
name: unpack_data
arguments: label: D46
data_type: string
name: unpack_data
arguments: label: D29
data_type: f64
name: unpack_data
arguments: label: D25
data_type: string
name: unpack_data
arguments: label: D83
data_type: string

tool: D105: 
*** Vary source block size*** 



tool: D56: 4

tool: {"D111": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

tool: D127: 
*** Vary dest block size ***



tool: D46: 
*** Resample factor 1.0, testing different srclen ***



tool: D29: 1

tool: D25: 
*** Resample factor 1.0, testing different sin freq ***



tool: D83: 
*** Resample with different factors ***



assistant: ```c
int main(int argc, char **argv) {
  int i, srclen, dstlen, ifreq;
  double factor;
  printf("\n*** Vary source block size*** \n\n");
  srclen = 10000;
  ifreq = 100;
  for (i = 0; i < 20; i++) {
    factor = ((rand() % 16) + 1) / 4.0;
    dstlen = (int)(srclen * factor + 10);
    runtest(srclen, (double)ifreq, factor, 64, dstlen);
    runtest(srclen, (double)ifreq, factor, 32, dstlen);
    runtest(srclen, (double)ifreq, factor, 8, dstlen);
    runtest(srclen, (double)ifreq, factor, 2, dstlen);
    runtest(srclen, (double)ifreq, factor, srclen, dstlen);
  }
  printf("\n*** Vary dest block size ***\n\n");
  srclen = 10000;
  ifreq = 100;
  for (i = 0; i < 20; i++) {
    factor = ((rand() % 16) + 1) / 4.0;
    runtest(srclen, (double)ifreq, factor, srclen, 32);
    dstlen = (int)(srclen * factor + 10);
    runtest(srclen, (double)ifreq, factor, srclen, dstlen);
  }
  printf("\n*** Resample factor 1.0, testing different srclen ***\n\n");
  ifreq = 40;
  for (i = 0; i < 100; i++) {
    srclen = (rand() % 30000) + 10;
    dstlen = (int)(srclen + 10);
    runtest(srclen, (double)ifreq, 1.0, srclen, dstlen);
  }
  printf("\n*** Resample factor 1.0, testing different sin freq ***\n\n");
  srclen = 10000;
  for (i = 0; i < 100; i++) {
    ifreq = ((int)rand() % 10000) + 1;
    dstlen = (int)(srclen * 10);
    runtest(srclen, (double)ifreq, 1.0, srclen, dstlen);
  }
  printf("\n*** Resample with different factors ***\n\n");
  srclen = 10000;
  ifreq = 100;
  for (i = 0; i < 100; i++) {
    factor = ((rand() % 64) + 1) / 4.0;
    dstlen = (int)(srclen * factor + 10);
    runtest(srclen, (double)ifreq, factor, srclen, dstlen);
  }
  return 0;
}
```