user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %r15
  lea    D81(%rip),%rdi
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  lea    D268(%rip),%rbx
  sub    $0x1b8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x1a8(%rsp)
  movabs $0x800000010,%rax
  lea    0x10(%rsp),%r14
  lea    0x30(%rsp),%rbp
  mov    %r14,%r12
  mov    %r14,%r13
  mov    %rax,0x10(%rsp)
  movabs $0x100000000c,%rax
  mov    %rax,0x18(%rsp)
  movabs $0xe00000012,%rax
  mov    %rax,0x20(%rsp)
  movabs $0x800000004,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D214(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D86(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D374(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax)
L57:
  mov    0x0(%r13),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r13
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r13
  jne    L57
  lea    0x40(%rsp),%rax
  mov    $0x8,%ecx
  mov    %r14,%rdx
  mov    %rbp,%rdi
  mov    %rax,%rsi
  mov    %rax,0x8(%rsp)
  lea    0x50(%rsp),%r13
  mov    %rbp,%r15
  call   <fn_dirFHaarWT2p2oneStage_NoaK@plt>
  lea    D153(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %rbp,(%rsp)
  nopw   0x0(%rax,%rax,1)
L54:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r13,%r15
  jne    L54
  mov    0x8(%rsp),%rdx
  mov    $0x8,%ecx
  mov    %rbp,%rsi
  mov    %r14,%rdi
  mov    %r14,%r15
  call   <fn_invFHaarWT2p2oneStage_NoaK@plt>
  lea    D393(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax,%rax,1)
L147:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r15
  jne    L147
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  mov    %r14,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D190(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D374(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax,%rax,1)
L23:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r15
  jne    L23
  mov    %r13,%rcx
  mov    $0x8,%edx
  mov    $0x1,%esi
  mov    %rbp,%rdi
  call   <ifn_array2wk@plt>
  mov    $0x1,%ecx
  mov    %r14,%rsi
  mov    %r13,%rdi
  mov    $0x8,%edx
  mov    %rbp,%r15
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D153(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   (%rax)
L124:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r13,%r15
  jne    L124
  mov    $0x1,%ecx
  mov    $0x8,%edx
  mov    %r13,%rsi
  mov    %r14,%rdi
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D393(%rip),%rdi
  xor    %eax,%eax
  mov    %r14,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
L95:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r15
  jne    L95
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  mov    %r14,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D145(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D374(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax,%rax,1)
L8:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r15
  jne    L8
  mov    $0xa,%edi
  lea    D220(%rip),%r15
  call   <putchar@plt>
  mov    $0x3,%esi
  lea    D256(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r13,%rcx
  mov    $0x8,%edx
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <ifn_array2wk@plt>
  mov    $0x3,%ecx
  mov    %r14,%rsi
  mov    %r13,%rdi
  mov    $0x8,%edx
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    0x10(%rbp),%rax
  mov    %rax,0x8(%rsp)
L14:
  mov    (%rsp),%rax
  mov    %r15,%rdi
  mov    (%rax),%esi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  addq   $0x4,(%rsp)
  mov    (%rsp),%rax
  cmp    0x8(%rsp),%rax
  jne    L14
  lea    D216(%rip),%r8
  mov    0x40(%rsp),%esi
  xor    %eax,%eax
  mov    %r8,%rdi
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D216(%rip),%r8
  mov    0x44(%rsp),%esi
  xor    %eax,%eax
  mov    %r8,%rdi
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x48(%rsp),%esi
  lea    D108(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x4c(%rsp),%esi
  lea    D51(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x3,%ecx
  mov    %r13,%rsi
  mov    %r14,%rdi
  mov    $0x8,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D393(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
L16:
  mov    (%r12),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r12
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %rbp,%r12
  jne    L16
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  lea    0x120(%rsp),%rbp
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D300(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D221(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0xa0(%rsp),%rax
  mov    %rax,(%rsp)
  mov    %rax,%r13
  mov    %rax,%r12
  nopl   0x0(%rax,%rax,1)
L89:
  xor    %eax,%eax
  add    $0x4,%r13
  call   <rand@plt>
  mov    %rbx,%rdi
  cltd
  shr    $0x1b,%edx
  lea    (%rax,%rdx,1),%esi
  xor    %eax,%eax
  and    $0x1f,%esi
  sub    %edx,%esi
  add    $0x1,%esi
  mov    %esi,-0x4(%r13)
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r13,%rbp
  jne    L89
  lea    0x70(%rsp),%rax
  mov    $0x20,%edx
  mov    %rbp,%rdi
  mov    %rbp,%r13
  mov    %rax,%rcx
  mov    $0x5,%esi
  mov    %rax,%r14
  mov    %rax,0x8(%rsp)
  call   <ifn_array2wk@plt>
  mov    (%rsp),%rsi
  mov    %r14,%rdi
  mov    %rbp,%r15
  mov    $0x5,%ecx
  mov    $0x20,%edx
  lea    0x1a0(%rsp),%r14
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D178(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   (%rax)
L115:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r14,%r15
  jne    L115
  mov    (%rsp),%r15
  mov    0x8(%rsp),%rsi
  mov    $0x5,%ecx
  mov    $0x20,%edx
  mov    %r15,%rdi
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D262(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax,%rax,1)
L77:
  mov    (%r15),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r15
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r15,%rbp
  jne    L77
  lea    D329(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D80(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D81(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D221(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    (%rsp),%r15
  nopl   0x0(%rax)
L53:
  xor    %eax,%eax
  add    $0x4,%r15
  call   <rand@plt>
  mov    %rbx,%rdi
  cltd
  shr    $0x1b,%edx
  lea    (%rax,%rdx,1),%esi
  xor    %eax,%eax
  and    $0x1f,%esi
  sub    %edx,%esi
  add    $0x1,%esi
  mov    %esi,-0x4(%r15)
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r15,%rbp
  jne    L53
  mov    0x8(%rsp),%r15
  mov    $0x20,%edx
  mov    $0x3,%esi
  mov    %rbp,%rdi
  mov    %r15,%rcx
  call   <ifn_array2wk@plt>
  mov    (%rsp),%rsi
  mov    $0x3,%ecx
  mov    %r15,%rdi
  mov    $0x20,%edx
  call   <fn_dirFHaarWT2p2_NoaK@plt>
  lea    D178(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nop
L76:
  mov    0x0(%r13),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r13
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r14,%r13
  jne    L76
  mov    0x8(%rsp),%rsi
  mov    (%rsp),%rdi
  mov    $0x3,%ecx
  mov    $0x20,%edx
  call   <fn_invFHaarWT2p2_NoaK@plt>
  lea    D262(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  nopl   0x0(%rax)
L126:
  mov    (%r12),%esi
  mov    %rbx,%rdi
  xor    %eax,%eax
  add    $0x4,%r12
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  cmp    %r12,%rbp
  jne    L126
  lea    D36(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x1a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L131
  add    $0x1b8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L131:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D81
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D268
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D214
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D86
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D374
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D153
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D393
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D190
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D145
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D220
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D256
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D216
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D108
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D51
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D300
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D221
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D178
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D262
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D329
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D80
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D36
type_guessed: string

tool: D81: -----------------------------------------------------------------

tool: D268: %d 

tool: D214:  determining test 

tool: D86:  one stage 

tool: D374:  input: 

tool: D153:  output: 

tool: D393:  input, again: 

tool: D190:  one level 

tool: D145:  full level 

tool: D220:  W3: %d 

tool: D256: i_step = %d 

tool: D216:  W2: %d 

tool: D108:  W1: %d 

tool: D51:  W0: %d 

tool: D300:  random test 

tool: D221:  input random: 

tool: D178:  output random: 

tool: D262:  input random, again: 

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

tool: D80:  random semi-full test 

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