user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %r13
  mov    $0xb,%esi
  mov    $0xa,%edi
  push   %r12
  push   %rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x388,%rsp
  movapd D486(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x378(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  movaps %xmm0,(%rsp)
  movapd D43(%rip),%xmm0
  mov    %rbp,%rdx
  movaps %xmm0,0x10(%rsp)
  movapd D49(%rip),%xmm0
  movaps %xmm0,0x20(%rsp)
  movapd D164(%rip),%xmm0
  movaps %xmm0,0x30(%rsp)
  movapd D280(%rip),%xmm0
  movaps %xmm0,0x40(%rsp)
  movapd D459(%rip),%xmm0
  movaps %xmm0,0x50(%rsp)
  movapd D356(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  movapd D20(%rip),%xmm0
  movaps %xmm0,0x70(%rsp)
  movapd D145(%rip),%xmm0
  movaps %xmm0,0x80(%rsp)
  movapd D474(%rip),%xmm0
  movaps %xmm0,0x90(%rsp)
  movapd D239(%rip),%xmm0
  movaps %xmm0,0xa0(%rsp)
  movapd D359(%rip),%xmm0
  movaps %xmm0,0xb0(%rsp)
  movapd D455(%rip),%xmm0
  movaps %xmm0,0xc0(%rsp)
  movapd D388(%rip),%xmm0
  movaps %xmm0,0xd0(%rsp)
  movapd D500(%rip),%xmm0
  movaps %xmm0,0xe0(%rsp)
  movapd D363(%rip),%xmm0
  movaps %xmm0,0xf0(%rsp)
  movapd D562(%rip),%xmm0
  movaps %xmm0,0x100(%rsp)
  movapd D349(%rip),%xmm0
  movaps %xmm0,0x110(%rsp)
  movapd D565(%rip),%xmm0
  movaps %xmm0,0x120(%rsp)
  movapd D51(%rip),%xmm0
  movaps %xmm0,0x130(%rsp)
  movapd D390(%rip),%xmm0
  movaps %xmm0,0x140(%rsp)
  movapd D2(%rip),%xmm0
  movaps %xmm0,0x150(%rsp)
  movapd D242(%rip),%xmm0
  movaps %xmm0,0x160(%rsp)
  movapd D288(%rip),%xmm0
  movaps %xmm0,0x170(%rsp)
  movapd D346(%rip),%xmm0
  movaps %xmm0,0x180(%rsp)
  movapd D247(%rip),%xmm0
  movaps %xmm0,0x190(%rsp)
  movapd D0(%rip),%xmm0
  movaps %xmm0,0x1a0(%rsp)
  movapd D3(%rip),%xmm0
  movaps %xmm0,0x1b0(%rsp)
  movapd D439(%rip),%xmm0
  movaps %xmm0,0x1c0(%rsp)
  movapd D432(%rip),%xmm0
  movaps %xmm0,0x1d0(%rsp)
  movapd D442(%rip),%xmm0
  movaps %xmm0,0x1e0(%rsp)
  movapd D303(%rip),%xmm0
  movaps %xmm0,0x1f0(%rsp)
  movapd D217(%rip),%xmm0
  movaps %xmm0,0x200(%rsp)
  movapd D266(%rip),%xmm0
  movaps %xmm0,0x210(%rsp)
  movapd D424(%rip),%xmm0
  movaps %xmm0,0x220(%rsp)
  movapd D60(%rip),%xmm0
  movaps %xmm0,0x230(%rsp)
  movapd D144(%rip),%xmm0
  movaps %xmm0,0x240(%rsp)
  movapd D82(%rip),%xmm0
  movaps %xmm0,0x250(%rsp)
  movapd D509(%rip),%xmm0
  movaps %xmm0,0x260(%rsp)
  movapd D460(%rip),%xmm0
  movaps %xmm0,0x270(%rsp)
  movapd D287(%rip),%xmm0
  movaps %xmm0,0x280(%rsp)
  movapd D68(%rip),%xmm0
  movaps %xmm0,0x290(%rsp)
  movapd D355(%rip),%xmm0
  movaps %xmm0,0x2a0(%rsp)
  movapd D207(%rip),%xmm0
  movaps %xmm0,0x2b0(%rsp)
  movapd D477(%rip),%xmm0
  movaps %xmm0,0x2c0(%rsp)
  movapd D4(%rip),%xmm0
  movaps %xmm0,0x2d0(%rsp)
  movapd D454(%rip),%xmm0
  movaps %xmm0,0x2e0(%rsp)
  movapd D373(%rip),%xmm0
  movaps %xmm0,0x2f0(%rsp)
  movapd D118(%rip),%xmm0
  movaps %xmm0,0x300(%rsp)
  movapd D275(%rip),%xmm0
  movaps %xmm0,0x310(%rsp)
  movapd D314(%rip),%xmm0
  movaps %xmm0,0x320(%rsp)
  movapd D430(%rip),%xmm0
  movaps %xmm0,0x330(%rsp)
  movapd D193(%rip),%xmm0
  movaps %xmm0,0x340(%rsp)
  movapd D168(%rip),%xmm0
  movaps %xmm0,0x350(%rsp)
  movapd D6(%rip),%xmm0
  movaps %xmm0,0x360(%rsp)
  call   <pirnt_matrix@plt>
  lea    D188(%rip),%rdi
  call   <puts@plt>
  xchg   %ax,%ax
L28:
  mov    %ebx,%r8d
  mov    %ebx,%ecx
  mov    %rbp,%rdx
  mov    $0xb,%esi
  mov    $0xa,%edi
  call   <make_pivit_notzero@plt>
  mov    %ebx,%r8d
  mov    %ebx,%ecx
  mov    %rbp,%rdx
  mov    $0xb,%esi
  mov    $0xa,%edi
  add    $0x1,%ebx
  call   <wipe_below@plt>
  cmp    $0xa,%ebx
  jne    L28
  mov    %rbp,%rdx
  mov    $0xb,%esi
  mov    $0xa,%edi
  mov    $0x9,%ebx
  call   <pirnt_matrix@plt>
  lea    D328(%rip),%rdi
  call   <puts@plt>
  nopl   0x0(%rax)
L27:
  mov    %ebx,%r8d
  mov    %ebx,%ecx
  mov    %rbp,%rdx
  mov    $0xb,%esi
  mov    $0xa,%edi
  call   <wipe_up@plt>
  sub    $0x1,%ebx
  jae    L27
  mov    %rbp,%rdx
  mov    $0xb,%esi
  mov    $0xa,%edi
  call   <pirnt_matrix@plt>
  lea    D61(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  lea    0x3c0(%rsp),%r13
  lea    D240(%rip),%r12
  xchg   %ax,%ax
L22:
  movsd  (%rbx),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  add    $0x58,%rbx
  divsd  0x0(%rbp),%xmm0
  call   <printf@plt>
  add    $0x60,%rbp
  cmp    %rbx,%r13
  jne    L22
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x378(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L24
  add    $0x388,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L24:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D486
datatype: f64[2]
name: disassemble_data
arguments: tag: D43
datatype: f64[2]
name: disassemble_data
arguments: tag: D49
datatype: f64[2]
name: disassemble_data
arguments: tag: D164
datatype: f64[2]
name: disassemble_data
arguments: tag: D280
datatype: f64[2]
name: disassemble_data
arguments: tag: D459
datatype: f64[2]
name: disassemble_data
arguments: tag: D356
datatype: f64[2]
name: disassemble_data
arguments: tag: D20
datatype: f64[2]
name: disassemble_data
arguments: tag: D145
datatype: f64[2]
name: disassemble_data
arguments: tag: D474
datatype: f64[2]
name: disassemble_data
arguments: tag: D239
datatype: f64[2]
name: disassemble_data
arguments: tag: D359
datatype: f64[2]
name: disassemble_data
arguments: tag: D455
datatype: f64[2]
name: disassemble_data
arguments: tag: D388
datatype: f64[2]
name: disassemble_data
arguments: tag: D500
datatype: f64[2]
name: disassemble_data
arguments: tag: D363
datatype: f64[2]
name: disassemble_data
arguments: tag: D562
datatype: f64[2]
name: disassemble_data
arguments: tag: D349
datatype: f64[2]
name: disassemble_data
arguments: tag: D565
datatype: f64[2]
name: disassemble_data
arguments: tag: D51
datatype: f64[2]
name: disassemble_data
arguments: tag: D390
datatype: f64[2]
name: disassemble_data
arguments: tag: D2
datatype: f64[2]
name: disassemble_data
arguments: tag: D242
datatype: f64[2]
name: disassemble_data
arguments: tag: D288
datatype: f64[2]
name: disassemble_data
arguments: tag: D346
datatype: f64[2]
name: disassemble_data
arguments: tag: D247
datatype: f64[2]
name: disassemble_data
arguments: tag: D0
datatype: f64[2]
name: disassemble_data
arguments: tag: D3
datatype: f64[2]
name: disassemble_data
arguments: tag: D439
datatype: f64[2]
name: disassemble_data
arguments: tag: D432
datatype: f64[2]
name: disassemble_data
arguments: tag: D442
datatype: f64[2]
name: disassemble_data
arguments: tag: D303
datatype: f64[2]
name: disassemble_data
arguments: tag: D217
datatype: f64[2]
name: disassemble_data
arguments: tag: D266
datatype: f64[2]
name: disassemble_data
arguments: tag: D424
datatype: f64[2]
name: disassemble_data
arguments: tag: D60
datatype: f64[2]
name: disassemble_data
arguments: tag: D144
datatype: f64[2]
name: disassemble_data
arguments: tag: D82
datatype: f64[2]
name: disassemble_data
arguments: tag: D509
datatype: f64[2]
name: disassemble_data
arguments: tag: D460
datatype: f64[2]
name: disassemble_data
arguments: tag: D287
datatype: f64[2]
name: disassemble_data
arguments: tag: D68
datatype: f64[2]
name: disassemble_data
arguments: tag: D355
datatype: f64[2]
name: disassemble_data
arguments: tag: D207
datatype: f64[2]
name: disassemble_data
arguments: tag: D477
datatype: f64[2]
name: disassemble_data
arguments: tag: D4
datatype: f64[2]
name: disassemble_data
arguments: tag: D454
datatype: f64[2]
name: disassemble_data
arguments: tag: D373
datatype: f64[2]
name: disassemble_data
arguments: tag: D118
datatype: f64[2]
name: disassemble_data
arguments: tag: D275
datatype: f64[2]
name: disassemble_data
arguments: tag: D314
datatype: f64[2]
name: disassemble_data
arguments: tag: D430
datatype: f64[2]
name: disassemble_data
arguments: tag: D193
datatype: f64[2]
name: disassemble_data
arguments: tag: D168
datatype: f64[2]
name: disassemble_data
arguments: tag: D6
datatype: f64[2]
name: disassemble_data
arguments: tag: D188
datatype: string
name: disassemble_data
arguments: tag: D328
datatype: string
name: disassemble_data
arguments: tag: D61
datatype: string
name: disassemble_data
arguments: tag: D240
datatype: string

tool: {"D486": [0.638796,0.73651]}

tool: {"D43": [0.827915,0.714243]}

tool: {"D49": [0.580313,0.502711]}

tool: {"D164": [0.320619,0.381693]}

tool: {"D280": [0.829783,0.090271]}

tool: {"D459": [0.368936,0.086381]}

tool: {"D356": [0.012368,0.926026]}

tool: {"D20": [0.685283,0.442655]}

tool: {"D145": [0.771235,0.161726]}

tool: {"D474": [0.373213,0.314419]}

tool: {"D239": [0.017243,0.651629]}

tool: {"D359": [0.230404,0.583643]}

tool: {"D455": [0.539237,0.362877]}

tool: {"D388": [0.574665,0.587253]}

tool: {"D500": [0.052889,0.797725]}

tool: {"D363": [0.540768,0.231177]}

tool: {"D562": [0.072565,0.321209]}

tool: {"D349": [0.695746,0.46933]}

tool: {"D565": [0.033947,0.543901]}

tool: {"D51": [0.688743,0.981675]}

tool: {"D390": [0.360366,0.065075]}

tool: {"D2": [0.064145,0.12502]}

tool: {"D242": [0.409384,0.006006]}

tool: {"D288": [0.511788,0.898087]}

tool: {"D346": [0.630414,0.134535]}

tool: {"D247": [0.695637,0.556015]}

tool: {"D0": [0.267766,0.504105]}

tool: {"D3": [0.1776,0.106553]}

tool: {"D439": [0.521463,0.941638]}

tool: {"D432": [0.001127,0.889229]}

tool: {"D442": [0.985234,0.710775]}

tool: {"D303": [0.40803,0.355768]}

tool: {"D217": [0.233783,0.299796]}

tool: {"D266": [0.716173,0.837311]}

tool: {"D424": [0.067652,0.918376]}

tool: {"D60": [0.541687,0.839058]}

tool: {"D144": [0.234658,0.968085]}

tool: {"D82": [0.053723,0.984997]}

tool: {"D509": [0.822566,0.834031]}

tool: {"D460": [0.057627,0.16239]}

tool: {"D287": [0.344131,0.976396]}

tool: {"D68": [0.034571,0.785434]}

tool: {"D355": [0.69781,0.443574]}

tool: {"D207": [0.605635,0.687749]}

tool: {"D477": [0.706559,0.381556]}

tool: {"D4": [0.773771,0.226483]}

tool: {"D454": [0.39238,0.071833]}

tool: {"D373": [0.798492,0.754875]}

tool: {"D118": [0.561998,0.478654]}

tool: {"D275": [0.946997,0.74468]}

tool: {"D314": [0.519814,0.721342]}

tool: {"D430": [0.365413,0.330053]}

tool: {"D193": [0.084206,0.169013]}

tool: {"D168": [0.143299,0.970202]}

tool: {"D6": [0.799632,0.731359]}

tool: D188: ==========turn into a upper triangular matrix============

tool: D328: ==========echelon_form============

tool: D61: ==========solution============

tool: D240: %10lf, 

assistant: ```c
int main(int argc, char const *argv[]) {
  double a[10][11 - 1] = {0.638796, 0.736510, 0.827915, 0.714243, 0.580313, 0.502711, 0.320619, 0.381693, 0.829783, 0.090271, 0.086381, 0.012368, 0.926026, 0.685283, 0.442655, 0.771235, 0.161726, 0.373213, 0.314419, 0.017243, 0.230404, 0.583643, 0.539237, 0.362877, 0.574665, 0.587253, 0.052889, 0.797725, 0.540768, 0.231177, 0.321209, 0.695746, 0.469330, 0.033947, 0.543901, 0.688743, 0.981675, 0.360366, 0.065075, 0.064145, 0.409384, 0.006006, 0.511788, 0.898087, 0.630414, 0.134535, 0.695637, 0.556015, 0.267766, 0.504105, 0.106553, 0.521463, 0.941638, 0.001127, 0.889229, 0.985234, 0.710775, 0.408030, 0.355768, 0.233783, 0.716173, 0.837311, 0.067652, 0.918376, 0.541687, 0.839058, 0.234658, 0.968085, 0.053723, 0.984997, 0.834031, 0.057627, 0.162390, 0.344131, 0.976396, 0.034571, 0.785434, 0.697810, 0.443574, 0.605635, 0.706559, 0.381556, 0.773771, 0.226483, 0.392380, 0.071833, 0.798492, 0.754875, 0.561998, 0.478654, 0.744680, 0.519814, 0.721342, 0.365413, 0.330053, 0.084206, 0.169013, 0.143299, 0.970202, 0.799632};
  double b[10] = {0.368936, 0.651629, 0.072565, 0.125020, 0.177600, 0.299796, 0.822566, 0.687749, 0.946997, 0.731359};
  double x[10] = {2.496575, -0.639090, 1.453365, -0.661451, -0.029772, 0.233489, -1.001369, 0.120202, -1.591228, 0.104728};
  double matrix[10][11];
  for (int i = 0; i < 10; ++i) {
    for (int j = 0; j < 11; ++j) {
      matrix[i][j] = j != 11 - 1 ? a[i][j] : b[i];
    }
  }
  pirnt_matrix(10, 11, matrix);
  printf("==========turn into a upper triangular matrix============\n");
  for (int i = 0; i < 10; ++i) {
    make_pivit_notzero(10, 11, matrix, i, i);
    wipe_below(10, 11, matrix, i, i);
  }
  pirnt_matrix(10, 11, matrix);
  printf("==========echelon_form============\n");
  double solution[10];
  for (int i = 10 - 1; i >= 0; --i) {
    wipe_up(10, 11, matrix, i, i);
  }
  pirnt_matrix(10, 11, matrix);
  printf("==========solution============\n");
  for (int i = 0; i < 10; ++i) {
    solution[i] = matrix[i][11 - 1] / matrix[i][i];
    printf("%10lf, ", solution[i]);
  }
  printf("\n");
  return 0;
}
```