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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1b8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x1a8(%rsp)
  xor    %eax,%eax
  movl   $0x10,0x10(%rsp)
  movl   $0x8,0x14(%rsp)
  movl   $0xc,0x18(%rsp)
  movl   $0x10,0x1c(%rsp)
  movl   $0x12,0x20(%rsp)
  movl   $0xe,0x24(%rsp)
  movl   $0x4,0x28(%rsp)
  movl   $0x8,0x2c(%rsp)
  lea    D285(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D225(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D268(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D425(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0x10(%rsp),%rbp
  lea    0x30(%rsp),%rbx
  mov    %rbp,%r12
  lea    D327(%rip),%r13
L53:
  mov    (%r12),%esi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %rbx,%r12
  jne    L53
  lea    0x10(%rsp),%rdx
  lea    0x30(%rsp),%rax
  mov    %rax,%r12
  mov    %rax,0x8(%rsp)
  lea    0x40(%rsp),%rsi
  mov    $0x8,%ecx
  mov    %rax,%rdi
  call   <fn_dirFHaarWT2p2oneStage_NoaK@plt>
  lea    D239(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r12,%r13
  lea    0x50(%rsp),%r14
  lea    D327(%rip),%r15
L36:
  mov    (%r12),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %r14,%r12
  jne    L36
  lea    0x30(%rsp),%rsi
  lea    0x40(%rsp),%rdx
  lea    0x10(%rsp),%rdi
  mov    $0x8,%ecx
  call   <fn_invFHaarWT2p2oneStage_NoaK@plt>
  lea    D126(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbp,%r12
  lea    D327(%rip),%r15
L2:
  mov    (%r12),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %rbx,%r12
  jne    L2
  lea    D285(%rip),%r12
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D209(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D425(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbp,%r12
  lea    D327(%rip),%r15
L107:
  mov    (%r12),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %rbx,%r12
  jne    L107
  lea    0x50(%rsp),%r12
  lea    0x30(%rsp),%rdi
  mov    %r12,%rcx
  mov    $0x8,%edx
  mov    $0x1,%esi
  call   <ifn_array2wk@plt>
  lea    0x10(%rsp),%rsi
  mov    $0x1,%ecx
  mov    $0x8,%edx
  mov    %r12,%rdi
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D239(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x8(%rsp),%r12
  lea    D327(%rip),%r15
L105:
  mov    (%r12),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %r14,%r12
  jne    L105
  lea    0x50(%rsp),%rsi
  lea    0x10(%rsp),%rdi
  mov    $0x1,%ecx
  mov    $0x8,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D126(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbp,%r12
  lea    D327(%rip),%r14
L89:
  mov    (%r12),%esi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %rbx,%r12
  jne    L89
  lea    D285(%rip),%r12
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D235(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D425(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbp,%r12
  lea    D327(%rip),%r14
L56:
  mov    (%r12),%esi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %rbx,%r12
  jne    L56
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x3,%esi
  lea    D36(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0x50(%rsp),%r12
  lea    0x30(%rsp),%rdi
  mov    %r12,%rcx
  mov    $0x8,%edx
  mov    $0x3,%esi
  call   <ifn_array2wk@plt>
  lea    0x10(%rsp),%rsi
  mov    $0x3,%ecx
  mov    $0x8,%edx
  mov    %r12,%rdi
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  mov    0x8(%rsp),%r12
  add    $0x10,%r12
  lea    D299(%rip),%r14
L66:
  mov    0x0(%r13),%esi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r13
  cmp    %r12,%r13
  jne    L66
  mov    0x40(%rsp),%esi
  lea    D74(%rip),%r12
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x44(%rsp),%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x48(%rsp),%esi
  lea    D137(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x4c(%rsp),%esi
  lea    D234(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0x50(%rsp),%rsi
  lea    0x10(%rsp),%rdi
  mov    $0x3,%ecx
  mov    $0x8,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D126(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D327(%rip),%r12
L49:
  mov    0x0(%rbp),%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%rbp
  cmp    %rbx,%rbp
  jne    L49
  lea    D285(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D276(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D452(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0xa0(%rsp),%rbx
  lea    0x120(%rsp),%rbp
  mov    %rbx,%r12
  lea    D327(%rip),%r13
L117:
  mov    $0x0,%eax
  call   <rand@plt>
  cltd
  shr    $0x1b,%edx
  lea    (%rax,%rdx,1),%esi
  and    $0x1f,%esi
  sub    %edx,%esi
  add    $0x1,%esi
  mov    %esi,(%r12)
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %r12,%rbp
  jne    L117
  lea    0x70(%rsp),%r12
  lea    0x120(%rsp),%r13
  mov    %r12,%rcx
  mov    $0x20,%edx
  mov    $0x5,%esi
  mov    %r13,%rdi
  call   <ifn_array2wk@plt>
  lea    0xa0(%rsp),%rsi
  mov    $0x5,%ecx
  mov    $0x20,%edx
  mov    %r12,%rdi
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D444(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r13,%r12
  lea    0x1a0(%rsp),%r14
  lea    D327(%rip),%r15
L9:
  mov    0x0(%r13),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r13
  cmp    %r14,%r13
  jne    L9
  lea    0x70(%rsp),%rsi
  lea    0xa0(%rsp),%rdi
  mov    $0x5,%ecx
  mov    $0x20,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D347(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbx,%r13
  lea    D327(%rip),%r15
L63:
  mov    0x0(%r13),%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r13
  cmp    %rbp,%r13
  jne    L63
  lea    D416(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D285(%rip),%r13
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D423(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D452(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbx,%r13
  lea    D327(%rip),%r15
L153:
  mov    $0x0,%eax
  call   <rand@plt>
  cltd
  shr    $0x1b,%edx
  lea    (%rax,%rdx,1),%esi
  and    $0x1f,%esi
  sub    %edx,%esi
  add    $0x1,%esi
  mov    %esi,0x0(%r13)
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r13
  cmp    %rbp,%r13
  jne    L153
  lea    0x70(%rsp),%r13
  lea    0x120(%rsp),%rdi
  mov    %r13,%rcx
  mov    $0x20,%edx
  mov    $0x3,%esi
  call   <ifn_array2wk@plt>
  lea    0xa0(%rsp),%rsi
  mov    $0x3,%ecx
  mov    $0x20,%edx
  mov    %r13,%rdi
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D444(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D327(%rip),%r13
L58:
  mov    (%r12),%esi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%r12
  cmp    %r14,%r12
  jne    L58
  lea    0x70(%rsp),%rsi
  lea    0xa0(%rsp),%rdi
  mov    $0x3,%ecx
  mov    $0x20,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D347(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D327(%rip),%r12
L6:
  mov    (%rbx),%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x4,%rbx
  cmp    %rbx,%rbp
  jne    L6
  lea    D156(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x1a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L133
  mov    $0x0,%eax
  add    $0x1b8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L133:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D285
data_type: string
name: disassemble_data
arguments: label: D225
data_type: string
name: disassemble_data
arguments: label: D268
data_type: string
name: disassemble_data
arguments: label: D425
data_type: string
name: disassemble_data
arguments: label: D327
data_type: string
name: disassemble_data
arguments: label: D239
data_type: string
name: disassemble_data
arguments: label: D126
data_type: string
name: disassemble_data
arguments: label: D209
data_type: string
name: disassemble_data
arguments: label: D235
data_type: string
name: disassemble_data
arguments: label: D36
data_type: string
name: disassemble_data
arguments: label: D299
data_type: string
name: disassemble_data
arguments: label: D74
data_type: string
name: disassemble_data
arguments: label: D137
data_type: string
name: disassemble_data
arguments: label: D234
data_type: string
name: disassemble_data
arguments: label: D276
data_type: string
name: disassemble_data
arguments: label: D452
data_type: string
name: disassemble_data
arguments: label: D444
data_type: string
name: disassemble_data
arguments: label: D347
data_type: string
name: disassemble_data
arguments: label: D416
data_type: string
name: disassemble_data
arguments: label: D423
data_type: string
name: disassemble_data
arguments: label: D156
data_type: string

tool: D285: -----------------------------------------------------------------

tool: D225:  determining test 

tool: D268:  one stage 

tool: D425:  input: 

tool: D327: %d 

tool: D239:  output: 

tool: D126:  input, again: 

tool: D209:  one level 

tool: D235:  full level 

tool: D36: i_step = %d 

tool: D299:  W3: %d 

tool: D74:  W2: %d 

tool: D137:  W1: %d 

tool: D234:  W0: %d 

tool: D276:  random test 

tool: D452:  input random: 

tool: D444:  output random: 

tool: D347:  input random, again: 

tool: D416:  Well? Almost (!) The same? ))) 

tool: D423:  random semi-full test 

tool: D156:  Well? Seems to be true? ))) 

assistant: ```c
int main() {
  int i;
  int ai_data[8] = {16, 8, 12, 16, 18, 14, 4, 8};
  int ai_k[8];
  int *a4p2wki[4];
  unsigned int i_step = 3;
  int ai_Rdata[32];
  int ai_Rk[32];
  int *a4p2wkiR[6];
  unsigned int i_Rstep = 5;
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" determining test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" one stage ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  fn_dirFHaarWT2p2oneStage_NoaK(ai_k, &ai_k[4], ai_data, 8);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_k[i]);
    printf("\n");
  }
  fn_invFHaarWT2p2oneStage_NoaK(ai_data, ai_k, &ai_k[4], 8);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" one level ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  ifn_array2wk(ai_k, 1, 8, a4p2wki);
  fn_dirFHaarWT2p2_NoaK(a4p2wki, ai_data, 8, 1);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_k[i]);
    printf("\n");
  }
  fn_invFHaarWT2p2_NoaK(ai_data, a4p2wki, 8, 1);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" full level ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  printf("\n");
  printf("i_step = %d ", i_step);
  printf("\n");
  printf("\n");
  ifn_array2wk(ai_k, i_step, 8, a4p2wki);
  fn_dirFHaarWT2p2_NoaK(a4p2wki, ai_data, 8, i_step);
  for (i = 0; i < 4; i++) {
    printf(" W3: %d ", ai_k[i]);
    printf("\n");
  }
  for (i = 4; i < 6; i++) {
    printf(" W2: %d ", ai_k[i]);
    printf("\n");
  }
  printf(" W1: %d ", ai_k[6]);
  printf("\n");
  printf(" W0: %d ", ai_k[7]);
  printf("\n");
  fn_invFHaarWT2p2_NoaK(ai_data, a4p2wki, 8, i_step);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%d ", ai_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" random test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    ai_Rdata[i] = (rand() % 32) + 1;
    printf("%d ", ai_Rdata[i]);
    printf("\n");
  }
  ifn_array2wk(ai_Rk, i_Rstep, 32, a4p2wkiR);
  fn_dirFHaarWT2p2_NoaK(a4p2wkiR, ai_Rdata, 32, i_Rstep);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%d ", ai_Rk[i]);
    printf("\n");
  }
  fn_invFHaarWT2p2_NoaK(ai_Rdata, a4p2wkiR, 32, i_Rstep);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%d ", ai_Rdata[i]);
    printf("\n");
  }
  printf(" Well? Almost (!) The same? ))) ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" random semi-full test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    ai_Rdata[i] = (rand() % 32) + 1;
    printf("%d ", ai_Rdata[i]);
    printf("\n");
  }
  ifn_array2wk(ai_Rk, 3, 32, a4p2wkiR);
  fn_dirFHaarWT2p2_NoaK(a4p2wkiR, ai_Rdata, 32, 3);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%d ", ai_Rk[i]);
    printf("\n");
  }
  fn_invFHaarWT2p2_NoaK(ai_Rdata, a4p2wkiR, 32, 3);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%d ", ai_Rdata[i]);
    printf("\n");
  }
  printf(" Well? Seems to be true? ))) ");
  printf("\n");
  return 0;
}
```