user: 请从给定的汇编指令推导出C源代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  lea    -0x7a1000(%rsp),%r11
L399:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L399
  sub    $0x328,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  movl   $0x0,-0x7a12f0(%rbp)
  movl   $0x0,-0x7a12ec(%rbp)
  movl   $0x0,-0x7a12e8(%rbp)
  movl   $0x0,-0x7a12cc(%rbp)
  movl   $0x0,-0x7a12e4(%rbp)
  movl   $0x0,-0x7a12e0(%rbp)
  movl   $0x0,-0x7a12dc(%rbp)
  movl   $0x0,-0x7a12d8(%rbp)
  movl   $0x0,-0x7a12d4(%rbp)
  movl   $0x0,-0x7a12d0(%rbp)
  movl   $0x3e8,-0x7a12c8(%rbp)
  movl   $0x0,-0x7a1338(%rbp)
  movl   $0x0,-0x7a1334(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x7a1330(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x7a12c4(%rbp)
  mov    -0x7a12c8(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x7a12b8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x7a1350(%rbp)
  movq   $0x0,-0x7a1348(%rbp)
  movslq %edx,%rax
  mov    %rax,%r14
  mov    $0x0,%r15d
  movslq %edx,%rax
  mov    $0x10,%edx
  sub    $0x1,%rdx
  add    %rdx,%rax
  mov    $0x10,%ecx
  mov    $0x0,%edx
  div    %rcx
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L229:
  cmp    %rdx,%rsp
  je     L374
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L229
L374:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L23
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L23:
  mov    %rsp,%rax
  add    $0x0,%rax
  mov    %rax,-0x7a12b0(%rbp)
  mov    -0x7a12c8(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x7a12a8(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%r12
  mov    $0x0,%r13d
  movslq %eax,%rdx
  mov    %rdx,%r10
  mov    $0x0,%r11d
  cltq
  mov    $0x10,%edx
  sub    $0x1,%rdx
  add    %rdx,%rax
  mov    $0x10,%ecx
  mov    $0x0,%edx
  div    %rcx
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L363:
  cmp    %rdx,%rsp
  je     L222
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L363
L222:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L436
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L436:
  mov    %rsp,%rax
  add    $0x0,%rax
  mov    %rax,-0x7a12a0(%rbp)
  mov    -0x7a12c8(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x7a1298(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%r8
  mov    $0x0,%r9d
  movslq %eax,%rdx
  mov    %rdx,%rsi
  mov    $0x0,%edi
  cltq
  mov    $0x10,%edx
  sub    $0x1,%rdx
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L419:
  cmp    %rdx,%rsp
  je     L435
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L419
L435:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L570
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L570:
  mov    %rsp,%rax
  add    $0x0,%rax
  mov    %rax,-0x7a1290(%rbp)
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L8
L147:
  mov    $0xf,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    %rdx,-0x30d470(%rbp,%rax,8)
  mov    $0xf,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    %rdx,-0x186a70(%rbp,%rax,8)
  addl   $0x1,-0x7a12ec(%rbp)
L8:
  cmpl   $0x30d3f,-0x7a12ec(%rbp)
  jle    L147
  lea    D31(%rip),%rax
  mov    %rax,%rsi
  lea    D221(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fopen@plt>
  mov    %rax,-0x7a1288(%rbp)
  lea    D46(%rip),%rax
  mov    %rax,%rsi
  lea    D85(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fopen@plt>
  mov    %rax,-0x7a1280(%rbp)
  lea    D31(%rip),%rax
  mov    %rax,%rsi
  lea    D128(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fopen@plt>
  mov    %rax,-0x7a1278(%rbp)
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L449
L443:
  mov    -0x7a1278(%rbp),%rdx
  mov    -0x7a12c8(%rbp),%ecx
  mov    -0x7a1290(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  addl   $0x1,-0x7a12f0(%rbp)
L449:
  cmpl   $0x4,-0x7a12f0(%rbp)
  jle    L443
  lea    -0x7a1330(%rbp),%rcx
  lea    -0x47(%rbp),%rdx
  mov    -0x7a1290(%rbp),%rax
  lea    D12(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L91
L152:
  addl   $0x1,-0x7a12d4(%rbp)
  lea    D31(%rip),%rax
  mov    %rax,%rsi
  lea    D165(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fopen@plt>
  mov    %rax,-0x7a12c0(%rbp)
  mov    -0x7a1288(%rbp),%rdx
  mov    -0x7a12c8(%rbp),%ecx
  mov    -0x7a12a0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  lea    -0x56(%rbp),%rdx
  mov    -0x7a12a0(%rbp),%rax
  lea    D65(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  lea    -0x56(%rbp),%rax
  mov    $0x4,%edx
  lea    D211(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L293
  lea    -0x56(%rbp),%rax
  mov    $0x6,%edx
  lea    D164(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L417
  mov    -0x7a1288(%rbp),%rdx
  mov    -0x7a12c8(%rbp),%ecx
  mov    -0x7a12a0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  lea    -0x56(%rbp),%rdx
  mov    -0x7a12a0(%rbp),%rax
  lea    D65(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
L417:
  lea    -0x56(%rbp),%rax
  mov    $0x4,%edx
  lea    D206(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L320
  mov    -0x7a12e8(%rbp),%eax
  cltq
  mov    -0x186a70(%rbp,%rax,8),%rsi
  lea    -0x7a1318(%rbp),%r9
  lea    -0x7a131c(%rbp),%r8
  lea    -0x7a1320(%rbp),%rcx
  lea    -0x56(%rbp),%rdx
  mov    -0x7a12a0(%rbp),%rax
  lea    -0x7a12f8(%rbp),%rdi
  push   %rdi
  lea    -0x7a12fc(%rbp),%rdi
  push   %rdi
  lea    -0x7a1300(%rbp),%rdi
  push   %rdi
  lea    -0x7a1304(%rbp),%rdi
  push   %rdi
  push   %rsi
  lea    -0x7a1334(%rbp),%rsi
  push   %rsi
  lea    D172(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  add    $0x30,%rsp
  addl   $0x1,-0x7a12dc(%rbp)
L320:
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L549
L356:
  mov    -0x7a12c0(%rbp),%rdx
  mov    -0x7a12c8(%rbp),%ecx
  mov    -0x7a12b0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  lea    -0x65(%rbp),%rdx
  mov    -0x7a12b0(%rbp),%rax
  lea    D65(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  lea    -0x65(%rbp),%rax
  mov    $0x4,%edx
  lea    D211(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L245
  cmpl   $0x1,-0x7a12d4(%rbp)
  jne    L285
  mov    -0x7a12d8(%rbp),%eax
  mov    %eax,-0x7a12d0(%rbp)
  jmp    L521
L245:
  lea    -0x65(%rbp),%rax
  mov    $0x6,%edx
  lea    D164(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L525
  mov    -0x7a12c0(%rbp),%rdx
  mov    -0x7a12c8(%rbp),%ecx
  mov    -0x7a12b0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  lea    -0x65(%rbp),%rdx
  mov    -0x7a12b0(%rbp),%rax
  lea    D65(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
L525:
  lea    -0x65(%rbp),%rax
  mov    $0x4,%edx
  lea    D206(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L217
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x30d470(%rbp,%rax,8),%rsi
  lea    -0x7a1324(%rbp),%r9
  lea    -0x7a1328(%rbp),%r8
  lea    -0x7a132c(%rbp),%rcx
  lea    -0x65(%rbp),%rdx
  mov    -0x7a12b0(%rbp),%rax
  lea    -0x7a1308(%rbp),%rdi
  push   %rdi
  lea    -0x7a130c(%rbp),%rdi
  push   %rdi
  lea    -0x7a1310(%rbp),%rdi
  push   %rdi
  lea    -0x7a1314(%rbp),%rdi
  push   %rdi
  push   %rsi
  lea    -0x7a1338(%rbp),%rsi
  push   %rsi
  lea    D172(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  add    $0x30,%rsp
  mov    -0x7a1338(%rbp),%edx
  mov    -0x7a12d8(%rbp),%eax
  cltq
  mov    %edx,-0x61a870(%rbp,%rax,4)
  addl   $0x1,-0x7a12d8(%rbp)
  movss  -0x7a132c(%rbp),%xmm0
  movss  -0x7a1320(%rbp),%xmm2
  movaps %xmm0,%xmm1
  subss  %xmm2,%xmm1
  movss  -0x7a132c(%rbp),%xmm0
  movss  -0x7a1320(%rbp),%xmm2
  subss  %xmm2,%xmm0
  mulss  %xmm0,%xmm1
  movss  -0x7a1328(%rbp),%xmm0
  movss  -0x7a131c(%rbp),%xmm3
  movaps %xmm0,%xmm2
  subss  %xmm3,%xmm2
  movss  -0x7a1328(%rbp),%xmm0
  movss  -0x7a131c(%rbp),%xmm3
  subss  %xmm3,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  movss  -0x7a1324(%rbp),%xmm0
  movss  -0x7a1318(%rbp),%xmm3
  movaps %xmm0,%xmm2
  subss  %xmm3,%xmm2
  movss  -0x7a1324(%rbp),%xmm0
  movss  -0x7a1318(%rbp),%xmm3
  subss  %xmm3,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  movd   %xmm1,%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x7a12c4(%rbp)
  movss  -0x7a1330(%rbp),%xmm0
  comiss -0x7a12c4(%rbp),%xmm0
  ja     L376
  jmp    L511
L376:
  mov    -0x7a1338(%rbp),%edx
  mov    -0x7a12e0(%rbp),%eax
  cltq
  mov    %edx,-0x7a1270(%rbp,%rax,4)
  addl   $0x1,-0x7a12e0(%rbp)
L217:
  nop
L511:
  addl   $0x1,-0x7a12ec(%rbp)
L549:
  cmpl   $0x30d3f,-0x7a12ec(%rbp)
  jle    L356
  jmp    L521
L285:
  nop
L521:
  addl   $0x1,-0x7a12f0(%rbp)
L91:
  cmpl   $0xc7,-0x7a12f0(%rbp)
  jle    L152
  jmp    L442
L293:
  nop
L442:
  movl   $0x0,-0x7a12e8(%rbp)
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L53
L73:
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L558
L536:
  addl   $0x1,-0x7a12ec(%rbp)
L558:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x7a1270(%rbp,%rax,4),%edx
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    -0x6ddd70(%rbp,%rax,4),%eax
  cmp    %eax,%edx
  je     L265
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12e8(%rbp),%eax
  jle    L536
L265:
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12e8(%rbp),%eax
  jge    L13
  addl   $0x1,-0x7a12f0(%rbp)
  jmp    L53
L13:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x7a1270(%rbp,%rax,4),%edx
  mov    -0x7a12e8(%rbp),%eax
  cltq
  mov    %edx,-0x6ddd70(%rbp,%rax,4)
  addl   $0x1,-0x7a12e8(%rbp)
L53:
  mov    -0x7a12f0(%rbp),%eax
  cmp    -0x7a12e0(%rbp),%eax
  jl     L73
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L116
L340:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x6ddd70(%rbp,%rax,4),%eax
  mov    $0x64,%esi
  mov    %eax,%edi
  call   <div@plt>
  mov    %eax,-0x7a12f4(%rbp)
  mov    -0x7a12f4(%rbp),%edx
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    %edx,-0x557370(%rbp,%rax,4)
  addl   $0x1,-0x7a12f0(%rbp)
L116:
  mov    -0x7a12f0(%rbp),%eax
  cmp    -0x7a12e8(%rbp),%eax
  jl     L340
  movl   $0x0,-0x7a12e8(%rbp)
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L284
L448:
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L571
L211:
  addl   $0x1,-0x7a12ec(%rbp)
L571:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x557370(%rbp,%rax,4),%edx
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    -0x493e70(%rbp,%rax,4),%eax
  cmp    %eax,%edx
  je     L199
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12e8(%rbp),%eax
  jle    L211
L199:
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12e8(%rbp),%eax
  jge    L422
  addl   $0x1,-0x7a12f0(%rbp)
  jmp    L284
L422:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x557370(%rbp,%rax,4),%edx
  mov    -0x7a12e8(%rbp),%eax
  cltq
  mov    %edx,-0x493e70(%rbp,%rax,4)
  addl   $0x1,-0x7a12e8(%rbp)
L284:
  mov    -0x7a12f0(%rbp),%eax
  cmp    -0x7a12e0(%rbp),%eax
  jl     L448
  mov    -0x7a12e8(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x7a12cc(%rbp)
  mov    -0x7a12cc(%rbp),%edx
  lea    -0x493e70(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <bubble_sort@plt>
  movl   $0x0,-0x7a12e4(%rbp)
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L212
L505:
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L37
L69:
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    -0x61a870(%rbp,%rax,4),%eax
  mov    $0x64,%esi
  mov    %eax,%edi
  call   <div@plt>
  mov    %eax,-0x7a12f4(%rbp)
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x493e70(%rbp,%rax,4),%edx
  mov    -0x7a12f4(%rbp),%eax
  cmp    %eax,%edx
  jne    L231
  mov    -0x7a12ec(%rbp),%eax
  cltq
  mov    -0x61a870(%rbp,%rax,4),%edx
  mov    -0x7a12e4(%rbp),%eax
  cltq
  mov    %edx,-0x3d0970(%rbp,%rax,4)
  addl   $0x1,-0x7a12e4(%rbp)
L231:
  addl   $0x1,-0x7a12ec(%rbp)
L37:
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12d0(%rbp),%eax
  jl     L69
  addl   $0x1,-0x7a12f0(%rbp)
L212:
  mov    -0x7a12f0(%rbp),%eax
  cmp    -0x7a12cc(%rbp),%eax
  jl     L505
  movl   $0x0,-0x7a12ec(%rbp)
  jmp    L75
L187:
  mov    -0x7a12ec(%rbp),%eax
  lea    0xf4240(%rax),%ecx
  mov    -0x7a12ec(%rbp),%eax
  lea    0xf4240(%rax),%edx
  mov    -0x7a1280(%rbp),%rax
  lea    D240(%rip),%r9
  mov    %ecx,%r8d
  mov    %edx,%ecx
  lea    D127(%rip),%rdx
  lea    D56(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  addl   $0x1,-0x7a12ec(%rbp)
L75:
  mov    -0x7a12ec(%rbp),%eax
  cmp    -0x7a12dc(%rbp),%eax
  jl     L187
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L151
L556:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x3d0970(%rbp,%rax,4),%ecx
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x3d0970(%rbp,%rax,4),%edx
  mov    -0x7a1280(%rbp),%rax
  lea    D240(%rip),%r9
  mov    %ecx,%r8d
  mov    %edx,%ecx
  lea    D127(%rip),%rdx
  lea    D56(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  addl   $0x1,-0x7a12f0(%rbp)
L151:
  mov    -0x7a12f0(%rbp),%eax
  cmp    -0x7a12e4(%rbp),%eax
  jl     L556
  movl   $0x0,-0x7a12f0(%rbp)
  jmp    L561
L507:
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x30d470(%rbp,%rax,8),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x7a12f0(%rbp),%eax
  cltq
  mov    -0x186a70(%rbp,%rax,8),%rax
  mov    %rax,%rdi
  call   <free@plt>
  addl   $0x1,-0x7a12f0(%rbp)
L561:
  cmpl   $0x30d3f,-0x7a12f0(%rbp)
  jle    L507
  mov    -0x7a12c0(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x7a1288(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x7a1280(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x7a1278(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    %rbx,%rsp
  mov    $0x0,%eax
  mov    -0x38(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L492
  call   <__stack_chk_fail@plt>
L492:
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D31
type: string
name: retrieve_data
arguments: label: D221
type: string
name: retrieve_data
arguments: label: D46
type: string
name: retrieve_data
arguments: label: D85
type: string
name: retrieve_data
arguments: label: D128
type: string
name: retrieve_data
arguments: label: D12
type: string
name: retrieve_data
arguments: label: D165
type: string
name: retrieve_data
arguments: label: D65
type: string
name: retrieve_data
arguments: label: D211
type: string
name: retrieve_data
arguments: label: D164
type: string
name: retrieve_data
arguments: label: D206
type: string
name: retrieve_data
arguments: label: D172
type: string
name: retrieve_data
arguments: label: D240
type: string
name: retrieve_data
arguments: label: D127
type: string
name: retrieve_data
arguments: label: D56
type: string

tool: D31: r

tool: D221: input_ligand.ammp

tool: D46: w

tool: D85: active.ammp

tool: D128: param.temp

tool: D12: %s %f

tool: D165: protein.ammp

tool: D65: %s

tool: D211: bond

tool: D164: mompar

tool: D206: atom

tool: D172: %s %f %f %f %i %s %f %f %f %f

tool: D240: ;

tool: D127: active

tool: D56: %s %i %i%s


assistant: ```c
main() {
  int i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, q = 0, p = 0, flag = 0, end_atom = 0, line_length = 1000, res_atom_number = 0, lig_atom_number = 0, all_active[200000], active[200000], res_atoms[200000], res_pointers[200000], pointers[200000], all_sphere[200000];
  float radius = 0, dist = 0, res_coordx, res_coordy, res_coordz, lig_coordx, lig_coordy, lig_coordz, res_numb1, res_numb2, res_numb3, res_numb4, lig_numb1, lig_numb2, lig_numb3, lig_numb4;
  char res_buf[line_length], lig_buf[line_length], param_buf[line_length], res_word[15], lig_word[15], param_word[15], *res_name[200000], *lig_name[200000];
  for (j = 0; j < 200000; j++) {
    res_name[j] = (char *)malloc(15);
    lig_name[j] = (char *)malloc(15);
  }
  FILE *protein, *ligand, *numb_act, *param, *fopen();
  ligand = fopen("input_ligand.ammp", "r");
  numb_act = fopen("active.ammp", "w");
  param = fopen("param.temp", "r");
  for (i = 0; i < 5; i++)
    fgets(param_buf, line_length, param);
  sscanf(param_buf, "%s %f", param_word, &radius);
  for (i = 0; i < 200; i++) {
    flag++;
    protein = fopen("protein.ammp", "r");
    fgets(lig_buf, line_length, ligand);
    sscanf(lig_buf, "%s", lig_word);
    if (!strncmp(lig_word, "bond", 4))
      break;
    if (!strncmp(lig_word, "mompar", 6)) {
      fgets(lig_buf, line_length, ligand);
      sscanf(lig_buf, "%s", lig_word);
    }
    if (!strncmp(lig_word, "atom", 4)) {
      sscanf(lig_buf, "%s %f %f %f %i %s %f %f %f %f", lig_word, &lig_coordx, &lig_coordy, &lig_coordz, &lig_atom_number, lig_name[k], &lig_numb1, &lig_numb2, &lig_numb3, &lig_numb4);
      q++;
    }
    for (j = 0; j < 200000; j++) {
      fgets(res_buf, line_length, protein);
      sscanf(res_buf, "%s", res_word);
      if (!strncmp(res_word, "bond", 4)) {
        if (flag == 1) {
          end_atom = p;
          break;
        } else
          break;
      }
      if (!strncmp(res_word, "mompar", 6)) {
        fgets(res_buf, line_length, protein);
        sscanf(res_buf, "%s", res_word);
      }
      if (!strncmp(res_word, "atom", 4)) {
        sscanf(res_buf, "%s %f %f %f %i %s %f %f %f %f", res_word, &res_coordx, &res_coordy, &res_coordz, &res_atom_number, res_name[i], &res_numb1, &res_numb2, &res_numb3, &res_numb4);
        res_atoms[p] = res_atom_number;
        p++;
        dist = sqrt((res_coordx - lig_coordx) * (res_coordx - lig_coordx) + (res_coordy - lig_coordy) * (res_coordy - lig_coordy) + (res_coordz - lig_coordz) * (res_coordz - lig_coordz));
        if (dist < radius) {
          all_active[n] = res_atom_number;
          n++;
        } else
          continue;
      }
      continue;
    }
  }
  k = 0;
  for (i = 0; i < n;) {
    j = 0;
    while (all_active[i] != active[j] && j <= k)
      j++;
    if (j < k) {
      i++;
      continue;
    }
    active[k] = all_active[i];
    k++;
  }
  for (i = 0; i < k; i++) {
    div_t point;
    point = div(active[i], 100);
    res_pointers[i] = point.quot;
  }
  k = 0;
  for (i = 0; i < n;) {
    j = 0;
    while (res_pointers[i] != pointers[j] && j <= k)
      j++;
    if (j < k) {
      i++;
      continue;
    }
    pointers[k] = res_pointers[i];
    k++;
  }
  l = k - 1;
  bubble_sort(pointers, l);
  m = 0;
  for (i = 0; i < l; i++) {
    for (j = 0; j < end_atom; j++) {
      div_t numb;
      numb = div(res_atoms[j], 100);
      if (pointers[i] == numb.quot) {
        all_sphere[m] = res_atoms[j];
        m++;
      } else {
        continue;
      }
    }
  }
  for (j = 0; j < q; j++)
    fprintf(numb_act, "%s %i %i%s\n", "active", 1000000 + j, 1000000 + j, ";");
  for (i = 0; i < m; i++)
    fprintf(numb_act, "%s %i %i%s\n", "active", all_sphere[i], all_sphere[i], ";");
  for (i = 0; i < 200000; ++i) {
    free(res_name[i]);
    free(lig_name[i]);
  }
  fclose(protein);
  fclose(ligand);
  fclose(numb_act);
  fclose(param);
}
```