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

```asm
<aan_ecuacion_calor_metodo_explicito_canal>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %edx,-0x34(%rbp)
  mov    %ecx,-0x38(%rbp)
  movss  %xmm0,-0x3c(%rbp)
  mov    $0x18,%edi
  call   <malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    $0x24,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,(%rax)
  movl   $0x0,-0xc(%rbp)
  jmp    L556
L641:
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0xc(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    -0x8(%rbp),%rax
  add    %rsi,%rax
  add    %rcx,%rdx
  mov    %rdx,(%rax)
  addl   $0x1,-0xc(%rbp)
L556:
  cmpl   $0x2,-0xc(%rbp)
  jle    L641
  movl   $0x0,-0x18(%rbp)
  jmp    L511
L413:
  movl   $0x0,-0x1c(%rbp)
  jmp    L664
L168:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L283
  cmpl   $0x0,-0x18(%rbp)
  jne    L283
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  mov    -0x28(%rbp),%rdx
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  lea    0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,(%rdx)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  lea    0x8(%rax),%rdx
  mov    -0x28(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,(%rdx)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  mov    -0x28(%rbp),%rdx
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x1,-0x14(%rbp)
  jmp    L81
L375:
  movl   $0x1,-0x10(%rbp)
  jmp    L431
L94:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L431:
  cmpl   $0x2,-0x10(%rbp)
  jle    L94
  addl   $0x1,-0x14(%rbp)
L81:
  cmpl   $0x2,-0x14(%rbp)
  jle    L375
  jmp    L234
L283:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1c(%rbp)
  jne    L649
  cmpl   $0x0,-0x18(%rbp)
  jne    L649
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  add    %eax,%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x1,-0x14(%rbp)
  jmp    L217
L296:
  movl   $0x0,-0x10(%rbp)
  jmp    L211
L493:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L211:
  cmpl   $0x1,-0x10(%rbp)
  jle    L493
  addl   $0x1,-0x14(%rbp)
L217:
  cmpl   $0x2,-0x14(%rbp)
  jle    L296
  jmp    L234
L649:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L366
  mov    -0x38(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x18(%rbp)
  jne    L366
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  sub    $0x2,%eax
  imul   -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x0,-0x14(%rbp)
  jmp    L477
L241:
  movl   $0x1,-0x10(%rbp)
  jmp    L525
L645:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L525:
  cmpl   $0x2,-0x10(%rbp)
  jle    L645
  addl   $0x1,-0x14(%rbp)
L477:
  cmpl   $0x1,-0x14(%rbp)
  jle    L241
  jmp    L234
L366:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1c(%rbp)
  jne    L135
  mov    -0x38(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x18(%rbp)
  jne    L135
  mov    -0x34(%rbp),%eax
  imul   -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x38(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x0,-0x14(%rbp)
  jmp    L319
L205:
  movl   $0x0,-0x10(%rbp)
  jmp    L3
L306:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L3:
  cmpl   $0x1,-0x10(%rbp)
  jle    L306
  addl   $0x1,-0x14(%rbp)
L319:
  cmpl   $0x1,-0x14(%rbp)
  jle    L205
  jmp    L234
L135:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L654
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x0,-0x14(%rbp)
  jmp    L77
L271:
  movl   $0x1,-0x10(%rbp)
  jmp    L289
L387:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L289:
  cmpl   $0x2,-0x10(%rbp)
  jle    L387
  addl   $0x1,-0x14(%rbp)
L77:
  cmpl   $0x2,-0x14(%rbp)
  jle    L271
  jmp    L234
L654:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1c(%rbp)
  jne    L508
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x0,-0x14(%rbp)
  jmp    L139
L585:
  movl   $0x0,-0x10(%rbp)
  jmp    L158
L225:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L158:
  cmpl   $0x1,-0x10(%rbp)
  jle    L225
  addl   $0x1,-0x14(%rbp)
L139:
  cmpl   $0x2,-0x14(%rbp)
  jle    L585
  jmp    L234
L508:
  cmpl   $0x0,-0x18(%rbp)
  jne    L201
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x1,-0x14(%rbp)
  jmp    L125
L137:
  movl   $0x0,-0x10(%rbp)
  jmp    L240
L87:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L240:
  cmpl   $0x2,-0x10(%rbp)
  jle    L87
  addl   $0x1,-0x14(%rbp)
L125:
  cmpl   $0x2,-0x14(%rbp)
  jle    L137
  jmp    L234
L201:
  mov    -0x38(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x18(%rbp)
  jne    L467
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  movl   $0x0,-0x14(%rbp)
  jmp    L552
L544:
  movl   $0x0,-0x10(%rbp)
  jmp    L614
L226:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L614:
  cmpl   $0x2,-0x10(%rbp)
  jle    L226
  addl   $0x1,-0x14(%rbp)
L552:
  cmpl   $0x1,-0x14(%rbp)
  jle    L544
  jmp    L234
L467:
  movl   $0x0,-0x14(%rbp)
  jmp    L367
L618:
  movl   $0x0,-0x10(%rbp)
  jmp    L209
L236:
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  imul   -0x34(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%eax
  add    %ecx,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x10(%rbp)
L209:
  cmpl   $0x2,-0x10(%rbp)
  jle    L236
  addl   $0x1,-0x14(%rbp)
L367:
  cmpl   $0x2,-0x14(%rbp)
  jle    L618
L234:
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  mov    -0x34(%rbp),%edx
  mov    %edx,%ecx
  imul   -0x18(%rbp),%ecx
  mov    -0x1c(%rbp),%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x30(%rbp),%rdx
  add    %rcx,%rdx
  movss  0x4(%rax),%xmm0
  movss  %xmm0,(%rdx)
  movl   $0x0,-0x14(%rbp)
  jmp    L24
L330:
  movl   $0x0,-0x10(%rbp)
  jmp    L282
L248:
  cmpl   $0x1,-0x10(%rbp)
  jne    L496
  cmpl   $0x1,-0x14(%rbp)
  jne    L496
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x3c(%rbp),%xmm0
  movsd  D15(%rip),%xmm3
  movapd %xmm0,%xmm2
  divsd  %xmm3,%xmm2
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  movsd  D10(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  jmp    L584
L496:
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x3c(%rbp),%xmm0
  movsd  D15(%rip),%xmm3
  movapd %xmm0,%xmm2
  divsd  %xmm3,%xmm2
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x34(%rbp),%eax
  imul   -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
L584:
  addl   $0x1,-0x10(%rbp)
L282:
  cmpl   $0x2,-0x10(%rbp)
  jle    L248
  addl   $0x1,-0x14(%rbp)
L24:
  cmpl   $0x2,-0x14(%rbp)
  jle    L330
  addl   $0x1,-0x1c(%rbp)
L664:
  mov    -0x1c(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jl     L168
  addl   $0x1,-0x18(%rbp)
L511:
  mov    -0x18(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jl     L413
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D15
datatype: f64
name: extract_symbolic_data
arguments: data_tag: D10
datatype: byte[8]

tool: D15: 3

tool: {"D10": [0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xc0]}

assistant: ```c
void aan_ecuacion_calor_metodo_explicito_canal(float *canal_input, float *canal_output, int width, int height, float dt) {
  int i, j, k, l;
  float **area;
  {
    int ml;
    area = (float **)malloc(sizeof(float *) * (3));
    area[0] = (float *)malloc(sizeof(float) * (3) * (3));
    for (ml = 0; ml < (3); ml++)
      area[ml] = &(area[0][ml * (3)]);
  };
  for (j = 0; j < height; j++) {
    for (i = 0; i < width; i++) {
      if (i == 0 && j == 0) {
        area[0][0] = canal_input[0];
        area[0][1] = canal_input[0];
        area[0][2] = canal_input[1];
        area[1][0] = canal_input[0];
        area[2][0] = canal_input[width];
        for (k = 1; k < 3; k++)
          for (l = 1; l < 3; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (i == (width - 1) && j == 0) {
        area[0][2] = canal_input[width - 1];
        area[0][1] = canal_input[width - 1];
        area[0][0] = canal_input[width - 2];
        area[1][2] = canal_input[width - 1];
        area[2][2] = canal_input[width * 2 - 1];
        for (k = 1; k < 3; k++)
          for (l = 0; l < 2; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (i == 0 && j == (height - 1)) {
        area[0][2] = canal_input[width * (j - 1)];
        area[0][1] = canal_input[width * (j - 1)];
        area[1][2] = canal_input[width * (j - 1)];
        area[0][0] = canal_input[width * (j - 2)];
        area[2][2] = canal_input[(width * (j - 1)) + 1];
        for (k = 0; k < 2; k++)
          for (l = 1; l < 3; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (i == (width - 1) && j == (height - 1)) {
        area[2][2] = canal_input[width * height - 1];
        area[1][2] = canal_input[width * height - 1];
        area[0][2] = canal_input[width * (height - 1) - 1];
        area[2][1] = canal_input[width * height - 1];
        area[2][0] = canal_input[width * height - 2];
        for (k = 0; k < 2; k++)
          for (l = 0; l < 2; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (i == 0) {
        area[0][0] = canal_input[(width * (j - 1 + k)) + i];
        area[1][0] = canal_input[(width * (j - 1 + k)) + i];
        area[2][0] = canal_input[(width * (j - 1 + k)) + i];
        for (k = 0; k < 3; k++)
          for (l = 1; l < 3; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (i == (width - 1)) {
        area[0][2] = canal_input[(width * (j - 1 + 0)) + i];
        area[1][2] = canal_input[(width * (j - 1 + 1)) + i];
        area[2][2] = canal_input[(width * (j - 1 + 2)) + i];
        for (k = 0; k < 3; k++)
          for (l = 0; l < 2; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (j == 0) {
        area[0][0] = canal_input[(width * j) + (i - 1 + 0)];
        area[0][1] = canal_input[(width * j) + (i - 1 + 1)];
        area[0][2] = canal_input[(width * j) + (i - 1 + 2)];
        for (k = 1; k < 3; k++)
          for (l = 0; l < 3; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else if (j == (height - 1)) {
        area[2][0] = canal_input[(width * j) + (i - 1 + 0)];
        area[2][1] = canal_input[(width * j) + (i - 1 + 1)];
        area[2][2] = canal_input[(width * j) + (i - 1 + 2)];
        for (k = 0; k < 2; k++)
          for (l = 0; l < 3; l++)
            area[k][l] = canal_input[(width * (j - 1 + k)) + (i - 1 + l)];
      } else {
        for (k = 0; k < 3; k++)
          for (l = 0; l < 3; l++)
            area[k][l] = canal_input[width * (j - 1 + k) + (i - 1 + l)];
      }
      canal_output[width * j + i] = area[1][1];
      for (k = 0; k < 3; k++) {
        for (l = 0; l < 3; l++) {
          if (l == 1 && k == 1)
            canal_output[width * j + i] = canal_output[width * j + i] + ((dt / 3.0) * (-8.0 * area[k][l]));
          else
            canal_output[width * j + i] = canal_output[width * j + i] + ((dt / 3.0) * area[k][l]);
        }
      }
    }
  }
  {
    free(area[0]);
    free(area);
  };
}
```