user: 请将以下的汇编代码转换成C语言代码:

```asm
<asg_vstep3d>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1e8,%rsp
  mov    0x240(%rsp),%rax
  mov    0x248(%rsp),%rbx
  mov    %rdi,0xc0(%rsp)
  mov    %rsi,0x100(%rsp)
  mov    0x8(%rax),%eax
  mov    0x8(%rbx),%ebx
  mov    %rdx,0x108(%rsp)
  mov    %rcx,0x150(%rsp)
  mov    %r8,0xe0(%rsp)
  mov    %r9,0xe8(%rsp)
  mov    %eax,0x13c(%rsp)
  mov    %ebx,0x114(%rsp)
  cmp    %ebx,%eax
  jg     L960
  mov    0x240(%rsp),%rax
  mov    0x4(%rax),%edx
  mov    0x248(%rsp),%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jg     L960
  movslq 0x13c(%rsp),%rbx
  movslq %edx,%rcx
  sub    %edx,%eax
  movaps %xmm8,0x160(%rsp)
  lea    0x1(%rcx,%rax,1),%rax
  movaps %xmm9,0x170(%rsp)
  mov    %rbx,0xc8(%rsp)
  shl    $0x3,%rax
  lea    0x0(,%rcx,8),%rbx
  mov    %rbx,0x158(%rsp)
  mov    %rax,0xd0(%rsp)
  movaps %xmm10,0x180(%rsp)
  movaps %xmm11,0x190(%rsp)
  movaps %xmm5,0x1a0(%rsp)
  movaps %xmm6,0x1b0(%rsp)
  movaps %xmm7,0x1c0(%rsp)
L288:
  mov    0x240(%rsp),%rax
  mov    (%rax),%ebx
  mov    0x248(%rsp),%rax
  mov    (%rax),%esi
  mov    %ebx,0x60(%rsp)
  mov    %esi,0x40(%rsp)
  sub    %ebx,%esi
  mov    %esi,%eax
  mov    %esi,0x38(%rsp)
  add    $0x1,%esi
  add    $0x1,%rax
  mov    %esi,0x80(%rsp)
  lea    0x0(,%rax,4),%rdi
  mov    %eax,%eax
  mov    %rdi,0xf0(%rsp)
  movslq %ebx,%rdi
  add    %rdi,%rax
  lea    0x0(,%rdi,4),%rdx
  mov    %rdi,0xd8(%rsp)
  shl    $0x2,%rax
  mov    %rdx,0xb0(%rsp)
  add    $0x4,%rdx
  mov    %rax,0xf8(%rsp)
  mov    %esi,%eax
  and    $0xfffffffc,%esi
  shr    $0x2,%eax
  add    %esi,%ebx
  mov    %rdx,0x50(%rsp)
  sub    $0x1,%eax
  mov    %esi,0x90(%rsp)
  add    $0x1,%rax
  mov    %ebx,0xa0(%rsp)
  shl    $0x4,%rax
  mov    %rax,%r13
  movslq %ebx,%rax
  shl    $0x2,%rax
  mov    %r13,%r15
  mov    %rax,0x118(%rsp)
  add    $0x4,%rax
  mov    %rax,0x120(%rsp)
  lea    0x1(%rbx),%eax
  mov    %eax,0x110(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x128(%rsp)
  add    $0x4,%rax
  mov    %rax,0x130(%rsp)
  lea    0x2(%rbx),%eax
  mov    %eax,0x138(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x140(%rsp)
  add    $0x4,%rax
  mov    %rax,0x148(%rsp)
  mov    0x158(%rsp),%rax
  mov    %rax,0x98(%rsp)
  nopl   0x0(%rax)
L101:
  mov    0x40(%rsp),%ebx
  cmp    %ebx,0x60(%rsp)
  jg     L535
  mov    0x238(%rsp),%rax
  mov    0xf0(%rsp),%rdx
  xor    %esi,%esi
  movaps %xmm15,0x70(%rsp)
  mov    0xb0(%rsp),%rdi
  movaps %xmm14,0x20(%rsp)
  add    (%rax),%rdi
  movaps %xmm13,0x10(%rsp)
  movaps %xmm12,(%rsp)
  call   <memset@plt>
  movaps (%rsp),%xmm12
  mov    0x280(%rsp),%r12d
  movaps 0x10(%rsp),%xmm13
  movaps 0x20(%rsp),%xmm14
  test   %r12d,%r12d
  movaps 0x70(%rsp),%xmm15
  jle    L1111
  mov    0x280(%rsp),%eax
  mov    0xc8(%rsp),%rbx
  xor    %r8d,%r8d
  mov    0xb0(%rsp),%r10
  mov    0xd8(%rsp),%r14
  mov    %rax,0x70(%rsp)
  mov    0x238(%rsp),%rax
  mov    (%rax),%rcx
  mov    0x288(%rsp),%rax
  mov    (%rax),%rax
  lea    (%rcx,%r10,1),%rdx
  mov    %rax,0x10(%rsp)
  mov    0x100(%rsp),%rax
  mov    (%rax,%rbx,8),%rax
  mov    0x98(%rsp),%rbx
  mov    (%rax,%rbx,1),%rax
  mov    0xf8(%rsp),%rbx
  add    %rcx,%rbx
  mov    %rbx,0x88(%rsp)
  mov    0x50(%rsp),%rbx
  nopl   (%rax)
L530:
  mov    %r14,%r13
  mov    0x10(%rsp),%rsi
  mov    %rdx,%r12
  mov    %rbx,0x20(%rsp)
  sub    %r8,%r13
  add    $0x4,%rbx
  mov    %rdx,%r9
  mov    %r8d,%edi
  mov    %r13,(%rsp)
  lea    0x4(%rax,%r10,1),%r13
  lea    0x0(,%r8,4),%r11
  sub    %r13,%r12
  lea    (%rax,%rbx,1),%r13
  lea    (%r14,%r8,1),%rbp
  add    %r11,%rsi
  cmp    $0x8,%r12
  seta   %r12b
  sub    %r13,%r9
  cmp    $0x8,%r9
  seta   %r13b
  and    %r13d,%r12d
  mov    0x40(%rsp),%r13d
  cmp    %r13d,0x60(%rsp)
  setne  %r13b
  test   %r13b,%r12b
  je     L1315
  mov    0x50(%rsp),%r12
  sub    %r10,%r12
  add    0x10(%rsp),%r12
  cmp    %r12,%rdx
  setae  %r13b
  cmp    0x88(%rsp),%rsi
  setae  %r12b
  or     %r13b,%r12b
  je     L1315
  cmpl   $0x2,0x38(%rsp)
  jbe    L283
  mov    0x20(%rsp),%r9
  movss  (%rsi),%xmm1
  lea    (%rax,%r10,1),%r12
  xor    %r11d,%r11d
  add    %rax,%r9
  shufps $0x0,%xmm1,%xmm1
  nopl   0x0(%rax)
L456:
  movups (%r9,%r11,1),%xmm0
  movups (%r12,%r11,1),%xmm5
  movups (%rdx,%r11,1),%xmm7
  subps  %xmm5,%xmm0
  mulps  %xmm1,%xmm0
  addps  %xmm7,%xmm0
  movups %xmm0,(%rdx,%r11,1)
  add    $0x10,%r11
  cmp    %r15,%r11
  jne    L456
  mov    0x90(%rsp),%r9d
  cmp    %r9d,0x80(%rsp)
  je     L148
  mov    %r9d,%r11d
  mov    0xa0(%rsp),%r9d
L1205:
  mov    0x80(%rsp),%r13d
  sub    %r11d,%r13d
  cmp    %r11d,0x38(%rsp)
  je     L84
  lea    (%r14,%r11,1),%r12
  lea    0x1(%r11,%rbp,1),%rbp
  add    (%rsp),%r11
  movss  (%rsi),%xmm1
  movq   (%rax,%r11,4),%xmm2
  movq   (%rax,%rbp,4),%xmm0
  lea    (%rcx,%r12,4),%r12
  mov    %r13d,%r11d
  shufps $0xe0,%xmm1,%xmm1
  and    $0xfffffffe,%r11d
  subps  %xmm2,%xmm0
  add    %r11d,%r9d
  mulps  %xmm1,%xmm0
  movq   (%r12),%xmm1
  addps  %xmm1,%xmm0
  movlps %xmm0,(%r12)
  cmp    %r11d,%r13d
  je     L148
L84:
  movslq %r9d,%r11
  lea    (%rcx,%r11,4),%rbp
  lea    (%rdi,%r9,1),%r11d
  sub    %edi,%r9d
  movslq %r11d,%r11
  movslq %r9d,%r9
  movss  0x4(%rax,%r11,4),%xmm0
  subss  (%rax,%r9,4),%xmm0
  mulss  (%rsi),%xmm0
  addss  0x0(%rbp),%xmm0
  movss  %xmm0,0x0(%rbp)
L148:
  add    $0x1,%r8
  sub    $0x4,%r10
  cmp    0x70(%rsp),%r8
  jne    L530
L380:
  mov    0x230(%rsp),%rax
  mov    0xc8(%rsp),%rsi
  mov    0x98(%rsp),%rdx
  mov    0xb0(%rsp),%r14
  mov    (%rax),%r12
  mov    0xe0(%rsp),%rax
  mov    0x50(%rsp),%r10
  mov    (%rax,%rsi,8),%rax
  lea    (%r12,%r10,1),%r8
  mov    (%rax,%rdx,1),%rbx
  mov    0x228(%rsp),%rax
  mov    (%rax),%rbp
  mov    0xc0(%rsp),%rax
  mov    (%rax,%rsi,8),%rax
  lea    0x0(%rbp,%r10,1),%r9
  mov    (%rax,%rdx,1),%rsi
  lea    (%rbx,%r14,1),%rdx
  mov    %rdx,%rax
  sub    %r8,%rax
  mov    %rdx,%r8
  lea    (%rsi,%r10,1),%rdi
  cmp    $0x8,%rax
  seta   %al
  sub    %r9,%r8
  cmp    $0x8,%r8
  seta   %r8b
  and    %r8d,%eax
  cmpl   $0x2,0x38(%rsp)
  seta   %r8b
  and    %r8d,%eax
  mov    %rdx,%r8
  sub    %rdi,%r8
  cmp    $0xc,%r8
  seta   %r8b
  test   %r8b,%al
  je     L693
  lea    (%rcx,%r10,1),%r8
  mov    %rdx,%rax
  sub    %r8,%rax
  cmp    $0x8,%rax
  jbe    L693
  lea    (%r12,%r14,1),%r11
  lea    0x0(%rbp,%r14,1),%r10
  xor    %eax,%eax
  lea    (%rsi,%r14,1),%r9
  lea    (%rcx,%r14,1),%r8
  cs nopw 0x0(%rax,%rax,1)
L1011:
  movups (%r9,%rax,1),%xmm2
  movups (%rdi,%rax,1),%xmm7
  cvtps2pd (%r8,%rax,1),%xmm4
  movlps 0x8(%r8,%rax,1),%xmm14
  movups (%rdx,%rax,1),%xmm3
  movups (%r10,%rax,1),%xmm5
  movlps 0x8(%r11,%rax,1),%xmm15
  addps  %xmm7,%xmm2
  mulps  %xmm5,%xmm3
  cvtps2pd %xmm2,%xmm1
  mulpd  D27(%rip),%xmm1
  movhlps %xmm2,%xmm13
  cvtps2pd %xmm13,%xmm2
  mulpd  D27(%rip),%xmm2
  movhlps %xmm3,%xmm12
  cvtps2pd %xmm3,%xmm0
  cvtps2pd %xmm14,%xmm3
  mulpd  %xmm4,%xmm1
  mulpd  %xmm3,%xmm2
  subpd  %xmm1,%xmm0
  cvtps2pd (%r11,%rax,1),%xmm1
  mulpd  %xmm1,%xmm0
  cvtps2pd %xmm12,%xmm1
  subpd  %xmm2,%xmm1
  cvtps2pd %xmm15,%xmm2
  mulpd  %xmm2,%xmm1
  cvtpd2ps %xmm0,%xmm0
  cvtpd2ps %xmm1,%xmm1
  movlhps %xmm1,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %r15,%rax
  jne    L1011
  mov    0x90(%rsp),%edi
  cmp    %edi,0x80(%rsp)
  je     L535
  mov    0x118(%rsp),%rdx
  mov    0x120(%rsp),%rdi
  pxor   %xmm2,%xmm2
  movss  (%rsi,%rdi,1),%xmm1
  addss  (%rsi,%rdx,1),%xmm1
  lea    (%rbx,%rdx,1),%rax
  cvtss2sd (%rcx,%rdx,1),%xmm2
  movss  0x0(%rbp,%rdx,1),%xmm0
  mulss  (%rax),%xmm0
  mov    0x40(%rsp),%edi
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%r12,%rdx,1),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmp    %edi,0x110(%rsp)
  jg     L535
  mov    0x128(%rsp),%rdx
  mov    0x130(%rsp),%r14
  pxor   %xmm2,%xmm2
  movss  (%rsi,%rdx,1),%xmm1
  addss  (%rsi,%r14,1),%xmm1
  lea    (%rbx,%rdx,1),%rax
  cvtss2sd (%rcx,%rdx,1),%xmm2
  movss  0x0(%rbp,%rdx,1),%xmm0
  mulss  (%rax),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%r12,%rdx,1),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    0x138(%rsp),%eax
  cmp    %eax,%edi
  jl     L535
  mov    0x140(%rsp),%rdi
  pxor   %xmm2,%xmm2
  lea    (%rbx,%rdi,1),%rax
  movss  0x0(%rbp,%rdi,1),%xmm0
  movss  (%rsi,%rdi,1),%xmm1
  mov    %rdi,%rbx
  mov    0x148(%rsp),%rdi
  mulss  (%rax),%xmm0
  cvtss2sd (%rcx,%rbx,1),%xmm2
  addss  (%rsi,%rdi,1),%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%r12,%rbx,1),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
L535:
  addq   $0x8,0x98(%rsp)
  mov    0x98(%rsp),%rax
  cmp    0xd0(%rsp),%rax
  jne    L101
  addq   $0x1,0xc8(%rsp)
  mov    0xc8(%rsp),%rax
  cmp    %eax,0x114(%rsp)
  jge    L288
  movaps 0x160(%rsp),%xmm8
  movaps 0x170(%rsp),%xmm9
  movaps 0x1a0(%rsp),%xmm5
  movaps 0x1b0(%rsp),%xmm6
  movaps 0x180(%rsp),%xmm10
  movaps 0x1c0(%rsp),%xmm7
  movaps 0x190(%rsp),%xmm11
L960:
  mov    0x250(%rsp),%rax
  mov    0x258(%rsp),%rbx
  mov    0x8(%rax),%eax
  mov    0x8(%rbx),%ebx
  mov    %eax,0x138(%rsp)
  mov    %ebx,0x130(%rsp)
  cmp    %ebx,%eax
  jg     L70
  mov    0x250(%rsp),%rax
  mov    0x4(%rax),%ebx
  mov    0x258(%rsp),%rax
  mov    0x4(%rax),%eax
  mov    %ebx,0x140(%rsp)
  cmp    %eax,%ebx
  jg     L70
  movslq %ebx,%rdx
  movslq 0x138(%rsp),%rsi
  add    $0x1,%eax
  movaps %xmm5,0x160(%rsp)
  lea    0x4(,%rdx,4),%rbx
  shl    $0x4,%rdx
  mov    %eax,0xf0(%rsp)
  mov    %rbx,0x148(%rsp)
  mov    0x280(%rsp),%ebx
  mov    %rdx,0x158(%rsp)
  lea    -0x1(%rbx),%edx
  mov    %rsi,0xc8(%rsp)
  lea    0x4(,%rdx,4),%rbx
  movaps %xmm6,0x170(%rsp)
  mov    %rbx,0x88(%rsp)
  movaps %xmm7,0x180(%rsp)
L659:
  mov    0x250(%rsp),%rax
  mov    (%rax),%ebx
  mov    0x258(%rsp),%rax
  mov    (%rax),%r13d
  mov    %ebx,0x38(%rsp)
  mov    %r13d,%esi
  sub    %ebx,%esi
  mov    %esi,%eax
  mov    %esi,(%rsp)
  add    $0x1,%esi
  add    $0x1,%rax
  mov    %esi,0x10(%rsp)
  lea    0x0(,%rax,4),%rdi
  mov    %eax,%eax
  mov    %rdi,0xf8(%rsp)
  movslq %ebx,%rdi
  add    %rdi,%rax
  lea    0x0(,%rdi,4),%rdx
  mov    %rdi,0x20(%rsp)
  shl    $0x2,%rax
  lea    0x4(%rdx),%r15
  mov    %rdx,0x80(%rsp)
  mov    %rax,0xd8(%rsp)
  mov    %esi,%eax
  and    $0xfffffffc,%esi
  shr    $0x2,%eax
  add    %esi,%ebx
  mov    %esi,0x90(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x98(%rsp)
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r14
  movslq %ebx,%rax
  shl    $0x2,%rax
  mov    %rax,0x100(%rsp)
  lea    0x1(%rbx),%eax
  mov    %eax,0x110(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x120(%rsp)
  lea    0x2(%rbx),%eax
  mov    %eax,0x118(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x128(%rsp)
  mov    0x158(%rsp),%rax
  mov    %rax,0xd0(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0xb0(%rsp)
  mov    0x140(%rsp),%eax
  mov    %eax,0xa0(%rsp)
  mov    %r15,%rax
  mov    %r13d,%r15d
  mov    %rax,%r13
  nopl   (%rax)
L180:
  cmp    %r15d,0x38(%rsp)
  jg     L1170
  mov    0x238(%rsp),%rax
  mov    0xf8(%rsp),%rdx
  xor    %esi,%esi
  movaps %xmm11,0x70(%rsp)
  mov    0x80(%rsp),%rdi
  movaps %xmm10,0x60(%rsp)
  add    0x8(%rax),%rdi
  movaps %xmm9,0x50(%rsp)
  movaps %xmm8,0x40(%rsp)
  call   <memset@plt>
  mov    0x280(%rsp),%ebp
  movapd D27(%rip),%xmm12
  movaps 0x40(%rsp),%xmm8
  movaps 0x50(%rsp),%xmm9
  test   %ebp,%ebp
  movaps 0x60(%rsp),%xmm10
  movaps 0x70(%rsp),%xmm11
  jle    L687
  mov    0xb0(%rsp),%rax
  mov    0xc8(%rsp),%rbx
  xor    %r10d,%r10d
  lea    (%rax,%rax,1),%r11
  mov    0x238(%rsp),%rax
  mov    0x8(%rax),%rsi
  mov    0x288(%rsp),%rax
  mov    0x8(%rax),%rbp
  mov    0x108(%rsp),%rax
  mov    (%rax,%rbx,8),%rax
  mov    %rbp,0x40(%rsp)
  mov    %rax,0x50(%rsp)
  mov    0x80(%rsp),%rax
  lea    (%rsi,%rax,1),%rdx
  mov    0xd8(%rsp),%rax
  add    %rsi,%rax
  mov    %rax,0x60(%rsp)
  mov    0xd0(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x70(%rsp)
  nopl   0x0(%rax,%rax,1)
L404:
  mov    0x70(%rsp),%rax
  mov    0x50(%rsp),%rbx
  add    $0x4,%r10
  mov    %rbp,%rdi
  sub    %r11,%rax
  mov    (%rbx,%r11,1),%r8
  mov    (%rbx,%rax,1),%r9
  mov    0x40(%rsp),%rax
  lea    (%r8,%r13,1),%rbx
  lea    (%rax,%r10,1),%rbp
  cmp    %rbp,%rdx
  setae  %cl
  cmp    0x60(%rsp),%rdi
  setae  %al
  or     %ecx,%eax
  cmp    %r15d,0x38(%rsp)
  setne  %cl
  and    %ecx,%eax
  mov    %rdx,%rcx
  sub    %rbx,%rcx
  cmp    $0x8,%rcx
  seta   %cl
  test   %cl,%al
  je     L832
  lea    (%r9,%r13,1),%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  cmp    $0x8,%rax
  jbe    L832
  cmpl   $0x2,(%rsp)
  jbe    L1034
  mov    0x80(%rsp),%rax
  movss  (%rdi),%xmm1
  lea    (%r8,%rax,1),%rbx
  lea    (%r9,%rax,1),%rcx
  xor    %eax,%eax
  shufps $0x0,%xmm1,%xmm1
L1020:
  movups (%rbx,%rax,1),%xmm0
  movups (%rcx,%rax,1),%xmm6
  movups (%rdx,%rax,1),%xmm3
  subps  %xmm6,%xmm0
  mulps  %xmm1,%xmm0
  addps  %xmm3,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %r14,%rax
  jne    L1020
  mov    0x90(%rsp),%eax
  cmp    %eax,0x10(%rsp)
  je     L529
  mov    %eax,%ecx
  mov    0x98(%rsp),%eax
L445:
  mov    0x10(%rsp),%r12d
  sub    %ecx,%r12d
  cmp    %ecx,(%rsp)
  je     L635
  add    0x20(%rsp),%rcx
  movss  (%rdi),%xmm1
  movq   (%r8,%rcx,4),%xmm0
  movq   (%r9,%rcx,4),%xmm2
  lea    (%rsi,%rcx,4),%rbx
  mov    %r12d,%ecx
  shufps $0xe0,%xmm1,%xmm1
  and    $0xfffffffe,%ecx
  subps  %xmm2,%xmm0
  add    %ecx,%eax
  mulps  %xmm1,%xmm0
  movq   (%rbx),%xmm1
  addps  %xmm1,%xmm0
  movlps %xmm0,(%rbx)
  cmp    %ecx,%r12d
  je     L529
L635:
  cltq
  movss  (%r8,%rax,4),%xmm0
  lea    (%rsi,%rax,4),%rcx
  subss  (%r9,%rax,4),%xmm0
  mulss  (%rdi),%xmm0
  addss  (%rcx),%xmm0
  movss  %xmm0,(%rcx)
L529:
  add    $0x8,%r11
  cmp    0x88(%rsp),%r10
  jne    L404
L292:
  mov    0xc8(%rsp),%rbx
  mov    0xe8(%rsp),%rdx
  mov    0xb0(%rsp),%r12
  mov    0x230(%rsp),%rax
  mov    (%rdx,%rbx,8),%rdx
  mov    0xd8(%rsp),%r10
  lea    (%r12,%r12,1),%r8
  mov    0x8(%rax),%rax
  lea    -0x4(%r12),%rdi
  mov    -0x8(%rdx,%r8,1),%rcx
  mov    0x228(%rsp),%rdx
  lea    (%rax,%rdi,1),%rbp
  mov    0x8(%rdx),%rdx
  add    %rcx,%r10
  add    %rdx,%rdi
  mov    %rdx,0x40(%rsp)
  mov    0xc0(%rsp),%rdx
  mov    0x40(%rsp),%r9
  mov    (%rdx,%rbx,8),%rdx
  add    %r12,%r9
  mov    -0x8(%rdx,%r8,1),%rbx
  mov    (%rdx,%r12,2),%r8
  mov    0x80(%rsp),%rdx
  add    %rcx,%rdx
  cmp    %r9,%rdx
  setae  %r11b
  cmp    %r10,%rdi
  setae  %r9b
  add    %r12,%rax
  or     %r11d,%r9d
  cmp    %rax,%rdx
  setae  %al
  cmp    %r10,%rbp
  setae  %r10b
  or     %r10d,%eax
  lea    (%rbx,%r13,1),%r10
  and    %r9d,%eax
  cmpl   $0x2,(%rsp)
  seta   %r9b
  and    %r9d,%eax
  mov    %rdx,%r9
  sub    %r10,%r9
  lea    (%r8,%r13,1),%r10
  cmp    $0x8,%r9
  seta   %r9b
  and    %r9d,%eax
  mov    %rdx,%r9
  sub    %r10,%r9
  cmp    $0x8,%r9
  seta   %r9b
  test   %r9b,%al
  je     L553
  lea    (%rsi,%r13,1),%r9
  mov    %rdx,%r10
  sub    %r9,%r10
  cmp    $0x8,%r10
  jbe    L553
  mov    0x80(%rsp),%rax
  movss  0x0(%rbp),%xmm3
  movss  (%rdi),%xmm5
  lea    (%rbx,%rax,1),%r11
  lea    (%r8,%rax,1),%r10
  shufps $0x0,%xmm3,%xmm3
  cvtps2pd %xmm3,%xmm4
  lea    (%rsi,%rax,1),%r9
  xor    %eax,%eax
  shufps $0x0,%xmm5,%xmm5
L10:
  movups (%r10,%rax,1),%xmm7
  movups (%r11,%rax,1),%xmm2
  movlps 0x8(%r9,%rax,1),%xmm10
  movhlps %xmm3,%xmm11
  movups (%rdx,%rax,1),%xmm6
  addps  %xmm7,%xmm2
  cvtps2pd (%r9,%rax,1),%xmm7
  mulps  %xmm5,%xmm6
  movhlps %xmm2,%xmm9
  cvtps2pd %xmm2,%xmm0
  cvtps2pd %xmm9,%xmm2
  mulpd  %xmm12,%xmm0
  mulpd  %xmm12,%xmm2
  movhlps %xmm6,%xmm8
  cvtps2pd %xmm6,%xmm1
  cvtps2pd %xmm10,%xmm6
  mulpd  %xmm7,%xmm0
  mulpd  %xmm6,%xmm2
  subpd  %xmm0,%xmm1
  cvtps2pd %xmm8,%xmm0
  subpd  %xmm2,%xmm0
  cvtps2pd %xmm11,%xmm2
  mulpd  %xmm4,%xmm1
  mulpd  %xmm2,%xmm0
  cvtpd2ps %xmm1,%xmm1
  cvtpd2ps %xmm0,%xmm0
  movlhps %xmm0,%xmm1
  movups %xmm1,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %r14,%rax
  jne    L10
  mov    0x90(%rsp),%edx
  cmp    %edx,0x10(%rsp)
  je     L1170
  mov    0x100(%rsp),%rdx
  pxor   %xmm2,%xmm2
  movss  (%rbx,%rdx,1),%xmm1
  addss  (%r8,%rdx,1),%xmm1
  lea    (%rcx,%rdx,1),%rax
  cvtss2sd (%rsi,%rdx,1),%xmm2
  movss  (%rax),%xmm0
  mulss  (%rdi),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmp    0x110(%rsp),%r15d
  jl     L1170
  mov    0x120(%rsp),%rdx
  pxor   %xmm2,%xmm2
  movss  (%r8,%rdx,1),%xmm1
  addss  (%rbx,%rdx,1),%xmm1
  lea    (%rcx,%rdx,1),%rax
  cvtss2sd (%rsi,%rdx,1),%xmm2
  movss  (%rax),%xmm0
  mulss  (%rdi),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmp    0x118(%rsp),%r15d
  jl     L1170
  mov    0x128(%rsp),%rax
  pxor   %xmm2,%xmm2
  movss  (%rdi),%xmm0
  movss  (%rbx,%rax,1),%xmm1
  addss  (%r8,%rax,1),%xmm1
  add    %rax,%rcx
  cvtss2sd (%rsi,%rax,1),%xmm2
  mulss  (%rcx),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rcx)
L1170:
  addl   $0x1,0xa0(%rsp)
  mov    0xa0(%rsp),%eax
  addq   $0x4,0xb0(%rsp)
  addq   $0x10,0xd0(%rsp)
  cmp    0xf0(%rsp),%eax
  jne    L180
  addq   $0x1,0xc8(%rsp)
  mov    0xc8(%rsp),%rax
  cmp    %eax,0x130(%rsp)
  jge    L659
  movaps 0x160(%rsp),%xmm5
  movaps 0x170(%rsp),%xmm6
  movaps 0x180(%rsp),%xmm7
L70:
  mov    0x260(%rsp),%rax
  mov    0x268(%rsp),%rbx
  mov    0x8(%rax),%eax
  mov    0x8(%rbx),%ebx
  mov    %eax,0x140(%rsp)
  mov    %ebx,0x148(%rsp)
  cmp    %ebx,%eax
  jg     L32
  mov    0x260(%rsp),%rax
  mov    0x4(%rax),%edx
  mov    0x268(%rsp),%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jg     L32
  movslq 0x140(%rsp),%rcx
  sub    %edx,%eax
  movaps 0x1d0(%rsp),%xmm3
  lea    0x0(,%rcx,4),%rsi
  mov    %rcx,%rbx
  mov    %rsi,0xd0(%rsp)
  mov    0x150(%rsp),%rsi
  mov    %ebx,0x128(%rsp)
  lea    (%rsi,%rcx,8),%rsi
  movslq %edx,%rcx
  lea    0x1(%rcx,%rax,1),%rax
  mov    %rsi,0x60(%rsp)
  mov    0x148(%rsp),%esi
  shl    $0x3,%rax
  mov    %rax,0xd8(%rsp)
  mov    0x280(%rsp),%eax
  add    $0x1,%esi
  mov    %esi,0x160(%rsp)
  lea    0x0(,%rcx,8),%rsi
  sub    $0x1,%eax
  mov    %rsi,0x158(%rsp)
  lea    0x8(,%rax,4),%rax
  mov    %rax,0x70(%rsp)
L336:
  mov    0x260(%rsp),%rax
  mov    0xd0(%rsp),%rcx
  mov    0x150(%rsp),%r15
  movslq (%rax),%rdx
  mov    0x268(%rsp),%rax
  lea    (%r15,%rcx,2),%r15
  mov    (%rax),%ebp
  mov    %edx,0x38(%rsp)
  mov    %rdx,0x20(%rsp)
  mov    %ebp,%ebx
  mov    %r15,0xf8(%rsp)
  mov    0x158(%rsp),%r15
  sub    %edx,%ebx
  mov    %ebx,%eax
  mov    %ebx,(%rsp)
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rsi
  mov    %eax,%eax
  mov    %rsi,0xf0(%rsp)
  add    %rdx,%rax
  lea    0x0(,%rdx,4),%rsi
  shl    $0x2,%rax
  mov    %rsi,0x80(%rsp)
  lea    0x4(%rsi),%r14
  lea    0x1(%rbx),%esi
  mov    %esi,0x10(%rsp)
  mov    %rax,0xc8(%rsp)
  mov    %esi,%eax
  and    $0xfffffffc,%esi
  shr    $0x2,%eax
  mov    %esi,0x88(%rsp)
  add    %edx,%esi
  lea    -0x1(%rax),%ebx
  movslq %esi,%rax
  mov    %esi,0x90(%rsp)
  shl    $0x2,%rax
  add    $0x1,%rbx
  mov    %rax,0x108(%rsp)
  lea    0x1(%rsi),%eax
  shl    $0x4,%rbx
  mov    %eax,0x100(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x118(%rsp)
  lea    0x2(%rsi),%eax
  mov    %eax,0x110(%rsp)
  cltq
  shl    $0x2,%rax
  mov    %rax,0x120(%rsp)
  lea    0x4(%rcx),%rax
  mov    %rax,0x98(%rsp)
  nopw   0x0(%rax,%rax,1)
L926:
  cmp    %ebp,0x38(%rsp)
  jg     L21
  mov    0x238(%rsp),%rax
  xor    %esi,%esi
  mov    0xf0(%rsp),%rdx
  movaps %xmm7,0xb0(%rsp)
  mov    0x80(%rsp),%rdi
  movaps %xmm6,0xa0(%rsp)
  add    0x10(%rax),%rdi
  movaps %xmm5,0x50(%rsp)
  movaps %xmm3,0x40(%rsp)
  call   <memset@plt>
  movaps 0x40(%rsp),%xmm3
  movaps 0x50(%rsp),%xmm5
  mov    0x238(%rsp),%rax
  mov    0x280(%rsp),%r11d
  movapd D27(%rip),%xmm1
  movaps 0xa0(%rsp),%xmm6
  mov    0x10(%rax),%rsi
  mov    D27(%rip),%rax
  test   %r11d,%r11d
  movaps 0xb0(%rsp),%xmm7
  movq   %rax,%xmm2
  jle    L201
  mov    0x288(%rsp),%rax
  mov    0xf8(%rsp),%r12
  mov    $0x4,%r10d
  mov    0x10(%rax),%rax
  mov    %rax,0x40(%rsp)
  mov    0x80(%rsp),%rax
  lea    (%rsi,%rax,1),%rdx
  mov    0xc8(%rsp),%rax
  add    %rsi,%rax
  mov    %rax,0x50(%rsp)
  nopl   (%rax)
L736:
  mov    0x60(%rsp),%rax
  mov    0x40(%rsp),%rcx
  mov    (%rax,%r10,2),%rax
  lea    -0x4(%rcx,%r10,1),%rdi
  mov    (%rax,%r15,1),%r8
  mov    (%r12),%rax
  mov    (%rax,%r15,1),%r9
  lea    (%rcx,%r10,1),%rax
  lea    (%r8,%r14,1),%r11
  cmp    %rax,%rdx
  setae  %cl
  cmp    0x50(%rsp),%rdi
  setae  %al
  or     %ecx,%eax
  cmp    %ebp,0x38(%rsp)
  setne  %cl
  and    %ecx,%eax
  mov    %rdx,%rcx
  sub    %r11,%rcx
  cmp    $0x8,%rcx
  seta   %cl
  test   %cl,%al
  je     L173
  lea    (%r9,%r14,1),%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  cmp    $0x8,%rax
  jbe    L173
  cmpl   $0x2,(%rsp)
  jbe    L16
  mov    0x80(%rsp),%rax
  movss  (%rdi),%xmm4
  lea    (%r8,%rax,1),%r11
  lea    (%r9,%rax,1),%rcx
  xor    %eax,%eax
  shufps $0x0,%xmm4,%xmm4
  nopl   (%rax)
L2:
  movups (%r11,%rax,1),%xmm0
  movups (%rcx,%rax,1),%xmm9
  movups (%rdx,%rax,1),%xmm10
  subps  %xmm9,%xmm0
  mulps  %xmm4,%xmm0
  addps  %xmm10,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbx,%rax
  jne    L2
  mov    0x88(%rsp),%eax
  mov    0x10(%rsp),%ecx
  cmp    %ecx,%eax
  je     L1156
  mov    %eax,%ecx
  mov    0x90(%rsp),%eax
L207:
  mov    0x10(%rsp),%r13d
  sub    %ecx,%r13d
  cmp    %ecx,(%rsp)
  je     L541
  add    0x20(%rsp),%rcx
  movss  (%rdi),%xmm4
  movq   (%r8,%rcx,4),%xmm0
  movq   (%r9,%rcx,4),%xmm8
  lea    (%rsi,%rcx,4),%r11
  mov    %r13d,%ecx
  shufps $0xe0,%xmm4,%xmm4
  and    $0xfffffffe,%ecx
  subps  %xmm8,%xmm0
  add    %ecx,%eax
  mulps  %xmm4,%xmm0
  movq   (%r11),%xmm4
  addps  %xmm0,%xmm4
  movlps %xmm4,(%r11)
  cmp    %r13d,%ecx
  je     L1156
L541:
  cltq
  movss  (%r8,%rax,4),%xmm0
  lea    (%rsi,%rax,4),%rcx
  subss  (%r9,%rax,4),%xmm0
  mulss  (%rdi),%xmm0
  addss  (%rcx),%xmm0
  movss  %xmm0,(%rcx)
L1156:
  sub    $0x8,%r12
  add    $0x4,%r10
  cmp    %r10,0x70(%rsp)
  jne    L736
L201:
  mov    0x230(%rsp),%rax
  mov    0xd0(%rsp),%rdi
  mov    0xc0(%rsp),%rdx
  mov    0xc8(%rsp),%r9
  mov    0x10(%rax),%r10
  mov    0x220(%rsp),%rax
  mov    (%rax,%rdi,2),%rax
  lea    (%r10,%rdi,1),%r13
  mov    (%rax,%r15,1),%rcx
  mov    0x228(%rsp),%rax
  mov    0x10(%rax),%r8
  mov    (%rdx,%rdi,2),%rax
  mov    (%rax,%r15,1),%r12
  mov    0x8(%rdx,%rdi,2),%rax
  lea    (%r8,%rdi,1),%r11
  add    0x98(%rsp),%r8
  mov    (%rax,%r15,1),%rdi
  mov    0x80(%rsp),%rax
  lea    (%rcx,%rax,1),%rdx
  lea    (%rcx,%r9,1),%rax
  cmp    %r8,%rdx
  setae  %r9b
  cmp    %rax,%r11
  setae  %r8b
  or     %r8d,%r9d
  mov    0x98(%rsp),%r8
  add    %r10,%r8
  cmp    %r8,%rdx
  setae  %r8b
  cmp    %rax,%r13
  setae  %al
  or     %r8d,%eax
  and    %r9d,%eax
  cmpl   $0x2,(%rsp)
  lea    (%r12,%r14,1),%r9
  seta   %r8b
  and    %r8d,%eax
  mov    %rdx,%r8
  sub    %r9,%r8
  lea    (%rdi,%r14,1),%r9
  cmp    $0x8,%r8
  seta   %r8b
  and    %r8d,%eax
  mov    %rdx,%r8
  sub    %r9,%r8
  cmp    $0x8,%r8
  seta   %r8b
  test   %r8b,%al
  je     L332
  lea    (%rsi,%r14,1),%r8
  mov    %rdx,%r10
  sub    %r8,%r10
  cmp    $0x8,%r10
  jbe    L332
  mov    0x80(%rsp),%rax
  movss  0x0(%r13),%xmm8
  movss  (%r11),%xmm10
  lea    (%r12,%rax,1),%r10
  lea    (%rdi,%rax,1),%r9
  shufps $0x0,%xmm8,%xmm8
  cvtps2pd %xmm8,%xmm9
  lea    (%rsi,%rax,1),%r8
  xor    %eax,%eax
  shufps $0x0,%xmm10,%xmm10
L263:
  movups (%r10,%rax,1),%xmm4
  movups (%r9,%rax,1),%xmm11
  movlps 0x8(%r8,%rax,1),%xmm6
  cvtps2pd (%r8,%rax,1),%xmm13
  movups (%rdx,%rax,1),%xmm12
  movhlps %xmm8,%xmm7
  addps  %xmm4,%xmm11
  mulps  %xmm10,%xmm12
  movhlps %xmm11,%xmm5
  cvtps2pd %xmm11,%xmm0
  cvtps2pd %xmm5,%xmm11
  mulpd  %xmm1,%xmm0
  mulpd  %xmm1,%xmm11
  movhlps %xmm12,%xmm3
  cvtps2pd %xmm12,%xmm4
  cvtps2pd %xmm6,%xmm12
  mulpd  %xmm13,%xmm0
  mulpd  %xmm12,%xmm11
  subpd  %xmm0,%xmm4
  cvtps2pd %xmm3,%xmm0
  subpd  %xmm11,%xmm0
  cvtps2pd %xmm7,%xmm11
  mulpd  %xmm9,%xmm4
  mulpd  %xmm11,%xmm0
  cvtpd2ps %xmm4,%xmm4
  cvtpd2ps %xmm0,%xmm0
  movlhps %xmm0,%xmm4
  movups %xmm4,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rbx,%rax
  jne    L263
  mov    0x10(%rsp),%edx
  cmp    %edx,0x88(%rsp)
  je     L21
  mov    0x108(%rsp),%rdx
  pxor   %xmm8,%xmm8
  movss  (%r12,%rdx,1),%xmm4
  addss  (%rdi,%rdx,1),%xmm4
  lea    (%rcx,%rdx,1),%rax
  cvtss2sd (%rsi,%rdx,1),%xmm8
  movss  (%rax),%xmm0
  mulss  (%r11),%xmm0
  cvtss2sd %xmm4,%xmm4
  mulsd  %xmm2,%xmm4
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm8,%xmm4
  subsd  %xmm4,%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd 0x0(%r13),%xmm4
  mulsd  %xmm4,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmp    %ebp,0x100(%rsp)
  jg     L21
  mov    0x118(%rsp),%rdx
  pxor   %xmm8,%xmm8
  movss  (%r12,%rdx,1),%xmm4
  addss  (%rdi,%rdx,1),%xmm4
  lea    (%rcx,%rdx,1),%rax
  cvtss2sd (%rsi,%rdx,1),%xmm8
  movss  (%rax),%xmm0
  mulss  (%r11),%xmm0
  cvtss2sd %xmm4,%xmm4
  mulsd  %xmm2,%xmm4
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm8,%xmm4
  subsd  %xmm4,%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd 0x0(%r13),%xmm4
  mulsd  %xmm4,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmp    %ebp,0x110(%rsp)
  jg     L21
  mov    0x120(%rsp),%rax
  pxor   %xmm8,%xmm8
  movss  (%r11),%xmm0
  movss  (%rdi,%rax,1),%xmm4
  addss  (%r12,%rax,1),%xmm4
  add    %rax,%rcx
  cvtss2sd (%rsi,%rax,1),%xmm8
  mulss  (%rcx),%xmm0
  cvtss2sd %xmm4,%xmm4
  mulsd  %xmm2,%xmm4
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm8,%xmm4
  subsd  %xmm4,%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd 0x0(%r13),%xmm4
  mulsd  %xmm4,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rcx)
L21:
  add    $0x8,%r15
  cmp    %r15,0xd8(%rsp)
  jne    L926
  mov    0x98(%rsp),%rbx
  addl   $0x1,0x128(%rsp)
  addq   $0x8,0x60(%rsp)
  mov    0x128(%rsp),%eax
  mov    %rbx,0xd0(%rsp)
  cmp    0x160(%rsp),%eax
  jne    L336
L32:
  mov    0x270(%rsp),%rax
  mov    (%rax),%ebx
  test   %ebx,%ebx
  je     L1369
  mov    0x114(%rsp),%ebx
  cmp    %ebx,0x13c(%rsp)
  jg     L612
  mov    0x240(%rsp),%rax
  mov    0x4(%rax),%r10d
  mov    0x248(%rsp),%rax
  mov    0x4(%rax),%ebp
  cmp    %ebp,%r10d
  jg     L612
  cmpl   $0x1,0x280(%rsp)
  jle    L612
  mov    0x280(%rsp),%eax
  lea    -0x2(%rax),%edi
  cmp    $0x2,%edi
  jbe    L182
  movslq 0x13c(%rsp),%r9
  mov    0xe0(%rsp),%rsi
  movslq %r10d,%r11
  mov    %ebp,0xa0(%rsp)
  mov    %edi,0xc0(%rsp)
  mov    0x280(%rsp),%edi
  lea    (%rsi,%r9,8),%rax
  mov    %rax,(%rsp)
  mov    0x114(%rsp),%eax
  sub    %r9d,%eax
  add    %r9,%rax
  lea    0x8(%rsi,%rax,8),%rax
  mov    %rax,0x90(%rsp)
  lea    0x0(,%r11,8),%rax
  mov    %rax,0x98(%rsp)
  mov    %ebp,%eax
  sub    %r10d,%eax
  lea    0x1(%rax,%r11,1),%rax
  shl    $0x3,%rax
  mov    %rax,0x10(%rsp)
  mov    0x240(%rsp),%rax
  mov    (%rax),%ecx
  mov    0x280(%rsp),%eax
  lea    -0x1(%rax),%r15d
  movslq %ecx,%rax
  lea    0x0(,%rax,4),%rbx
  mov    %r15d,%r12d
  lea    -0x10(%rbx),%rax
  and    $0xfffffffc,%r12d
  mov    %rax,0x20(%rsp)
  mov    %r15d,%eax
  lea    0x1(%r12),%edx
  lea    0x2(%r12),%r8d
  shr    $0x2,%eax
  mov    %r8d,0x50(%rsp)
  sub    $0x1,%eax
  shl    $0x4,%rax
  mov    %rax,%rsi
  lea    (%rcx,%rdx,1),%eax
  cltq
  lea    -0x4(,%rax,4),%r13
  mov    %ecx,%eax
  sub    %edx,%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,0x80(%rsp)
  lea    (%rcx,%r8,1),%eax
  movslq %eax,%rdx
  lea    -0x4(,%rdx,4),%r14
  lea    (%r8,%r8,1),%edx
  sub    %edx,%eax
  lea    0x3(%r12),%r8d
  cltq
  mov    %r8d,0x60(%rsp)
  shl    $0x2,%rax
  mov    %rax,0x40(%rsp)
  lea    (%rcx,%r8,1),%eax
  movslq %eax,%rdx
  lea    -0x4(,%rdx,4),%rdx
  mov    %rdx,0x88(%rsp)
  lea    (%r8,%r8,1),%edx
  sub    %edx,%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,0x70(%rsp)
  mov    $0xfffffffffffffff0,%rax
  sub    %rsi,%rax
  mov    %rax,0x38(%rsp)
L1141:
  mov    (%rsp),%rax
  mov    0x98(%rsp),%r8
  mov    (%rax),%rbp
L1209:
  mov    0x0(%rbp,%r8,1),%rsi
  mov    0x20(%rsp),%rax
  mov    0x38(%rsp),%rcx
  add    %rsi,%rax
  lea    (%rsi,%rbx,1),%rdx
  add    %rax,%rcx
  xchg   %ax,%ax
L1225:
  movups (%rdx),%xmm0
  sub    $0x10,%rax
  add    $0x10,%rdx
  shufps $0x1b,%xmm0,%xmm0
  movups %xmm0,0x10(%rax)
  cmp    %rcx,%rax
  jne    L1225
  cmp    %r15d,%r12d
  je     L247
  movss  (%rsi,%r13,1),%xmm0
  mov    0x80(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
  cmp    %edi,0x50(%rsp)
  jge    L247
  movss  (%rsi,%r14,1),%xmm0
  mov    0x40(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
  cmp    0x60(%rsp),%edi
  jle    L247
  mov    0x88(%rsp),%rax
  movss  (%rsi,%rax,1),%xmm0
  mov    0x70(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
L247:
  add    $0x8,%r8
  cmp    %r8,0x10(%rsp)
  jne    L1209
  addq   $0x8,(%rsp)
  mov    (%rsp),%rax
  cmp    %rax,0x90(%rsp)
  jne    L1141
  mov    0xa0(%rsp),%ebp
  mov    0xc0(%rsp),%edi
L1234:
  mov    0x278(%rsp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L612
L689:
  cmp    $0x2,%edi
  jbe    L671
  lea    0x0(,%r11,8),%rax
  mov    0x280(%rsp),%ebx
  mov    %r9,(%rsp)
  mov    %rax,0x50(%rsp)
  mov    %ebp,%eax
  sub    %r10d,%eax
  sub    $0x1,%ebx
  lea    0x1(%rax,%r11,1),%rax
  mov    %ebx,%r8d
  mov    %ebx,%ecx
  shl    $0x3,%rax
  and    $0xfffffffc,%r8d
  shr    $0x2,%ecx
  mov    %rax,0x10(%rsp)
  lea    0x2(%r8),%ebp
  lea    0x3(%r8),%r12d
  mov    0x248(%rsp),%rax
  movslq (%rax),%rdx
  mov    %rdx,%rax
  mov    %edx,%r10d
  lea    -0xc(,%rdx,4),%r13
  lea    0x4(,%rdx,4),%r14
  lea    0x1(%rdx,%r8,1),%edx
  sub    %r8d,%r10d
  movslq %edx,%rdx
  movslq %r10d,%r10
  lea    0x0(,%rdx,4),%rsi
  mov    %eax,%edx
  sub    %r12d,%eax
  shl    $0x2,%r10
  sub    %ebp,%edx
  mov    %rsi,0x38(%rsp)
  lea    0x1(%rdx),%r9d
  lea    (%rdx,%rbp,2),%edx
  movslq %edx,%rdx
  movslq %r9d,%r9
  lea    0x0(,%rdx,4),%rsi
  mov    %eax,%edx
  lea    0x1(%rax),%eax
  shl    $0x2,%r9
  cltq
  mov    %rsi,0x80(%rsp)
  lea    0x0(,%rax,4),%r15
  lea    (%rdx,%r12,2),%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,0x40(%rsp)
  mov    %ecx,%eax
  shl    $0x4,%rax
  mov    %rax,0x20(%rsp)
L1169:
  mov    0xe0(%rsp),%rax
  mov    (%rsp),%rsi
  mov    0x50(%rsp),%rdi
  mov    (%rax,%rsi,8),%r11
L969:
  mov    (%r11,%rdi,1),%rsi
  mov    0x20(%rsp),%rcx
  lea    (%rsi,%r14,1),%rax
  lea    (%rsi,%r13,1),%rdx
  add    %rax,%rcx
  xchg   %ax,%ax
L817:
  movups (%rdx),%xmm0
  add    $0x10,%rax
  sub    $0x10,%rdx
  shufps $0x1b,%xmm0,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rcx,%rax
  jne    L817
  cmp    %ebx,%r8d
  je     L217
  movss  (%rsi,%r10,1),%xmm0
  mov    0x38(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
  cmp    0x280(%rsp),%ebp
  jge    L217
  movss  (%rsi,%r9,1),%xmm0
  mov    0x80(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
  cmp    0x280(%rsp),%r12d
  jge    L217
  movss  (%rsi,%r15,1),%xmm0
  mov    0x40(%rsp),%rax
  movss  %xmm0,(%rsi,%rax,1)
L217:
  add    $0x8,%rdi
  cmp    %rdi,0x10(%rsp)
  jne    L969
  addq   $0x1,(%rsp)
  mov    (%rsp),%rax
  cmp    %eax,0x114(%rsp)
  jge    L1169
L612:
  mov    0x270(%rsp),%rax
  mov    0x4(%rax),%r10d
  test   %r10d,%r10d
  je     L928
  mov    0x130(%rsp),%ebx
  cmp    %ebx,0x138(%rsp)
  jg     L1027
  mov    0x250(%rsp),%rax
  mov    (%rax),%r10d
  mov    0x258(%rsp),%rax
  mov    (%rax),%ebp
  cmp    %ebp,%r10d
  jg     L1027
  cmpl   $0x1,0x280(%rsp)
  jle    L1027
  movslq 0x138(%rsp),%r13
  mov    %ebx,%eax
  movslq %r10d,%r11
  mov    %ebp,%r8d
  mov    0xe8(%rsp),%rsi
  sub    %r13d,%eax
  add    %r13,%rax
  lea    (%rsi,%r13,8),%r12
  lea    0x8(%rsi,%rax,8),%r15
  lea    0x0(,%r11,4),%rax
  mov    0x280(%rsp),%esi
  mov    %rax,0x10(%rsp)
  mov    %ebp,%eax
  sub    %r10d,%eax
  lea    -0x2(%rsi),%edx
  lea    0x1(%rax,%r11,1),%rax
  mov    %rdx,%rdi
  lea    0x0(,%rax,4),%rbx
  mov    0x250(%rsp),%rax
  movslq 0x4(%rax),%rax
  lea    0x0(,%rax,8),%r14
  lea    0x1(%rax,%rdx,1),%rax
  lea    0x0(,%rax,8),%rsi
L282:
  mov    (%r12),%r9
  mov    0x10(%rsp),%rcx
  lea    (%r9,%r14,1),%rbp
  add    %rsi,%r9
L393:
  mov    %rsi,(%rsp)
  mov    %rbp,%rdx
  mov    %rbp,%rax
  nopl   0x0(%rax,%rax,1)
L1054:
  mov    (%rax),%rsi
  add    $0x8,%rax
  sub    $0x8,%rdx
  movss  (%rsi,%rcx,1),%xmm0
  mov    (%rdx),%rsi
  movss  %xmm0,(%rsi,%rcx,1)
  cmp    %r9,%rax
  jne    L1054
  add    $0x4,%rcx
  mov    (%rsp),%rsi
  cmp    %rbx,%rcx
  jne    L393
  add    $0x8,%r12
  cmp    %r12,%r15
  jne    L282
  mov    0x278(%rsp),%rax
  mov    %r8d,%ebp
  mov    0x4(%rax),%edx
  test   %edx,%edx
  jne    L1324
L1027:
  mov    0x278(%rsp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,(%rsp)
  mov    0x270(%rsp),%rax
  mov    0x8(%rax),%r8d
  test   %r8d,%r8d
  je     L129
  mov    0x260(%rsp),%rax
  mov    0x4(%rax),%r10d
  mov    0x268(%rsp),%rax
  mov    0x4(%rax),%ebp
  cmp    %ebp,%r10d
  jg     L448
  mov    0x260(%rsp),%rax
  mov    (%rax),%ebx
  mov    0x268(%rsp),%rax
  mov    (%rax),%r12d
  cmp    %r12d,%ebx
  jg     L448
  cmpl   $0x1,0x280(%rsp)
  jle    L448
  mov    %ebp,%eax
  movslq %r10d,%r15
  movslq %ebx,%r13
  movslq 0x140(%rsp),%rdx
  sub    %r10d,%eax
  lea    0x0(,%r15,8),%rsi
  lea    0x1(%rax,%r15,1),%rax
  shl    $0x3,%rax
  mov    %rax,0x20(%rsp)
  lea    0x0(,%r13,4),%rax
  mov    %rax,0x38(%rsp)
  mov    %r12d,%eax
  sub    %ebx,%eax
  lea    0x1(%rax,%r13,1),%r11
  mov    0x220(%rsp),%rax
  shl    $0x2,%r11
  lea    (%rax,%rdx,8),%r9
  mov    0x280(%rsp),%eax
  sub    $0x2,%eax
  mov    %rax,%rdi
  add    %rdx,%rax
  mov    0x220(%rsp),%rdx
  add    $0x8,%rdx
  mov    %rdx,0x10(%rsp)
  lea    (%rdx,%rax,8),%r14
L966:
  mov    0x38(%rsp),%rcx
L1346:
  mov    %r9,%rdx
  mov    %r9,%rax
  nopl   0x0(%rax,%rax,1)
L1375:
  mov    (%rax),%r8
  add    $0x8,%rax
  sub    $0x8,%rdx
  mov    (%r8,%rsi,1),%r8
  movss  (%r8,%rcx,1),%xmm0
  mov    (%rdx),%r8
  mov    (%r8,%rsi,1),%r8
  movss  %xmm0,(%r8,%rcx,1)
  cmp    %r14,%rax
  jne    L1375
  add    $0x4,%rcx
  cmp    %rcx,%r11
  jne    L1346
  add    $0x8,%rsi
  cmp    0x20(%rsp),%rsi
  jne    L966
  mov    (%rsp),%ecx
  test   %ecx,%ecx
  je     L448
L959:
  movslq 0x148(%rsp),%rdx
  mov    0x220(%rsp),%rax
  sub    %ebx,%r12d
  lea    0x0(,%r15,8),%rsi
  mov    0x10(%rsp),%rbx
  lea    0x1(%r12,%r13,1),%r9
  lea    0x0(,%r13,4),%r8
  lea    (%rax,%rdx,8),%r11
  mov    %edi,%eax
  shl    $0x2,%r9
  add    %rdx,%rax
  lea    (%rbx,%rax,8),%rbx
L28:
  mov    %r8,%rcx
L1243:
  mov    %r11,%rax
  mov    %r11,%rdx
  nopl   (%rax)
L754:
  mov    (%rdx),%rdi
  add    $0x8,%rax
  sub    $0x8,%rdx
  mov    (%rdi,%rsi,1),%rdi
  movss  (%rdi,%rcx,1),%xmm0
  mov    (%rax),%rdi
  mov    (%rdi,%rsi,1),%rdi
  movss  %xmm0,(%rdi,%rcx,1)
  cmp    %rbx,%rax
  jne    L754
  add    $0x4,%rcx
  cmp    %r9,%rcx
  jne    L1243
  add    $0x1,%r10d
  add    $0x8,%rsi
  cmp    %ebp,%r10d
  jle    L28
L448:
  add    $0x1e8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L173:
  mov    0x20(%rsp),%rax
  nopl   (%rax)
L1308:
  movss  (%r8,%rax,4),%xmm0
  subss  (%r9,%rax,4),%xmm0
  mulss  (%rdi),%xmm0
  addss  (%rsi,%rax,4),%xmm0
  movss  %xmm0,(%rsi,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%ebp
  jge    L1308
  jmp    L1156
  nop
L832:
  mov    0x20(%rsp),%rax
  nopl   (%rax)
L507:
  movss  (%r8,%rax,4),%xmm0
  subss  (%r9,%rax,4),%xmm0
  mulss  (%rdi),%xmm0
  addss  (%rsi,%rax,4),%xmm0
  movss  %xmm0,(%rsi,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%r15d
  jge    L507
  jmp    L529
L1315:
  mov    0x50(%rsp),%rdi
  mov    0x40(%rsp),%ebp
  add    %rax,%r11
  sub    0x20(%rsp),%rdi
  lea    (%rax,%rdi,1),%r9
  mov    %r14,%rdi
  nopl   0x0(%rax,%rax,1)
L172:
  movss  0x4(%r11,%rdi,4),%xmm0
  subss  (%r9,%rdi,4),%xmm0
  mulss  (%rsi),%xmm0
  addss  (%rcx,%rdi,4),%xmm0
  movss  %xmm0,(%rcx,%rdi,4)
  add    $0x1,%rdi
  cmp    %edi,%ebp
  jge    L172
  jmp    L148
L283:
  mov    0x60(%rsp),%r9d
  xor    %r11d,%r11d
  jmp    L1205
L16:
  mov    0x38(%rsp),%eax
  xor    %ecx,%ecx
  jmp    L207
L1034:
  mov    0x38(%rsp),%eax
  xor    %ecx,%ecx
  jmp    L445
L332:
  mov    0x20(%rsp),%rax
L795:
  movss  (%rdi,%rax,4),%xmm4
  addss  (%r12,%rax,4),%xmm4
  pxor   %xmm8,%xmm8
  cvtss2sd (%rsi,%rax,4),%xmm8
  movss  (%r11),%xmm0
  mulss  (%rcx,%rax,4),%xmm0
  cvtss2sd %xmm4,%xmm4
  mulsd  %xmm2,%xmm4
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm8,%xmm4
  subsd  %xmm4,%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd 0x0(%r13),%xmm4
  mulsd  %xmm4,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rcx,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%ebp
  jge    L795
  jmp    L21
L553:
  mov    0x20(%rsp),%rax
  xchg   %ax,%ax
L181:
  movss  (%r8,%rax,4),%xmm1
  addss  (%rbx,%rax,4),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd (%rsi,%rax,4),%xmm2
  movss  (%rdi),%xmm0
  mulss  (%rcx,%rax,4),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0x0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rcx,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%r15d
  jge    L181
  jmp    L1170
L693:
  mov    0xd8(%rsp),%rax
  mov    0x40(%rsp),%edx
  nopl   (%rax)
L430:
  movss  (%rsi,%rax,4),%xmm1
  addss  0x4(%rsi,%rax,4),%xmm1
  pxor   %xmm2,%xmm2
  movss  (%rbx,%rax,4),%xmm0
  cvtss2sd (%rcx,%rax,4),%xmm2
  mulss  0x0(%rbp,%rax,4),%xmm0
  cvtss2sd %xmm1,%xmm1
  mulsd  D27(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%r12,%rax,4),%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rbx,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%edx
  jge    L430
  jmp    L535
L687:
  mov    0x238(%rsp),%rax
  mov    0x8(%rax),%rsi
  jmp    L292
L1111:
  mov    0x238(%rsp),%rax
  mov    (%rax),%rcx
  jmp    L380
L129:
  mov    (%rsp),%esi
  test   %esi,%esi
  je     L448
  mov    0x260(%rsp),%rax
  mov    0x4(%rax),%r10d
  mov    0x268(%rsp),%rax
  mov    0x4(%rax),%ebp
  cmp    %ebp,%r10d
  jg     L448
  mov    0x260(%rsp),%rax
  mov    (%rax),%ebx
  mov    0x268(%rsp),%rax
  mov    (%rax),%r12d
  cmp    %r12d,%ebx
  jg     L448
  cmpl   $0x1,0x280(%rsp)
  jle    L448
  mov    0x280(%rsp),%eax
  movslq %r10d,%r15
  movslq %ebx,%r13
  lea    -0x2(%rax),%edi
  mov    0x220(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x10(%rsp)
  jmp    L959
L928:
  mov    0x278(%rsp),%rax
  mov    0x4(%rax),%edi
  test   %edi,%edi
  je     L1027
  mov    0x138(%rsp),%eax
  mov    0x130(%rsp),%ebx
  cmp    %ebx,%eax
  jg     L1027
  mov    0x250(%rsp),%rbx
  mov    (%rbx),%r10d
  mov    0x258(%rsp),%rbx
  mov    (%rbx),%ebp
  cmp    %ebp,%r10d
  jg     L1027
  cmpl   $0x1,0x280(%rsp)
  jle    L1027
  movslq %eax,%r13
  mov    0x280(%rsp),%eax
  movslq %r10d,%r11
  lea    -0x2(%rax),%edi
L1324:
  mov    %ebp,%eax
  mov    0xe8(%rsp),%r12
  mov    %r13,%r8
  lea    0x0(,%r11,4),%rbx
  sub    %r10d,%eax
  lea    0x1(%rax,%r11,1),%r9
  mov    0x258(%rsp),%rax
  shl    $0x2,%r9
  movslq 0x4(%rax),%rax
  lea    0x0(,%rax,8),%r10
  lea    0x1(%rax,%rdi,1),%rax
  lea    0x0(,%rax,8),%rbp
L1275:
  mov    (%r12,%r8,8),%rdi
  mov    %rbx,%rcx
  lea    (%rdi,%r10,1),%r11
  add    %rbp,%rdi
L474:
  mov    %r11,%rax
  mov    %r11,%rdx
  nopl   0x0(%rax)
L250:
  mov    (%rdx),%rsi
  add    $0x8,%rax
  sub    $0x8,%rdx
  movss  (%rsi,%rcx,1),%xmm0
  mov    (%rax),%rsi
  movss  %xmm0,(%rsi,%rcx,1)
  cmp    %rdi,%rax
  jne    L250
  add    $0x4,%rcx
  cmp    %rcx,%r9
  jne    L474
  add    $0x1,%r8
  cmp    %r8d,0x130(%rsp)
  jge    L1275
  jmp    L1027
L1369:
  mov    0x278(%rsp),%rax
  mov    (%rax),%r9d
  test   %r9d,%r9d
  je     L612
  mov    0x13c(%rsp),%eax
  mov    0x114(%rsp),%ebx
  cmp    %ebx,%eax
  jg     L612
  mov    0x240(%rsp),%rbx
  mov    0x4(%rbx),%r10d
  mov    0x248(%rsp),%rbx
  mov    0x4(%rbx),%ebp
  cmp    %ebp,%r10d
  jg     L612
  cmpl   $0x1,0x280(%rsp)
  jle    L612
  movslq %eax,%r9
  mov    0x280(%rsp),%eax
  movslq %r10d,%r11
  lea    -0x2(%rax),%edi
  jmp    L689
L671:
  mov    %ebp,%eax
  mov    %edi,%edi
  lea    0x0(,%r11,8),%rsi
  sub    %r10d,%eax
  lea    0x1(%rax,%r11,1),%rax
  lea    0x0(,%rax,8),%rbx
  mov    0x248(%rsp),%rax
  movslq (%rax),%rax
  lea    0x1(%rax,%rdi,1),%r8
  lea    0x0(,%rax,4),%r10
  shl    $0x2,%r8
L1187:
  mov    0xe0(%rsp),%rax
  mov    %rsi,%rdi
  mov    (%rax,%r9,8),%r11
L349:
  mov    (%r11,%rdi,1),%rcx
  lea    (%rcx,%r10,1),%rdx
  add    %r8,%rcx
  mov    %rdx,%rax
  nopl   0x0(%rax,%rax,1)
L413:
  movss  (%rdx),%xmm0
  add    $0x4,%rax
  sub    $0x4,%rdx
  movss  %xmm0,(%rax)
  cmp    %rax,%rcx
  jne    L413
  add    $0x8,%rdi
  cmp    %rdi,%rbx
  jne    L349
  add    $0x1,%r9
  cmp    %r9d,0x114(%rsp)
  jge    L1187
  jmp    L612
L182:
  movslq 0x13c(%rsp),%r9
  mov    %ebx,%eax
  mov    0xe0(%rsp),%rdx
  movslq %r10d,%r11
  lea    0x0(,%r11,8),%r14
  sub    %r9d,%eax
  lea    (%rdx,%r9,8),%rbx
  add    %r9,%rax
  lea    0x8(%rdx,%rax,8),%r13
  mov    %ebp,%eax
  mov    %edi,%edx
  sub    %r10d,%eax
  lea    0x1(%rax,%r11,1),%rax
  shl    $0x3,%rax
  mov    %rax,(%rsp)
  mov    0x240(%rsp),%rax
  movslq (%rax),%rax
  lea    0x0(,%rax,4),%r12
  lea    0x1(%rax,%rdx,1),%rax
  lea    0x0(,%rax,4),%r15
L72:
  mov    (%rbx),%r8
  mov    %r14,%rsi
L577:
  mov    (%r8,%rsi,1),%rcx
  lea    (%rcx,%r12,1),%rax
  add    %r15,%rcx
  mov    %rax,%rdx
  nopl   (%rax)
L842:
  movss  (%rax),%xmm0
  add    $0x4,%rax
  sub    $0x4,%rdx
  movss  %xmm0,(%rdx)
  cmp    %rax,%rcx
  jne    L842
  add    $0x8,%rsi
  cmp    %rsi,(%rsp)
  jne    L577
  add    $0x8,%rbx
  cmp    %rbx,%r13
  jne    L72
  jmp    L1234
```

tool_calls: name: parse_data
arguments: tag: D27
datatype: f64[2]

tool: {"D27": [0.5,0.5]}

assistant: ```c
void asg_vstep3d(float ***restrict buoy, float ***restrict p0, float ***restrict p1, float ***restrict p2, float ***restrict v0, float ***restrict v1, float ***restrict v2, float **restrict ev, float **restrict evp, float **restrict gradp, int *gsc_v0, int *gec_v0, int *gsc_v1, int *gec_v1, int *gsc_v2, int *gec_v2, int *lbc, int *rbc, int maxoff, float **restrict c) {
  int i0, i1, i2;
  int ioff;
  for (i2 = gsc_v0[2]; i2 <= gec_v0[2]; i2++) {
    for (i1 = gsc_v0[1]; i1 <= gec_v0[1]; i1++) {
      for (i0 = gsc_v0[0]; i0 <= gec_v0[0]; i0++)
        gradp[0][i0] = 0;
      for (ioff = 0; ioff < maxoff; ioff++) {
        for (i0 = gsc_v0[0]; i0 <= gec_v0[0]; i0++)
          gradp[0][i0] += c[0][ioff] * (p0[i2][i1][i0 + ioff + 1] - p0[i2][i1][i0 - ioff]);
      }
      for (i0 = gsc_v0[0]; i0 <= gec_v0[0]; i0++)
        v0[i2][i1][i0] = evp[0][i0] * (v0[i2][i1][i0] * ev[0][i0] - 0.5 * (buoy[i2][i1][i0] + buoy[i2][i1][i0 + 1]) * gradp[0][i0]);
    }
  }
  for (i2 = gsc_v1[2]; i2 <= gec_v1[2]; i2++) {
    for (i1 = gsc_v1[1]; i1 <= gec_v1[1]; i1++) {
      for (i0 = gsc_v1[0]; i0 <= gec_v1[0]; i0++)
        gradp[1][i0] = 0;
      for (ioff = 0; ioff < maxoff; ioff++) {
        for (i0 = gsc_v1[0]; i0 <= gec_v1[0]; i0++)
          gradp[1][i0] += c[1][ioff] * (p1[i2][i1 + ioff + 1][i0] - p1[i2][i1 - ioff][i0]);
      }
      for (i0 = gsc_v1[0]; i0 <= gec_v1[0]; i0++)
        v1[i2][i1][i0] = evp[1][i1] * (v1[i2][i1][i0] * ev[1][i1] - 0.5 * (buoy[i2][i1][i0] + buoy[i2][i1 + 1][i0]) * gradp[1][i0]);
    }
  }
  for (i2 = gsc_v2[2]; i2 <= gec_v2[2]; i2++) {
    for (i1 = gsc_v2[1]; i1 <= gec_v2[1]; i1++) {
      for (i0 = gsc_v2[0]; i0 <= gec_v2[0]; i0++)
        gradp[2][i0] = 0;
      for (ioff = 0; ioff < maxoff; ioff++) {
        for (i0 = gsc_v2[0]; i0 <= gec_v2[0]; i0++)
          gradp[2][i0] += c[2][ioff] * (p2[i2 + ioff + 1][i1][i0] - p2[i2 - ioff][i1][i0]);
      }
      for (i0 = gsc_v2[0]; i0 <= gec_v2[0]; i0++)
        v2[i2][i1][i0] = evp[2][i2] * (v2[i2][i1][i0] * ev[2][i2] - 0.5 * (buoy[i2][i1][i0] + buoy[i2 + 1][i1][i0]) * gradp[2][i0]);
    }
  }
  if (lbc[0]) {
    for (i2 = gsc_v0[2]; i2 <= gec_v0[2]; i2++) {
      for (i1 = gsc_v0[1]; i1 <= gec_v0[1]; i1++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v0[i2][i1][gsc_v0[0] - ioff] = v0[i2][i1][gsc_v0[0] + ioff - 1];
        }
      }
    }
  }
  if (rbc[0]) {
    for (i2 = gsc_v0[2]; i2 <= gec_v0[2]; i2++) {
      for (i1 = gsc_v0[1]; i1 <= gec_v0[1]; i1++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v0[i2][i1][gec_v0[0] + ioff] = v0[i2][i1][gec_v0[0] - ioff + 1];
        }
      }
    }
  }
  if (lbc[1]) {
    for (i2 = gsc_v1[2]; i2 <= gec_v1[2]; i2++) {
      for (i0 = gsc_v1[0]; i0 <= gec_v1[0]; i0++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v1[i2][gsc_v1[1] - ioff][i0] = v1[i2][gsc_v1[1] + ioff - 1][i0];
        }
      }
    }
  }
  if (rbc[1]) {
    for (i2 = gsc_v1[2]; i2 <= gec_v1[2]; i2++) {
      for (i0 = gsc_v1[0]; i0 <= gec_v1[0]; i0++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v1[i2][gec_v1[1] + ioff][i0] = v1[i2][gec_v1[1] - ioff + 1][i0];
        }
      }
    }
  }
  if (lbc[2]) {
    for (i1 = gsc_v2[1]; i1 <= gec_v2[1]; i1++) {
      for (i0 = gsc_v2[0]; i0 <= gec_v2[0]; i0++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v2[gsc_v2[2] - ioff][i1][i0] = v2[gsc_v2[2] + ioff - 1][i1][i0];
        }
      }
    }
  }
  if (rbc[2]) {
    for (i1 = gsc_v2[1]; i1 <= gec_v2[1]; i1++) {
      for (i0 = gsc_v2[0]; i0 <= gec_v2[0]; i0++) {
        for (ioff = 1; ioff < maxoff; ioff++) {
          v2[gec_v2[2] + ioff][i1][i0] = v2[gec_v2[2] - ioff + 1][i1][i0];
        }
      }
    }
  }
}
```