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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x248,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  mov    %rsp,%rax
  cmp    %rax,%rsp
  je     L354
L392:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L392
L354:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,%r11
  mov    %rsp,%rax
L419:
  cmp    %rax,%rsp
  je     L391
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L419
L391:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,%r10
  mov    %rsp,%rax
L748:
  cmp    %rax,%rsp
  je     L243
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L748
L243:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x218(%rbp)
  mov    %rsp,%rax
L30:
  cmp    %rax,%rsp
  je     L445
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L30
L445:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x220(%rbp)
  mov    %rsp,%rax
L315:
  cmp    %rax,%rsp
  je     L386
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L315
L386:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,%r9
  mov    %rsp,%rax
L669:
  cmp    %rax,%rsp
  je     L250
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L669
L250:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,%r15
  mov    %rsp,%rax
L769:
  cmp    %rax,%rsp
  je     L143
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L769
L143:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x228(%rbp)
  mov    %rsp,%rax
L140:
  cmp    %rax,%rsp
  je     L317
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L140
L317:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x230(%rbp)
  mov    %rsp,%rax
L619:
  cmp    %rax,%rsp
  je     L496
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L619
L496:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x1c0(%rbp)
  mov    %rsp,%rax
L513:
  cmp    %rax,%rsp
  je     L585
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L513
L585:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x1c8(%rbp)
  mov    %rsp,%rax
L561:
  cmp    %rax,%rsp
  je     L109
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L561
L109:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x1d0(%rbp)
  mov    %rsp,%rax
L152:
  cmp    %rax,%rsp
  je     L576
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L152
L576:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x1d8(%rbp)
  mov    %rsp,%rax
L489:
  cmp    %rax,%rsp
  je     L289
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L489
L289:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x158(%rbp)
  mov    %rsp,%rax
L810:
  cmp    %rax,%rsp
  je     L531
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L810
L531:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x160(%rbp)
  mov    %rsp,%rax
L148:
  cmp    %rax,%rsp
  je     L439
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L148
L439:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  mov    %rsp,-0x168(%rbp)
  mov    %rsp,%rax
L409:
  cmp    %rax,%rsp
  je     L209
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L409
L209:
  sub    $0xa20,%rsp
  orq    $0x0,0xa18(%rsp)
  movsd  D3(%rip),%xmm0
  mov    $0xa28,%edx
  mov    %rsp,-0x170(%rbp)
  nopl   (%rax)
L357:
  lea    -0x990(%rdx),%rax
  nop
L319:
  movsd  %xmm0,(%r9,%rax,1)
  movsd  %xmm0,(%r15,%rax,1)
  movsd  %xmm0,(%r11,%rax,1)
  movsd  %xmm0,(%r10,%rax,1)
  add    $0x90,%rax
  cmp    %rax,%rdx
  jne    L319
  add    $0x8,%rdx
  cmp    $0xab0,%rdx
  jne    L357
  lea    0x98(%r9),%rax
  pxor   %xmm14,%xmm14
  movl   $0x227,-0x178(%rbp)
  lea    -0x100(%rbp),%rsi
  mov    %rax,-0x258(%rbp)
  mov    %r15,%r13
  mov    %rsi,%r8
  mov    -0x1c0(%rbp),%rax
  movsd  %xmm14,-0x188(%rbp)
  lea    -0x130(%rbp),%r14
  add    $0x98,%rax
  mov    %rax,-0x1a0(%rbp)
  lea    0x98(%r15),%rax
  mov    %r11,%r15
  mov    %rax,-0x198(%rbp)
  mov    -0x1c8(%rbp),%rax
  add    $0x98,%rax
  mov    %rax,-0x1a8(%rbp)
  lea    0x98(%r11),%rax
  mov    %r10,%r11
  mov    %rax,-0x248(%rbp)
  mov    -0x1d0(%rbp),%rax
  add    $0x98,%rax
  mov    %rax,-0x238(%rbp)
  lea    0x98(%r10),%rax
  mov    %r9,%r10
  mov    %rax,-0x250(%rbp)
  mov    -0x1d8(%rbp),%rax
  add    $0x98,%rax
  mov    %rax,-0x240(%rbp)
  lea    -0xd0(%rbp),%rax
  mov    %rax,-0x1b0(%rbp)
L558:
  mov    -0x1b0(%rbp),%r9
  mov    %r8,%rax
  mov    %r10,%r8
  mov    %r11,%r10
  movq   $0x0,-0x140(%rbp)
  movq   $0x1,-0x138(%rbp)
  mov    %r9,%r11
  mov    %rax,%r9
  movsd  %xmm14,-0x190(%rbp)
L435:
  mov    -0x138(%rbp),%rdi
  pxor   %xmm0,%xmm0
  mov    $0x1,%r12d
  mov    %edi,%eax
  sub    $0x1,%eax
  cvtsi2sd %eax,%xmm0
  mulsd  D147(%rip),%xmm0
  mov    -0x140(%rbp),%rax
  subsd  D39(%rip),%xmm0
  lea    0x1b8(%rax),%rsi
  mov    %rax,-0x150(%rbp)
  lea    0x98(%rax),%rbx
  lea    0x6(%rdi),%eax
  mov    %rsi,-0x148(%rbp)
  movapd %xmm0,%xmm5
  mov    %eax,-0x174(%rbp)
  movapd %xmm0,%xmm12
  mulsd  %xmm0,%xmm5
  movsd  %xmm0,0x8(%r11)
  movsd  %xmm5,-0x180(%rbp)
L535:
  lea    -0x1(%r12),%eax
  pxor   %xmm0,%xmm0
  mov    %r12d,%edx
  cvtsi2sd %eax,%xmm0
  mulsd  D147(%rip),%xmm0
  subsd  D39(%rip),%xmm0
  movapd %xmm0,%xmm2
  movapd %xmm0,%xmm10
  mulsd  %xmm0,%xmm2
  addsd  -0x180(%rbp),%xmm2
  ucomisd %xmm2,%xmm14
  ja     L762
  movapd %xmm2,%xmm11
  sqrtsd %xmm11,%xmm11
L492:
  ucomisd %xmm14,%xmm11
  jp     L601
  je     L806
L601:
  movapd %xmm12,%xmm7
  movapd %xmm10,%xmm0
  divsd  %xmm11,%xmm7
  divsd  %xmm11,%xmm0
L622:
  movsd  (%r10,%rbx,1),%xmm5
  movsd  D69(%rip),%xmm1
  movapd %xmm7,%xmm4
  lea    0x420(%rbx),%rsi
  movsd  (%r15,%rbx,1),%xmm13
  mov    -0x218(%rbp),%rax
  mulsd  %xmm14,%xmm4
  mov    %rsi,-0x1e0(%rbp)
  mulsd  %xmm2,%xmm1
  movsd  (%r8,%rbx,1),%xmm8
  lea    0x6(%rdx),%esi
  movsd  0x0(%r13,%rbx,1),%xmm9
  mulsd  D48(%rip),%xmm2
  mov    %esi,-0x1b8(%rbp)
  mov    $0x90,%edi
  movsd  %xmm8,-0x260(%rbp)
  movsd  %xmm5,-0x1f0(%rbp)
  movsd  %xmm0,-0x268(%rbp)
  movapd %xmm1,%xmm3
  mulsd  %xmm5,%xmm1
  mulsd  %xmm13,%xmm3
  addsd  %xmm13,%xmm1
  addsd  %xmm14,%xmm3
  addsd  %xmm14,%xmm1
  movsd  %xmm3,(%rax,%rbx,1)
  mov    -0x220(%rbp),%rax
  movsd  %xmm3,-0x1e8(%rbp)
  movapd %xmm8,%xmm3
  movsd  %xmm1,(%rax,%rbx,1)
  mulsd  %xmm0,%xmm3
  mov    -0x228(%rbp),%rax
  movsd  %xmm1,-0x1f8(%rbp)
  movapd %xmm9,%xmm1
  mulsd  %xmm7,%xmm1
  subsd  %xmm1,%xmm3
  movapd %xmm7,%xmm1
  addsd  %xmm7,%xmm1
  mulsd  %xmm3,%xmm4
  mulsd  %xmm0,%xmm1
  mulsd  %xmm8,%xmm1
  addsd  %xmm4,%xmm1
  movapd %xmm9,%xmm4
  mulsd  %xmm14,%xmm4
  addsd  %xmm4,%xmm1
  movapd %xmm8,%xmm4
  mulsd  %xmm2,%xmm4
  mulsd  %xmm9,%xmm2
  subsd  %xmm4,%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm14,%xmm4
  addsd  %xmm14,%xmm1
  movsd  %xmm1,(%rax,%rbx,1)
  mulsd  %xmm3,%xmm4
  movapd %xmm8,%xmm3
  mov    -0x230(%rbp),%rax
  movsd  %xmm1,-0x200(%rbp)
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm14,%xmm3
  mulsd  %xmm0,%xmm1
  mulsd  %xmm8,%xmm1
  subsd  %xmm8,%xmm1
  movapd %xmm9,%xmm8
  movapd %xmm13,%xmm9
  movapd %xmm7,%xmm13
  addsd  %xmm4,%xmm1
  movapd %xmm14,%xmm4
  subsd  %xmm3,%xmm1
  subsd  %xmm2,%xmm1
  movapd %xmm14,%xmm2
  addsd  %xmm14,%xmm1
  movsd  %xmm1,(%rax,%rbx,1)
  mov    -0x170(%rbp),%rax
  movsd  %xmm1,-0x208(%rbp)
  movq   $0x0,(%rax,%rbx,1)
  mov    -0x168(%rbp),%rax
  movq   $0x0,(%rax,%rbx,1)
  mov    -0x160(%rbp),%rax
  movq   $0x0,(%rax,%rbx,1)
  mov    -0x158(%rbp),%rax
  movq   $0x0,(%rax,%rbx,1)
  xor    %eax,%eax
L723:
  mov    -0x174(%rbp),%edx
  sub    %eax,%edx
  cmp    $0xd,%edx
  jbe    L81
L295:
  add    $0x1,%eax
  add    $0x90,%rdi
  cmp    $0xd,%eax
  jne    L723
  ucomisd %xmm14,%xmm11
  movapd %xmm13,%xmm7
  movsd  -0x268(%rbp),%xmm0
  movapd %xmm9,%xmm13
  movapd %xmm8,%xmm9
  movsd  -0x260(%rbp),%xmm8
  jp     L183
  je     L120
L183:
  mov    -0x158(%rbp),%rax
  mov    -0x160(%rbp),%rdi
  movsd  0xab0(%rax),%xmm3
  movsd  0xab0(%rdi),%xmm1
  mulsd  %xmm7,%xmm3
  mulsd  %xmm0,%xmm1
  addsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm7
  mulsd  %xmm1,%xmm0
  movsd  %xmm7,0xab0(%rax)
  movsd  %xmm0,0xab0(%rdi)
L120:
  mov    -0x158(%rbp),%rax
  movsd  -0x200(%rbp),%xmm1
  movsd  -0x208(%rbp),%xmm3
  movsd  -0x1e8(%rbp),%xmm6
  addsd  (%rax,%rbx,1),%xmm1
  mov    -0x160(%rbp),%rax
  mulsd  D163(%rip),%xmm1
  addsd  %xmm2,%xmm6
  movsd  -0x1f8(%rbp),%xmm5
  addsd  (%rax,%rbx,1),%xmm3
  mulsd  D163(%rip),%xmm3
  mulsd  D163(%rip),%xmm6
  addsd  %xmm4,%xmm5
  mov    -0x138(%rbp),%rax
  mulsd  D163(%rip),%xmm5
  addsd  -0x1f0(%rbp),%xmm5
  mov    %eax,%edx
  sub    $0x1,%rax
  addsd  %xmm8,%xmm1
  addsd  %xmm9,%xmm3
  addsd  %xmm13,%xmm6
  movapd %xmm5,%xmm4
  movsd  %xmm5,(%r10,%rbx,1)
  mulsd  %xmm5,%xmm4
  movapd %xmm1,%xmm2
  movsd  %xmm1,(%r8,%rbx,1)
  mulsd  %xmm1,%xmm2
  movapd %xmm3,%xmm0
  movsd  %xmm3,0x0(%r13,%rbx,1)
  mulsd  %xmm3,%xmm0
  movsd  %xmm6,(%r15,%rbx,1)
  addsd  %xmm0,%xmm2
  movapd %xmm6,%xmm0
  mulsd  %xmm6,%xmm0
  addsd  %xmm0,%xmm4
  movsd  D163(%rip),%xmm0
  mulsd  %xmm10,%xmm0
  addsd  %xmm12,%xmm0
  je     L426
  cmpl   $0xb,-0x138(%rbp)
  jg     L26
  movsd  (%r11),%xmm7
  mov    -0x150(%rbp),%rax
  movsd  %xmm1,-0x128(%rbp)
  mov    $0x1,%ecx
  movsd  0x90(%r8,%rbx,1),%xmm1
  movsd  %xmm12,-0xf8(%rbp)
  movsd  %xmm7,-0x100(%rbp)
  movsd  0x10(%r11),%xmm7
  movsd  %xmm1,-0x120(%rbp)
  movsd  %xmm7,-0xf0(%rbp)
  movsd  0x18(%r11),%xmm7
  movsd  %xmm7,-0xe8(%rbp)
  movsd  0x8(%r8,%rax,1),%xmm7
  mov    -0x148(%rbp),%rax
  movsd  (%r8,%rax,1),%xmm1
  movsd  %xmm7,-0x130(%rbp)
  movsd  %xmm1,-0x118(%rbp)
L68:
  mov    $0x1,%esi
L519:
  movsd  -0x8(%r9,%rsi,8),%xmm8
  mov    %rsi,%rax
  subsd  %xmm0,%xmm8
L341:
  movsd  (%r9,%rax,8),%xmm7
  movsd  (%r14,%rax,8),%xmm1
  movsd  -0x8(%r14,%rsi,8),%xmm9
  subsd  %xmm0,%xmm7
  mulsd  %xmm8,%xmm1
  mulsd  %xmm7,%xmm9
  subsd  %xmm9,%xmm1
  movapd %xmm8,%xmm9
  subsd  %xmm7,%xmm9
  divsd  %xmm9,%xmm1
  movsd  %xmm1,(%r14,%rax,8)
  add    $0x1,%rax
  cmp    $0x4,%eax
  jne    L341
  add    $0x1,%rsi
  cmp    $0x4,%rsi
  jne    L519
  movsd  -0x118(%rbp),%xmm1
  mov    -0x1c0(%rbp),%rax
  cmpq   $0x1,-0x138(%rbp)
  movsd  %xmm1,(%rax,%rbx,1)
  je     L760
  test   %cl,%cl
  je     L720
  movsd  (%r11),%xmm1
  mov    -0x150(%rbp),%rax
  movsd  %xmm12,-0xf8(%rbp)
  movsd  %xmm6,-0x128(%rbp)
  movsd  %xmm1,-0x100(%rbp)
  movsd  0x10(%r11),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  0x18(%r11),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x8(%r15,%rax,1),%xmm1
  mov    -0x148(%rbp),%rax
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x90(%r15,%rbx,1),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  (%r15,%rax,1),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L720:
  cmp    $0xc,%edx
  je     L631
  cmp    $0xd,%edx
  jne    L197
  movsd  -0x68(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0x70(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x80(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x750(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x6c0(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x630(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x5a0(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L197:
  mov    $0x1,%esi
L523:
  movsd  -0x8(%r9,%rsi,8),%xmm7
  mov    %rsi,%rax
  subsd  %xmm0,%xmm7
L655:
  movsd  (%r9,%rax,8),%xmm6
  movsd  (%r14,%rax,8),%xmm1
  movsd  -0x8(%r14,%rsi,8),%xmm8
  subsd  %xmm0,%xmm6
  mulsd  %xmm7,%xmm1
  mulsd  %xmm6,%xmm8
  subsd  %xmm8,%xmm1
  movapd %xmm7,%xmm8
  subsd  %xmm6,%xmm8
  divsd  %xmm8,%xmm1
  movsd  %xmm1,(%r14,%rax,8)
  add    $0x1,%rax
  cmp    $0x4,%eax
  jne    L655
  add    $0x1,%rsi
  cmp    $0x4,%rsi
  jne    L523
  movsd  -0x118(%rbp),%xmm1
  mov    -0x1d0(%rbp),%rax
  cmpq   $0x1,-0x138(%rbp)
  movsd  %xmm1,(%rax,%rbx,1)
  je     L502
  test   %cl,%cl
  je     L18
  movsd  (%r11),%xmm1
  mov    -0x150(%rbp),%rax
  movsd  %xmm12,-0xf8(%rbp)
  movsd  %xmm3,-0x128(%rbp)
  movsd  %xmm1,-0x100(%rbp)
  movsd  0x10(%r11),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  0x18(%r11),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x8(%r13,%rax,1),%xmm1
  mov    -0x148(%rbp),%rax
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x90(%r13,%rbx,1),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x0(%r13,%rax,1),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L18:
  cmp    $0xc,%edx
  je     L118
  cmp    $0xd,%edx
  jne    L157
  movsd  -0x68(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0x70(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x80(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x750(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x6c0(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x630(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x5a0(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L157:
  mov    $0x1,%esi
L37:
  movsd  -0x8(%r9,%rsi,8),%xmm6
  mov    %rsi,%rax
  subsd  %xmm0,%xmm6
L279:
  movsd  (%r9,%rax,8),%xmm3
  movsd  (%r14,%rax,8),%xmm1
  movsd  -0x8(%r14,%rsi,8),%xmm7
  subsd  %xmm0,%xmm3
  mulsd  %xmm6,%xmm1
  mulsd  %xmm3,%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm6,%xmm7
  subsd  %xmm3,%xmm7
  divsd  %xmm7,%xmm1
  movsd  %xmm1,(%r14,%rax,8)
  add    $0x1,%rax
  cmp    $0x4,%eax
  jne    L279
  add    $0x1,%rsi
  cmp    $0x4,%rsi
  jne    L37
  movsd  -0x118(%rbp),%xmm1
  mov    -0x1c8(%rbp),%rax
  cmpq   $0x1,-0x138(%rbp)
  movsd  %xmm1,(%rax,%rbx,1)
  je     L572
  test   %cl,%cl
  je     L138
  movsd  (%r11),%xmm1
  mov    -0x150(%rbp),%rax
  movsd  %xmm12,-0xf8(%rbp)
  movsd  %xmm5,-0x128(%rbp)
  movsd  %xmm1,-0x100(%rbp)
  movsd  0x10(%r11),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  0x18(%r11),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x8(%r10,%rax,1),%xmm1
  mov    -0x148(%rbp),%rax
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x90(%r10,%rbx,1),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  (%r10,%rax,1),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L138:
  cmp    $0xc,%edx
  je     L422
  cmp    $0xd,%edx
  jne    L714
  movsd  -0x68(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0x70(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x80(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x750(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x6c0(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x630(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x5a0(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
L714:
  mov    $0x1,%edx
L150:
  movsd  -0x8(%r9,%rdx,8),%xmm5
  mov    %rdx,%rax
  subsd  %xmm0,%xmm5
L732:
  movsd  (%r9,%rax,8),%xmm3
  movsd  (%r14,%rax,8),%xmm1
  movsd  -0x8(%r14,%rdx,8),%xmm6
  subsd  %xmm0,%xmm3
  mulsd  %xmm5,%xmm1
  mulsd  %xmm3,%xmm6
  subsd  %xmm6,%xmm1
  movapd %xmm5,%xmm6
  subsd  %xmm3,%xmm6
  divsd  %xmm6,%xmm1
  movsd  %xmm1,(%r14,%rax,8)
  add    $0x1,%rax
  cmp    $0x4,%eax
  jne    L732
  add    $0x1,%rdx
  cmp    $0x4,%rdx
  jne    L150
  addsd  %xmm4,%xmm2
  mulsd  D147(%rip),%xmm2
  movsd  -0x118(%rbp),%xmm0
  add    $0x1,%r12
  addsd  -0x190(%rbp),%xmm2
  mov    -0x1d8(%rbp),%rax
  addq   $0x8,-0x150(%rbp)
  movsd  %xmm0,(%rax,%rbx,1)
  add    $0x8,%rbx
  addq   $0x8,-0x148(%rbp)
  movsd  %xmm2,-0x190(%rbp)
  cmp    $0xe,%r12
  jne    L535
  addq   $0x90,-0x140(%rbp)
  mov    -0x140(%rbp),%rax
  add    $0x8,%r11
  addq   $0x1,-0x138(%rbp)
  cmp    $0x750,%rax
  jne    L435
  mov    %r10,%r11
  mov    -0x238(%rbp),%rsi
  xor    %eax,%eax
  mov    %r8,%r10
  mov    -0x240(%rbp),%rdi
  mov    %r9,%r8
  mov    -0x250(%rbp),%rbx
  mov    -0x248(%rbp),%r9
  mov    -0x258(%rbp),%r12
L752:
  mov    -0x1a0(%rbp),%rcx
  lea    (%r12,%rax,1),%rdx
  add    %rax,%rcx
  movdqu (%rcx),%xmm5
  movups %xmm5,(%rdx)
  movdqu 0x10(%rcx),%xmm5
  movups %xmm5,0x10(%rdx)
  movdqu 0x20(%rcx),%xmm6
  movups %xmm6,0x20(%rdx)
  movdqu 0x30(%rcx),%xmm5
  movups %xmm5,0x30(%rdx)
  movdqu 0x40(%rcx),%xmm6
  movups %xmm6,0x40(%rdx)
  movdqu 0x50(%rcx),%xmm5
  movups %xmm5,0x50(%rdx)
  mov    0x60(%rcx),%rcx
  mov    %rcx,0x60(%rdx)
  mov    -0x198(%rbp),%rcx
  lea    (%rcx,%rax,1),%rdx
  mov    -0x1a8(%rbp),%rcx
  add    %rax,%rcx
  movdqu (%rcx),%xmm2
  movups %xmm2,(%rdx)
  movdqu 0x10(%rcx),%xmm6
  movups %xmm6,0x10(%rdx)
  movdqu 0x20(%rcx),%xmm5
  movups %xmm5,0x20(%rdx)
  movdqu 0x30(%rcx),%xmm2
  movups %xmm2,0x30(%rdx)
  movdqu 0x40(%rcx),%xmm6
  movups %xmm6,0x40(%rdx)
  movdqu 0x50(%rcx),%xmm7
  movups %xmm7,0x50(%rdx)
  mov    0x60(%rcx),%rcx
  mov    %rcx,0x60(%rdx)
  lea    (%rsi,%rax,1),%rcx
  lea    (%r9,%rax,1),%rdx
  movdqu (%rcx),%xmm5
  movups %xmm5,(%rdx)
  movdqu 0x10(%rcx),%xmm2
  movups %xmm2,0x10(%rdx)
  movdqu 0x20(%rcx),%xmm6
  movups %xmm6,0x20(%rdx)
  movdqu 0x30(%rcx),%xmm7
  movups %xmm7,0x30(%rdx)
  movdqu 0x40(%rcx),%xmm5
  movups %xmm5,0x40(%rdx)
  movdqu 0x50(%rcx),%xmm2
  movups %xmm2,0x50(%rdx)
  mov    0x60(%rcx),%rcx
  mov    %rcx,0x60(%rdx)
  lea    (%rdi,%rax,1),%rcx
  lea    (%rbx,%rax,1),%rdx
  add    $0x90,%rax
  movdqu (%rcx),%xmm6
  movups %xmm6,(%rdx)
  movdqu 0x10(%rcx),%xmm7
  movups %xmm7,0x10(%rdx)
  movdqu 0x20(%rcx),%xmm4
  movups %xmm4,0x20(%rdx)
  movdqu 0x30(%rcx),%xmm5
  movups %xmm5,0x30(%rdx)
  movdqu 0x40(%rcx),%xmm2
  movups %xmm2,0x40(%rdx)
  movdqu 0x50(%rcx),%xmm6
  movups %xmm6,0x50(%rdx)
  mov    0x60(%rcx),%rcx
  mov    %rcx,0x60(%rdx)
  cmp    $0x750,%rax
  jne    L752
  movsd  -0x190(%rbp),%xmm0
  mov    %r11,-0x148(%rbp)
  mov    %r10,-0x140(%rbp)
  mov    %r8,-0x138(%rbp)
  call   <log@plt>
  lea    D4(%rip),%rdi
  mov    $0x2,%eax
  movapd %xmm0,%xmm1
  movsd  -0x188(%rbp),%xmm0
  call   <printf@plt>
  subl   $0x1,-0x178(%rbp)
  movsd  D163(%rip),%xmm4
  pxor   %xmm14,%xmm14
  addsd  -0x188(%rbp),%xmm4
  mov    -0x138(%rbp),%r8
  mov    -0x140(%rbp),%r10
  mov    -0x148(%rbp),%r11
  movsd  %xmm4,-0x188(%rbp)
  jne    L558
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L417
  lea    -0x28(%rbp),%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
L81:
  pxor   %xmm1,%xmm1
  mov    -0x168(%rbp),%rdx
  mov    %rdi,%rcx
  mov    -0x1e0(%rbp),%rsi
  cvtsi2sd %eax,%xmm1
  mulsd  D147(%rip),%xmm1
  mov    %r11,-0x270(%rbp)
  subsd  D39(%rip),%xmm1
  movsd  (%rdx,%rbx,1),%xmm7
  sub    %rdi,%rsi
  mov    -0x170(%rbp),%rdx
  movsd  %xmm1,-0x210(%rbp)
  movsd  (%rdx,%rbx,1),%xmm0
  xor    %edx,%edx
L122:
  mov    -0x1b8(%rbp),%r11d
  sub    %edx,%r11d
  cmp    $0xd,%r11d
  ja     L603
  movsd  (%r15,%rsi,1),%xmm5
  movsd  0x8(%r8,%rcx,1),%xmm2
  pxor   %xmm4,%xmm4
  movsd  0x8(%r13,%rcx,1),%xmm1
  cvtsi2sd %edx,%xmm4
  mulsd  D147(%rip),%xmm4
  mulsd  %xmm12,%xmm2
  subsd  D39(%rip),%xmm4
  movsd  -0x210(%rbp),%xmm6
  mulsd  %xmm10,%xmm1
  movsd  (%r15,%rsi,1),%xmm3
  mov    -0x158(%rbp),%r11
  mulsd  %xmm12,%xmm5
  mulsd  (%r15,%rsi,1),%xmm6
  mulsd  0x8(%r15,%rcx,1),%xmm3
  addsd  %xmm1,%xmm2
  movsd  (%r10,%rsi,1),%xmm1
  mulsd  %xmm10,%xmm1
  addsd  %xmm1,%xmm5
  movsd  (%r10,%rsi,1),%xmm1
  mulsd  %xmm4,%xmm1
  addsd  %xmm1,%xmm6
  movsd  (%r10,%rsi,1),%xmm1
  mulsd  0x8(%r10,%rcx,1),%xmm1
  addsd  %xmm1,%xmm3
  movsd  (%r8,%rsi,1),%xmm1
  mulsd  %xmm2,%xmm1
  movapd %xmm1,%xmm15
  movsd  0x8(%r15,%rcx,1),%xmm1
  mulsd  %xmm6,%xmm1
  mulsd  0x8(%r10,%rcx,1),%xmm6
  addsd  %xmm15,%xmm1
  movsd  -0x210(%rbp),%xmm15
  mulsd  %xmm3,%xmm15
  mulsd  %xmm4,%xmm3
  subsd  %xmm15,%xmm1
  addsd  (%r11,%rbx,1),%xmm1
  movsd  0x0(%r13,%rsi,1),%xmm15
  movsd  %xmm1,(%r11,%rbx,1)
  movapd %xmm15,%xmm1
  mov    -0x160(%rbp),%r11
  mulsd  %xmm2,%xmm1
  mulsd  %xmm5,%xmm15
  addsd  %xmm6,%xmm1
  subsd  %xmm3,%xmm1
  addsd  (%r11,%rbx,1),%xmm1
  movsd  (%r8,%rsi,1),%xmm3
  mulsd  %xmm5,%xmm3
  movsd  %xmm1,(%r11,%rbx,1)
  movsd  (%r15,%rsi,1),%xmm1
  mov    -0x168(%rbp),%r11
  mulsd  %xmm2,%xmm1
  mulsd  (%r10,%rsi,1),%xmm2
  subsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm7
  movapd %xmm2,%xmm1
  subsd  %xmm15,%xmm1
  movsd  %xmm7,(%r11,%rbx,1)
  mov    -0x170(%rbp),%r11
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%r11,%rbx,1)
L603:
  add    $0x1,%edx
  add    $0x8,%rcx
  sub    $0x8,%rsi
  cmp    $0xd,%edx
  jne    L122
  mov    -0x270(%rbp),%r11
  movapd %xmm7,%xmm2
  movapd %xmm0,%xmm4
  jmp    L295
L806:
  movapd %xmm14,%xmm0
  movapd %xmm14,%xmm7
  jmp    L622
L26:
  cmp    $0xc,%edx
  jne    L99
  movsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm7
  xor    %ecx,%ecx
  movsd  %xmm1,-0x100(%rbp)
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm7,-0xf8(%rbp)
  movsd  0x750(%r8,%r12,8),%xmm7
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x6c0(%r8,%r12,8),%xmm1
  movsd  %xmm7,-0x128(%rbp)
  movsd  %xmm1,-0x130(%rbp)
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x630(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L68
L422:
  movsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm3
  movsd  %xmm1,-0x100(%rbp)
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm3,-0xf8(%rbp)
  movsd  0x750(%r10,%r12,8),%xmm3
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x6c0(%r10,%r12,8),%xmm1
  movsd  %xmm3,-0x128(%rbp)
  movsd  %xmm1,-0x130(%rbp)
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x630(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L714
L572:
  movsd  -0xc8(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0xc0(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0xb8(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0xb0(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x90(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x120(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x1b0(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x240(%r10,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L714
L99:
  movsd  -0x68(%rbp),%xmm1
  xor    %ecx,%ecx
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0x70(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x80(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x750(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x6c0(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x630(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x5a0(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L68
L426:
  movsd  -0xc8(%rbp),%xmm1
  xor    %ecx,%ecx
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0xc0(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0xb8(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0xb0(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x90(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x120(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x1b0(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x240(%r8,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L68
L118:
  movsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm3
  movsd  %xmm1,-0x100(%rbp)
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm3,-0xf8(%rbp)
  movsd  0x750(%r13,%r12,8),%xmm3
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x6c0(%r13,%r12,8),%xmm1
  movsd  %xmm3,-0x128(%rbp)
  movsd  %xmm1,-0x130(%rbp)
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x630(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L157
L502:
  movsd  -0xc8(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0xc0(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0xb8(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0xb0(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x90(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x120(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x1b0(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x240(%r13,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L157
L631:
  movsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm6
  movsd  %xmm1,-0x100(%rbp)
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  %xmm6,-0xf8(%rbp)
  movsd  0x750(%r15,%r12,8),%xmm6
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x6c0(%r15,%r12,8),%xmm1
  movsd  %xmm6,-0x128(%rbp)
  movsd  %xmm1,-0x130(%rbp)
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x630(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L197
L760:
  movsd  -0xc8(%rbp),%xmm1
  movsd  %xmm1,-0x100(%rbp)
  movsd  -0xc0(%rbp),%xmm1
  movsd  %xmm1,-0xf8(%rbp)
  movsd  -0xb8(%rbp),%xmm1
  movsd  %xmm1,-0xf0(%rbp)
  movsd  -0xb0(%rbp),%xmm1
  movsd  %xmm1,-0xe8(%rbp)
  movsd  0x90(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x130(%rbp)
  movsd  0x120(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x128(%rbp)
  movsd  0x1b0(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x120(%rbp)
  movsd  0x240(%r15,%r12,8),%xmm1
  movsd  %xmm1,-0x118(%rbp)
  jmp    L197
L417:
  call   <__stack_chk_fail@plt>
L762:
  movsd  %xmm0,-0x1e0(%rbp)
  movapd %xmm2,%xmm0
  mov    %r9,-0x210(%rbp)
  mov    %r8,-0x208(%rbp)
  mov    %r10,-0x200(%rbp)
  mov    %r11,-0x1f8(%rbp)
  movsd  %xmm12,-0x1f0(%rbp)
  movsd  %xmm2,-0x1b8(%rbp)
  mov    %r12d,-0x1e8(%rbp)
  call   <sqrt@plt>
  mov    -0x210(%rbp),%r9
  mov    -0x208(%rbp),%r8
  pxor   %xmm14,%xmm14
  mov    -0x200(%rbp),%r10
  mov    -0x1f8(%rbp),%r11
  movapd %xmm0,%xmm11
  movsd  -0x1f0(%rbp),%xmm12
  mov    -0x1e8(%rbp),%edx
  movsd  -0x1e0(%rbp),%xmm10
  movsd  -0x1b8(%rbp),%xmm2
  jmp    L492
```

tool_calls: name: read_data
arguments: label: D3
type_guessed: byte[8]
name: read_data
arguments: label: D147
type_guessed: f32[2]
name: read_data
arguments: label: D39
type_guessed: f64
name: read_data
arguments: label: D69
type_guessed: byte[8]
name: read_data
arguments: label: D48
type_guessed: byte[8]
name: read_data
arguments: label: D163
type_guessed: byte[8]
name: read_data
arguments: label: D4
type_guessed: string

tool: {"D3": [0x03,0x95,0xf1,0xef,0x33,0x2e,0x3c,0x3f]}

tool: {"D147": [0.0,1.75]}

tool: D39: 3

tool: {"D69": [0x8a,0x86,0xf8,0xe3,0xd6,0xe5,0x7d,0xbf]}

tool: {"D48": [0xfc,0xa9,0xf1,0xd2,0x4d,0x62,0x50,0x3f]}

tool: {"D163": [0x7b,0x14,0xae,0x47,0xe1,0x7a,0x84,0x3f]}

tool: D4: %g %g


assistant: ```c
int main(void) {
  int iy, ix;
  int jy, jx;
  int ky, kx;
  double Ly = 3., Lx = 3.;
  double DQy, DQx, Q2, Q;
  double Qy, Qx, Ky, Kx, K2, K;
  int my = 6, mx = 6;
  int Ny, Ny1, Nx, Nx1;
  int i, k, N = 3;
  double f[5], g[5];
  double x[5], xx;
  Ny = 2 * my + 1;
  Ny1 = Ny + 5;
  Nx = 2 * mx + 1;
  Nx1 = Nx + 5;
  DQy = 2 * Ly / (Ny - 1);
  DQx = 2 * Lx / (Nx - 1);
  double Dt = .01, t;
  double bx[Nx1][Ny1], by[Nx1][Ny1], ex[Nx1][Ny1], ey[Nx1][Ny1], vx[Nx1][Ny1], vy[Nx1][Ny1], ax[Nx1][Ny1], ay[Nx1][Ny1];
  double qx[Nx1], Vx[Nx1][Ny1], Vy[Nx1][Ny1], Bx[Nx1][Ny1], By[Nx1][Ny1];
  double nx, ny, nxp, nyp;
  double lvx[Nx1][Ny1], lvy[Nx1][Ny1], lbx[Nx1][Ny1], lby[Nx1][Ny1], vn, Qb, Qpb, Qv, bb, nlv;
  double energy;
  double wc = 0;
  double nuk = 1 / 1000., num = 1 / 137., Pk, Pm;
  double v2, b2;
  for (iy = 1; iy <= Ny + 4; iy++)
    for (ix = 1; ix <= Nx + 4; ix++) {
      vx[ix][iy] = 4.3 * 10E-5;
      vy[ix][iy] = 4.3 * 10E-5;
      bx[ix][iy] = 4.3 * 10E-5;
      by[ix][iy] = 4.3 * 10E-5;
    }
  for (t = 0; t <= 5.5; t = t + Dt) {
    energy = 0.;
    Pk = nuk;
    Pm = 0.;
    for (ix = 1; ix <= Nx; ix++) {
      Qx = -Lx + (ix - 1) * DQx;
      qx[ix] = Qx;
      for (iy = 1; iy <= Ny; iy++) {
        Qy = -Ly + (iy - 1) * DQy;
        Q2 = Qx * Qx + Qy * Qy;
        Q = sqrt(Q2);
        if (Q != 0.) {
          nx = Qx / Q;
          ny = Qy / Q;
        } else {
          nx = 0;
          ny = 0;
        }
        ex[ix][iy] = ey[ix][iy] = ax[ix][iy] = ay[ix][iy] = 0;
        ex[ix][iy] += -num * Q2 * bx[ix][iy];
        ey[ix][iy] += +bx[ix][iy] - num * Q2 * by[ix][iy];
        ax[ix][iy] += 2 * nx * ny * vx[ix][iy] + 2 * wc * nx * (ny * vx[ix][iy] - nx * vy[ix][iy]) + 2 * wc * vy[ix][iy] - nuk * Q2 * vx[ix][iy];
        ay[ix][iy] += -vx[ix][iy] + 2 * ny * ny * vx[ix][iy] + 2 * wc * ny * (ny * vx[ix][iy] - nx * vy[ix][iy]) - 2 * wc * vx[ix][iy] - nuk * Q2 * vy[ix][iy];
        lvx[ix][iy] = lvy[ix][iy] = lbx[ix][iy] = lby[ix][iy] = 0;
        for (jx = 1; jx <= Nx; jx++) {
          Kx = -Lx + (jx - 1) * DQx;
          kx = ix - jx + mx + 1;
          if (kx < 0)
            goto jump;
          if (kx > Nx)
            goto jump;
          for (jy = 1; jy <= Ny; jy++) {
            Ky = -Ly + (jy - 1) * DQy;
            ky = iy - jy + my + 1;
            if (ky < 0)
              goto jump;
            if (ky > Ny)
              goto jump;
            vn = vx[jx][jy] * Qx + vy[jx][jy] * Qy;
            Qb = Qx * bx[kx][ky] + Qy * by[kx][ky];
            Qv = Qx * vx[jx][jy] + Qy * vy[jx][jy];
            Qpb = Kx * bx[kx][ky] + Ky * by[kx][ky];
            bb = bx[jx][jy] * bx[kx][ky] + by[jx][jy] * by[kx][ky];
            lvx[ix][iy] += vx[kx][ky] * vn + bx[jx][jy] * Qpb - Kx * bb;
            lvy[ix][iy] += vy[kx][ky] * vn + by[jx][jy] * Qpb - Ky * bb;
            lbx[ix][iy] += -vx[kx][ky] * Qb + bx[kx][ky] * Qv;
            lby[ix][iy] += -vy[kx][ky] * Qb + by[kx][ky] * Qv;
          jump:;
          }
        }
        if (Q != 0.) {
          nlv = nx * lvx[Nx1][Ny1] + ny * lvy[Nx1][Ny1];
          lvx[Nx1][Ny1] = nx * nlv;
          lvy[Nx1][Ny1] = ny * nlv;
        }
        vx[ix][iy] += (ax[ix][iy] + lvx[ix][iy]) * Dt;
        vy[ix][iy] += (ay[ix][iy] + lvy[ix][iy]) * Dt;
        bx[ix][iy] += (ex[ix][iy] + lbx[ix][iy]) * Dt;
        by[ix][iy] += (ey[ix][iy] + lby[ix][iy]) * Dt;
        v2 = vx[ix][iy] * vx[ix][iy] + vy[ix][iy] * vy[ix][iy];
        b2 = by[ix][iy] * by[ix][iy] + bx[ix][iy] * bx[ix][iy];
        xx = qx[ix] + Qy * Dt;
        if (ix == 1) {
          x[0] = qx[1];
          x[1] = qx[2];
          x[2] = qx[3];
          x[3] = qx[4];
          f[0] = vx[1][iy];
          f[1] = vx[2][iy];
          f[2] = vx[3][iy];
          f[3] = vx[4][iy];
        }
        if (ix > 1 && ix < Nx - 1) {
          x[0] = qx[ix - 1];
          x[1] = qx[ix];
          x[2] = qx[ix + 1];
          x[3] = qx[ix + 2];
          f[0] = vx[ix - 1][iy];
          f[1] = vx[ix][iy];
          f[2] = vx[ix + 1][iy];
          f[3] = vx[ix + 2][iy];
        }
        if (ix == Nx - 1) {
          x[0] = qx[Nx - 1];
          x[1] = qx[Nx];
          x[2] = qx[Nx - 1];
          x[3] = qx[Nx - 2];
          f[0] = vx[Nx - 1][iy];
          f[1] = vx[Nx][iy];
          f[2] = vx[Nx - 1][iy];
          f[3] = vx[Nx - 2][iy];
        }
        if (ix == Nx) {
          x[0] = qx[Nx];
          x[1] = qx[Nx - 1];
          x[2] = qx[Nx - 2];
          x[3] = qx[Nx - 3];
          f[0] = vx[Nx][iy];
          f[1] = vx[Nx - 1][iy];
          f[2] = vx[Nx - 2][iy];
          f[3] = vx[Nx - 3][iy];
        }
        for (k = 0; k < N; k++)
          for (i = k + 1; i <= N; i++) {
            f[i] = ((x[k] - xx) * f[i] - (x[i] - xx) * f[k]) / ((x[k] - xx) - (x[i] - xx));
          }
        Vx[ix][iy] = f[N];
        if (ix == 1) {
          x[0] = qx[1];
          x[1] = qx[2];
          x[2] = qx[3];
          x[3] = qx[4];
          f[0] = bx[1][iy];
          f[1] = bx[2][iy];
          f[2] = bx[3][iy];
          f[3] = bx[4][iy];
        }
        if (ix > 1 && ix < Nx - 1) {
          x[0] = qx[ix - 1];
          x[1] = qx[ix];
          x[2] = qx[ix + 1];
          x[3] = qx[ix + 2];
          f[0] = bx[ix - 1][iy];
          f[1] = bx[ix][iy];
          f[2] = bx[ix + 1][iy];
          f[3] = bx[ix + 2][iy];
        }
        if (ix == Nx - 1) {
          x[0] = qx[Nx - 1];
          x[1] = qx[Nx];
          x[2] = qx[Nx - 1];
          x[3] = qx[Nx - 2];
          f[0] = bx[Nx - 1][iy];
          f[1] = bx[Nx][iy];
          f[2] = bx[Nx - 1][iy];
          f[3] = bx[Nx - 2][iy];
        }
        if (ix == Nx) {
          x[0] = qx[Nx];
          x[1] = qx[Nx - 1];
          x[2] = qx[Nx - 2];
          x[3] = qx[Nx - 3];
          f[0] = bx[Nx][iy];
          f[1] = bx[Nx - 1][iy];
          f[2] = bx[Nx - 2][iy];
          f[3] = bx[Nx - 3][iy];
        }
        for (k = 0; k < N; k++)
          for (i = k + 1; i <= N; i++) {
            f[i] = ((x[k] - xx) * f[i] - (x[i] - xx) * f[k]) / ((x[k] - xx) - (x[i] - xx));
          }
        Bx[ix][iy] = f[N];
        if (ix == 1) {
          x[0] = qx[1];
          x[1] = qx[2];
          x[2] = qx[3];
          x[3] = qx[4];
          f[0] = vy[1][iy];
          f[1] = vy[2][iy];
          f[2] = vy[3][iy];
          f[3] = vy[4][iy];
        }
        if (ix > 1 && ix < Nx - 1) {
          x[0] = qx[ix - 1];
          x[1] = qx[ix];
          x[2] = qx[ix + 1];
          x[3] = qx[ix + 2];
          f[0] = vy[ix - 1][iy];
          f[1] = vy[ix][iy];
          f[2] = vy[ix + 1][iy];
          f[3] = vy[ix + 2][iy];
        }
        if (ix == Nx - 1) {
          x[0] = qx[Nx - 1];
          x[1] = qx[Nx];
          x[2] = qx[Nx - 1];
          x[3] = qx[Nx - 2];
          f[0] = vy[Nx - 1][iy];
          f[1] = vy[Nx][iy];
          f[2] = vy[Nx - 1][iy];
          f[3] = vy[Nx - 2][iy];
        }
        if (ix == Nx) {
          x[0] = qx[Nx];
          x[1] = qx[Nx - 1];
          x[2] = qx[Nx - 2];
          x[3] = qx[Nx - 3];
          f[0] = vy[Nx][iy];
          f[1] = vy[Nx - 1][iy];
          f[2] = vy[Nx - 2][iy];
          f[3] = vy[Nx - 3][iy];
        }
        for (k = 0; k < N; k++)
          for (i = k + 1; i <= N; i++) {
            f[i] = ((x[k] - xx) * f[i] - (x[i] - xx) * f[k]) / ((x[k] - xx) - (x[i] - xx));
          }
        Vy[ix][iy] = f[N];
        if (ix == 1) {
          x[0] = qx[1];
          x[1] = qx[2];
          x[2] = qx[3];
          x[3] = qx[4];
          f[0] = by[1][iy];
          f[1] = by[2][iy];
          f[2] = by[3][iy];
          f[3] = by[4][iy];
        }
        if (ix > 1 && ix < Nx - 1) {
          x[0] = qx[ix - 1];
          x[1] = qx[ix];
          x[2] = qx[ix + 1];
          x[3] = qx[ix + 2];
          f[0] = by[ix - 1][iy];
          f[1] = by[ix][iy];
          f[2] = by[ix + 1][iy];
          f[3] = by[ix + 2][iy];
        }
        if (ix == Nx - 1) {
          x[0] = qx[Nx - 1];
          x[1] = qx[Nx];
          x[2] = qx[Nx - 1];
          x[3] = qx[Nx - 2];
          f[0] = by[Nx - 1][iy];
          f[1] = by[Nx][iy];
          f[2] = by[Nx - 1][iy];
          f[3] = by[Nx - 2][iy];
        }
        if (ix == Nx) {
          x[0] = qx[Nx];
          x[1] = qx[Nx - 1];
          x[2] = qx[Nx - 2];
          x[3] = qx[Nx - 3];
          f[0] = by[Nx][iy];
          f[1] = by[Nx - 1][iy];
          f[2] = by[Nx - 2][iy];
          f[3] = by[Nx - 3][iy];
        }
        for (k = 0; k < N; k++)
          for (i = k + 1; i <= N; i++) {
            f[i] = ((x[k] - xx) * f[i] - (x[i] - xx) * f[k]) / ((x[k] - xx) - (x[i] - xx));
          }
        By[ix][iy] = f[N];
        energy += (v2 + b2) / 2.;
      }
    }
    for (ix = 1; ix <= Nx; ix++) {
      for (iy = 1; iy <= Ny; iy++) {
        vx[ix][iy] = Vx[ix][iy];
        vy[ix][iy] = Vy[ix][iy];
        bx[ix][iy] = Bx[ix][iy];
        by[ix][iy] = By[ix][iy];
      }
    }
    printf("%g %g\n", t, log(energy));
  }
  return 0;
}
```