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

```asm
<main>:
  endbr64
  push   %r12
  lea    D111(%rip),%rdi
  push   %rbx
  mov    $0x14,%ebx
  sub    $0x18,%rsp
  call   <printf@plt>
  nopl   0x0(%rax)
L27:
  xor    %eax,%eax
  call   <rand@plt>
  pxor   %xmm1,%xmm1
  mov    $0x40,%esi
  movsd  D174(%rip),%xmm0
  cltd
  mov    $0x2710,%edi
  shr    $0x1c,%edx
  add    %edx,%eax
  and    $0xf,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  cvtsi2sd %eax,%xmm1
  mulsd  D101(%rip),%xmm1
  mov    D48(%rip),%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm1,0x8(%rsp)
  addsd  D172(%rip),%xmm0
  cvttsd2si %xmm0,%r12d
  movq   %rax,%xmm0
  mov    %r12d,%edx
  call   <runtest@plt>
  mov    D48(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  mov    %r12d,%edx
  mov    $0x20,%esi
  mov    $0x2710,%edi
  movq   %rax,%xmm0
  call   <runtest@plt>
  mov    D48(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  mov    %r12d,%edx
  mov    $0x8,%esi
  mov    $0x2710,%edi
  movq   %rax,%xmm0
  call   <runtest@plt>
  mov    D48(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  mov    %r12d,%edx
  mov    $0x2,%esi
  mov    $0x2710,%edi
  movq   %rax,%xmm0
  call   <runtest@plt>
  mov    D48(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  mov    %r12d,%edx
  mov    $0x2710,%esi
  mov    $0x2710,%edi
  movq   %rax,%xmm0
  call   <runtest@plt>
  sub    $0x1,%ebx
  jne    L27
  lea    D166(%rip),%rdi
  mov    $0x14,%ebx
  call   <printf@plt>
  nopl   0x0(%rax)
L19:
  xor    %eax,%eax
  call   <rand@plt>
  pxor   %xmm1,%xmm1
  mov    $0x2710,%esi
  mov    $0x2710,%edi
  cltd
  shr    $0x1c,%edx
  add    %edx,%eax
  and    $0xf,%eax
  sub    %edx,%eax
  mov    $0x20,%edx
  add    $0x1,%eax
  cvtsi2sd %eax,%xmm1
  mulsd  D101(%rip),%xmm1
  mov    D48(%rip),%rax
  movq   %rax,%xmm0
  movsd  %xmm1,0x8(%rsp)
  call   <runtest@plt>
  movsd  0x8(%rsp),%xmm1
  mov    $0x2710,%esi
  movsd  D174(%rip),%xmm0
  mov    D48(%rip),%rax
  mov    $0x2710,%edi
  mulsd  %xmm1,%xmm0
  addsd  D172(%rip),%xmm0
  cvttsd2si %xmm0,%edx
  movq   %rax,%xmm0
  call   <runtest@plt>
  sub    $0x1,%ebx
  jne    L19
  lea    D46(%rip),%rdi
  mov    $0x64,%ebx
  call   <printf@plt>
  xchg   %ax,%ax
L44:
  xor    %eax,%eax
  call   <rand@plt>
  movslq %eax,%rdx
  mov    %eax,%ecx
  imul   $0x45e7b273,%rdx,%rdx
  sar    $0x1f,%ecx
  sar    $0x2d,%rdx
  sub    %ecx,%edx
  imul   $0x7530,%edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  lea    0xa(%rax),%edi
  mov    D38(%rip),%rax
  add    $0x14,%edx
  mov    %edi,%esi
  movq   %rax,%xmm1
  mov    D247(%rip),%rax
  movq   %rax,%xmm0
  call   <runtest@plt>
  sub    $0x1,%ebx
  jne    L44
  lea    D162(%rip),%rdi
  mov    $0x64,%ebx
  call   <printf@plt>
  nopl   0x0(%rax)
L20:
  xor    %eax,%eax
  call   <rand@plt>
  pxor   %xmm0,%xmm0
  mov    $0x2710,%esi
  mov    $0x2710,%edi
  movslq %eax,%rdx
  mov    %eax,%ecx
  imul   $0x68db8bad,%rdx,%rdx
  sar    $0x1f,%ecx
  sar    $0x2c,%rdx
  sub    %ecx,%edx
  imul   $0x2710,%edx,%edx
  sub    %edx,%eax
  mov    $0x186a0,%edx
  add    $0x1,%eax
  cvtsi2sd %eax,%xmm0
  mov    D38(%rip),%rax
  movq   %rax,%xmm1
  call   <runtest@plt>
  sub    $0x1,%ebx
  jne    L20
  lea    D149(%rip),%rdi
  mov    $0x64,%ebx
  call   <printf@plt>
  nopl   (%rax)
L5:
  xor    %eax,%eax
  call   <rand@plt>
  pxor   %xmm1,%xmm1
  mov    $0x2710,%esi
  movsd  D174(%rip),%xmm0
  cltd
  mov    $0x2710,%edi
  shr    $0x1a,%edx
  add    %edx,%eax
  and    $0x3f,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  cvtsi2sd %eax,%xmm1
  mulsd  D101(%rip),%xmm1
  mov    D48(%rip),%rax
  mulsd  %xmm1,%xmm0
  addsd  D172(%rip),%xmm0
  cvttsd2si %xmm0,%edx
  movq   %rax,%xmm0
  call   <runtest@plt>
  sub    $0x1,%ebx
  jne    L5
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r12
  ret
```

tool_calls: name: read_data
arguments: data_tag: D111
datatype: string
name: read_data
arguments: data_tag: D174
datatype: byte[8]
name: read_data
arguments: data_tag: D101
datatype: byte[8]
name: read_data
arguments: data_tag: D48
datatype: byte[8]
name: read_data
arguments: data_tag: D172
datatype: byte[8]
name: read_data
arguments: data_tag: D166
datatype: string
name: read_data
arguments: data_tag: D46
datatype: string
name: read_data
arguments: data_tag: D38
datatype: f64
name: read_data
arguments: data_tag: D247
datatype: byte[8]
name: read_data
arguments: data_tag: D162
datatype: string
name: read_data
arguments: data_tag: D149
datatype: string

tool: D111: 
*** Vary source block size*** 



tool: {"D174": [0x00,0x00,0x00,0x00,0x00,0x88,0xc3,0x40]}

tool: {"D101": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

tool: {"D48": [0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x40]}

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

tool: D166: 
*** Vary dest block size ***



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



tool: D38: 1

tool: {"D247": [0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x40]}

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



tool: D149: 
*** 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;
}
```