user: 下面的汇编指令对应的C源代码是什么：

```asm
<Feiko5_WENO3_LxF>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %rdx,%rbx
  movss  %xmm0,0x18(%rsp)
  mov    %r9d,0x10(%rsp)
  movss  %xmm1,0x1c(%rsp)
  movss  %xmm3,0x30(%rsp)
  movss  %xmm5,0x20(%rsp)
  movss  %xmm6,0x24(%rsp)
  mov    %esi,%eax
  imul   %r8d,%eax
  mov    %eax,0x28(%rsp)
  add    %edi,%eax
  cltq
  lea    0x0(,%rax,4),%rbp
  movss  (%rcx,%rax,4),%xmm7
  movss  %xmm7,0x58(%rsp)
  lea    (%rdx,%rbp,1),%r14
  movss  (%r14),%xmm7
  movss  %xmm7,0xc(%rsp)
  test   %edi,%edi
  je     L81
  mov    %edi,%r13d
  mov    %esi,%r15d
  mov    %r8d,%r12d
  lea    -0x1(%r8),%eax
  cmp    %edi,%eax
  je     L124
  test   %esi,%esi
  je     L96
  mov    0x10(%rsp),%esi
  lea    -0x1(%rsi),%edx
  cmp    %r15d,%edx
  je     L85
  subss  0x1c(%rsp),%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  divss  %xmm0,%xmm2
  movss  %xmm2,0x8(%rsp)
  cmp    $0x1,%edi
  je     L10
  lea    -0x2(%r8),%eax
  cmp    %edi,%eax
  je     L38
  lea    0x4(%rbx,%rbp,1),%rax
  lea    -0x4(%rbx,%rbp,1),%rcx
  movss  -0x8(%rbx,%rbp,1),%xmm0
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  mov    %rax,0x38(%rsp)
  movss  (%rax),%xmm3
  movss  0xc(%rsp),%xmm2
  mov    %rcx,0x40(%rsp)
  movss  (%rcx),%xmm1
  call   <WENO3@plt>
  movss  %xmm0,0x48(%rsp)
  movss  0x8(%rbx,%rbp,1),%xmm0
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  mov    0x40(%rsp),%rcx
  movss  (%rcx),%xmm3
  movss  (%r14),%xmm2
  mov    0x38(%rsp),%rax
  movss  (%rax),%xmm1
  call   <WENO3@plt>
  movss  0x48(%rsp),%xmm1
  movss  0x8(%rsp),%xmm6
  mulss  %xmm6,%xmm1
  movss  0xc(%rsp),%xmm4
  movaps %xmm4,%xmm7
  subss  %xmm1,%xmm7
  movss  %xmm7,0x40(%rsp)
  mulss  %xmm6,%xmm0
  addss  %xmm4,%xmm0
  movss  %xmm0,0x38(%rsp)
L130:
  cmp    $0x1,%r15d
  je     L151
  lea    (%r12,%r12,1),%edx
  mov    0x10(%rsp),%eax
  sub    $0x2,%eax
  cmp    %r15d,%eax
  je     L64
  mov    0x28(%rsp),%ebp
  add    %r12d,%ebp
  lea    0x0(%rbp,%r13,1),%eax
  cltq
  lea    (%rbx,%rax,4),%rsi
  sub    %edx,%ebp
  lea    0x0(%rbp,%r13,1),%eax
  cltq
  lea    (%rbx,%rax,4),%rcx
  sub    %r12d,%ebp
  lea    0x0(%rbp,%r13,1),%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  mov    %rsi,0x10(%rsp)
  movss  (%rsi),%xmm3
  movss  (%r14),%xmm2
  mov    %rcx,0x28(%rsp)
  movss  (%rcx),%xmm1
  call   <WENO3@plt>
  movss  %xmm0,0x48(%rsp)
  lea    0x0(%rbp,%r12,4),%eax
  add    %r13d,%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  mov    0x28(%rsp),%rcx
  movss  (%rcx),%xmm3
  movss  (%r14),%xmm2
  mov    0x10(%rsp),%rsi
  movss  (%rsi),%xmm1
  call   <WENO3@plt>
  movss  0x48(%rsp),%xmm1
  movss  0x8(%rsp),%xmm7
  mulss  %xmm7,%xmm1
  movss  0xc(%rsp),%xmm6
  movaps %xmm6,%xmm3
  subss  %xmm1,%xmm3
  movss  %xmm3,0x48(%rsp)
  mulss  %xmm7,%xmm0
  addss  %xmm6,%xmm0
  movss  %xmm0,0x28(%rsp)
L99:
  pxor   %xmm0,%xmm0
  cvtsi2ss %r13d,%xmm0
  movss  0x8(%rsp),%xmm7
  mulss  %xmm7,%xmm0
  addss  0x1c(%rsp),%xmm0
  movd   %xmm0,%ebp
  pxor   %xmm0,%xmm0
  cvtsi2ss %r15d,%xmm0
  mulss  %xmm7,%xmm0
  addss  0x30(%rsp),%xmm0
  movd   %xmm0,%ebx
  movss  0x24(%rsp),%xmm3
  movss  0x20(%rsp),%xmm2
  movaps %xmm0,%xmm1
  movd   %ebp,%xmm0
  call   <dist2@plt>
  movss  0x18(%rsp),%xmm6
  movaps %xmm6,%xmm4
  mulss  %xmm0,%xmm4
  movss  %xmm4,0x10(%rsp)
  pxor   %xmm5,%xmm5
  cvtss2sd 0x8(%rsp),%xmm5
  movsd  %xmm5,0x30(%rsp)
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movapd %xmm5,%xmm1
  mulsd  D56(%rip),%xmm1
  comisd %xmm1,%xmm2
  jb     L132
  movd   %ebp,%xmm1
  subss  0x20(%rsp),%xmm1
  mulss  %xmm6,%xmm1
  divss  %xmm0,%xmm1
  movss  %xmm1,0x1c(%rsp)
  movd   %ebx,%xmm1
  subss  0x24(%rsp),%xmm1
  mulss  %xmm6,%xmm1
  divss  %xmm0,%xmm1
  movd   %xmm1,%ebx
L60:
  movss  0x10(%rsp),%xmm0
  call   <fabs@plt>
  movss  %xmm0,0x20(%rsp)
  movss  0x1c(%rsp),%xmm0
  call   <fabs@plt>
  movss  %xmm0,0x24(%rsp)
  movd   %ebx,%xmm0
  call   <fabs@plt>
  addss  0x24(%rsp),%xmm0
  mulss  0x8(%rsp),%xmm0
  addss  0x20(%rsp),%xmm0
  movaps %xmm0,%xmm6
  mulss  D66(%rip),%xmm6
  movss  %xmm6,0x50(%rsp)
  movss  0x10(%rsp),%xmm0
  call   <fabs@plt>
  movss  %xmm0,0x20(%rsp)
  movss  0x1c(%rsp),%xmm0
  call   <fabs@plt>
  movss  %xmm0,0x24(%rsp)
  movd   %ebx,%xmm0
  call   <fabs@plt>
  addss  0x24(%rsp),%xmm0
  mulss  0x8(%rsp),%xmm0
  addss  0x20(%rsp),%xmm0
  movaps %xmm0,%xmm7
  mulss  D66(%rip),%xmm7
  movss  %xmm7,0x20(%rsp)
  movss  0x38(%rsp),%xmm2
  subss  0x40(%rsp),%xmm2
  cvtss2sd %xmm2,%xmm2
  mulsd  D5(%rip),%xmm2
  movsd  0x30(%rsp),%xmm9
  divsd  %xmm9,%xmm2
  cvtsd2ss %xmm2,%xmm2
  movss  0x28(%rsp),%xmm7
  subss  0x48(%rsp),%xmm7
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm7,%xmm1
  mulsd  D5(%rip),%xmm1
  divsd  %xmm9,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  0x1c(%rsp),%xmm3
  mulss  %xmm2,%xmm3
  movaps %xmm3,%xmm0
  movd   %ebx,%xmm3
  mulss  %xmm1,%xmm3
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  movss  0x10(%rsp),%xmm5
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm5,%xmm3
  addsd  %xmm3,%xmm3
  pxor   %xmm4,%xmm4
  cvtss2sd 0xc(%rsp),%xmm4
  mulsd  %xmm4,%xmm3
  mulsd  %xmm3,%xmm0
  mulss  %xmm2,%xmm2
  mulss  %xmm1,%xmm1
  addss  %xmm1,%xmm2
  movaps %xmm5,%xmm1
  mulss  %xmm5,%xmm1
  mulss  %xmm1,%xmm2
  cvtss2sd %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  movss  0xc(%rsp),%xmm5
  mulss  %xmm5,%xmm5
  movaps %xmm5,%xmm1
  movss  0x18(%rsp),%xmm5
  mulss  %xmm5,%xmm1
  mulss  %xmm5,%xmm1
  cvtss2sd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  call   <sqrt@plt>
  movaps %xmm0,%xmm1
  movss  0x58(%rsp),%xmm0
  movss  0x8(%rsp),%xmm4
  mulss  %xmm4,%xmm0
  mulss  %xmm4,%xmm1
  subss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movss  0x50(%rsp),%xmm6
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm6,%xmm2
  mulsd  D5(%rip),%xmm2
  movss  0x38(%rsp),%xmm1
  addss  0x40(%rsp),%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  movss  0x20(%rsp),%xmm4
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm4,%xmm1
  movsd  D5(%rip),%xmm2
  mulsd  %xmm1,%xmm2
  movss  0x28(%rsp),%xmm1
  addss  0x48(%rsp),%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  addss  %xmm4,%xmm6
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm6,%xmm1
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L141
L81:
  movss  0x14(%rdx,%rbp,1),%xmm0
  mov    $0x1,%edi
  movss  0x4(%rdx,%rbp,1),%xmm4
  movss  0x8(%rdx,%rbp,1),%xmm3
  movss  0xc(%rdx,%rbp,1),%xmm2
  movss  0x10(%rdx,%rbp,1),%xmm1
  call   <Extrapolation4@plt>
L141:
  movss  %xmm0,(%r14)
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L124:
  movss  -0x14(%rdx,%rbp,1),%xmm0
  mov    $0x1,%edi
  movss  -0x4(%rdx,%rbp,1),%xmm4
  movss  -0x8(%rdx,%rbp,1),%xmm3
  movss  -0xc(%rdx,%rbp,1),%xmm2
  movss  -0x10(%rdx,%rbp,1),%xmm1
  call   <Extrapolation4@plt>
  jmp    L141
L96:
  lea    (%r8,%rdi,1),%esi
  lea    (%rsi,%r8,1),%ecx
  lea    (%rcx,%r8,1),%edx
  lea    (%rdx,%r8,1),%eax
  movslq %esi,%rsi
  movslq %ecx,%rcx
  movslq %edx,%rdx
  movslq %eax,%r8
  add    %r12d,%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0x1,%edi
  movss  (%rbx,%rsi,4),%xmm4
  movss  (%rbx,%rcx,4),%xmm3
  movss  (%rbx,%rdx,4),%xmm2
  movss  (%rbx,%r8,4),%xmm1
  call   <Extrapolation4@plt>
  jmp    L141
L85:
  mov    0x28(%rsp),%esi
  sub    %r8d,%esi
  mov    %esi,%ecx
  sub    %r8d,%ecx
  mov    %ecx,%edx
  sub    %r8d,%edx
  mov    %edx,%eax
  sub    %r8d,%eax
  add    %edi,%esi
  movslq %esi,%rsi
  add    %edi,%ecx
  movslq %ecx,%rcx
  add    %edi,%edx
  movslq %edx,%rdx
  lea    (%rax,%rdi,1),%r8d
  movslq %r8d,%r8
  sub    %r12d,%eax
  add    %edi,%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0x1,%edi
  movss  (%rbx,%rsi,4),%xmm4
  movss  (%rbx,%rcx,4),%xmm3
  movss  (%rbx,%rdx,4),%xmm2
  movss  (%rbx,%r8,4),%xmm1
  call   <Extrapolation4@plt>
  jmp    L141
L10:
  lea    0x4(%rbx,%rbp,1),%rax
  mov    %rax,0x38(%rsp)
  movss  (%rax),%xmm2
  movss  %xmm2,0x40(%rsp)
  lea    -0x4(%rbx,%rbp,1),%rdi
  mov    %rdi,0x48(%rsp)
  movss  (%rdi),%xmm4
  movss  %xmm4,0x50(%rsp)
  lea    0x8(%rbx,%rbp,1),%rdx
  movss  0xc(%rbx,%rbp,1),%xmm0
  mov    $0x1,%edi
  movss  0xc(%rsp),%xmm3
  mov    %rdx,%rbp
  movss  (%rdx),%xmm1
  call   <Extrapolation4@plt>
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  movss  0x40(%rsp),%xmm3
  movss  0xc(%rsp),%xmm2
  movss  0x50(%rsp),%xmm1
  call   <WENO3@plt>
  movss  %xmm0,0x40(%rsp)
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  mov    0x48(%rsp),%rcx
  movss  (%rcx),%xmm3
  movss  (%r14),%xmm2
  mov    0x38(%rsp),%rax
  movss  (%rax),%xmm1
  movss  0x0(%rbp),%xmm0
  call   <WENO3@plt>
  movss  0x40(%rsp),%xmm1
  movss  0x8(%rsp),%xmm4
  mulss  %xmm4,%xmm1
  movss  0xc(%rsp),%xmm5
  movaps %xmm5,%xmm6
  subss  %xmm1,%xmm6
  movss  %xmm6,0x40(%rsp)
  mulss  %xmm4,%xmm0
  addss  %xmm5,%xmm0
  movss  %xmm0,0x38(%rsp)
  jmp    L130
L38:
  lea    0x4(%rbx,%rbp,1),%rax
  lea    -0x4(%rbx,%rbp,1),%rdx
  lea    -0x8(%rbx,%rbp,1),%rsi
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  mov    %rax,0x38(%rsp)
  movss  (%rax),%xmm3
  movss  0xc(%rsp),%xmm2
  mov    %rdx,0x40(%rsp)
  movss  (%rdx),%xmm1
  mov    %rsi,0x48(%rsp)
  movss  (%rsi),%xmm0
  call   <WENO3@plt>
  movss  %xmm0,0x5c(%rsp)
  mov    0x40(%rsp),%rdx
  movss  (%rdx),%xmm2
  movss  %xmm2,0x40(%rsp)
  movss  (%r14),%xmm3
  movss  %xmm3,0x50(%rsp)
  mov    0x38(%rsp),%rax
  movss  (%rax),%xmm6
  movss  %xmm6,0x38(%rsp)
  movss  -0xc(%rbx,%rbp,1),%xmm0
  mov    $0x1,%edi
  movaps %xmm6,%xmm4
  mov    0x48(%rsp),%rsi
  movss  (%rsi),%xmm1
  call   <Extrapolation4@plt>
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  movss  0x40(%rsp),%xmm3
  movss  0x50(%rsp),%xmm2
  movss  0x38(%rsp),%xmm1
  call   <WENO3@plt>
  movss  0x5c(%rsp),%xmm1
  movss  0x8(%rsp),%xmm3
  mulss  %xmm3,%xmm1
  movss  0xc(%rsp),%xmm6
  movaps %xmm6,%xmm4
  subss  %xmm1,%xmm4
  movss  %xmm4,0x40(%rsp)
  mulss  %xmm3,%xmm0
  addss  %xmm6,%xmm0
  movss  %xmm0,0x38(%rsp)
  jmp    L130
L151:
  lea    0x0(%r13,%r12,2),%eax
  movslq %eax,%rdx
  lea    (%rbx,%rdx,4),%rdi
  mov    %rdi,0x10(%rsp)
  movss  (%rdi),%xmm2
  movss  %xmm2,0x28(%rsp)
  movss  (%r14),%xmm3
  movss  %xmm3,0x48(%rsp)
  movslq %r13d,%rdx
  lea    (%rbx,%rdx,4),%rcx
  mov    %rcx,0x50(%rsp)
  movss  (%rcx),%xmm4
  movss  %xmm4,0x5c(%rsp)
  add    %r12d,%eax
  movslq %eax,%rdx
  lea    (%rbx,%rdx,4),%rbp
  add    %r12d,%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0x1,%edi
  movss  0x0(%rbp),%xmm1
  call   <Extrapolation4@plt>
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  movss  0x28(%rsp),%xmm3
  movss  0x48(%rsp),%xmm2
  movss  0x5c(%rsp),%xmm1
  call   <WENO3@plt>
  movss  %xmm0,0x28(%rsp)
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  mov    0x50(%rsp),%rcx
  movss  (%rcx),%xmm3
  movss  (%r14),%xmm2
  mov    0x10(%rsp),%rax
  movss  (%rax),%xmm1
  movss  0x0(%rbp),%xmm0
  call   <WENO3@plt>
  movss  0x28(%rsp),%xmm1
  movss  0x8(%rsp),%xmm3
  mulss  %xmm3,%xmm1
  movss  0xc(%rsp),%xmm4
  movaps %xmm4,%xmm5
  subss  %xmm1,%xmm5
  movss  %xmm5,0x48(%rsp)
  mulss  %xmm3,%xmm0
  addss  %xmm4,%xmm0
  movss  %xmm0,0x28(%rsp)
  jmp    L99
L64:
  mov    0x28(%rsp),%eax
  add    %r12d,%eax
  lea    (%rax,%r13,1),%ecx
  movslq %ecx,%rcx
  lea    (%rbx,%rcx,4),%rbp
  sub    %edx,%eax
  lea    (%rax,%r13,1),%edx
  movslq %edx,%rdx
  lea    (%rbx,%rdx,4),%rdx
  sub    %r12d,%eax
  mov    %eax,0x28(%rsp)
  add    %r13d,%eax
  cltq
  lea    (%rbx,%rax,4),%rsi
  mov    $0xffffffff,%edi
  movss  0x8(%rsp),%xmm4
  movss  0x0(%rbp),%xmm3
  movss  (%r14),%xmm2
  mov    %rdx,0x10(%rsp)
  movss  (%rdx),%xmm1
  mov    %rsi,0x48(%rsp)
  movss  (%rsi),%xmm0
  call   <WENO3@plt>
  movss  %xmm0,0x5c(%rsp)
  mov    0x10(%rsp),%rdx
  movss  (%rdx),%xmm2
  movss  %xmm2,0x10(%rsp)
  movss  (%r14),%xmm3
  movss  %xmm3,0x50(%rsp)
  mov    0x0(%rbp),%ebp
  mov    0x28(%rsp),%eax
  sub    %r12d,%eax
  add    %r13d,%eax
  cltq
  movss  (%rbx,%rax,4),%xmm0
  mov    $0x1,%edi
  movd   %ebp,%xmm4
  mov    0x48(%rsp),%rsi
  movss  (%rsi),%xmm1
  call   <Extrapolation4@plt>
  mov    $0x1,%edi
  movss  0x8(%rsp),%xmm4
  movss  0x10(%rsp),%xmm3
  movss  0x50(%rsp),%xmm2
  movd   %ebp,%xmm1
  call   <WENO3@plt>
  movss  0x5c(%rsp),%xmm1
  movss  0x8(%rsp),%xmm4
  mulss  %xmm4,%xmm1
  movss  0xc(%rsp),%xmm3
  movaps %xmm3,%xmm6
  subss  %xmm1,%xmm6
  movss  %xmm6,0x48(%rsp)
  mulss  %xmm4,%xmm0
  addss  %xmm3,%xmm0
  movss  %xmm0,0x28(%rsp)
  jmp    L99
L132:
  mov    D5(%rip),%ebx
  mov    %ebx,0x1c(%rsp)
  jmp    L60
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D56
type_infered: f64
name: extract_symbolic_data
arguments: data_label: D66
type_infered: f32
name: extract_symbolic_data
arguments: data_label: D5
type_infered: f64

tool: D56: 0.1

tool: D66: 2.5

tool: D5: 0.5

assistant: ```c
void Feiko5_WENO3_LxF(int i, int j, float *tao, float *slowMatrix, float slow0, int I, int J, float xmin, float xmax, float ymin, float ymax, float sx, float sy) {
  float slow = slowMatrix[j * I + i];
  float Dx = (xmax - xmin) / (I - 1), Dy = (ymax - ymin) / (J - 1);
  float h = Dx;
  float ax;
  float ay;
  float T0C;
  float taoC = tao[j * I + i];
  float unew = 0.0;
  float ue = 0, uw = 0, un = 0, us = 0;
  float hamilton = 0;
  float ew = 0, ns = 0;
  float x0, y0;
  float p0, q0;
  float r2;
  if (i == 0) {
    unew = Extrapolation4(tao[j * I + i + 5], tao[j * I + i + 4], tao[j * I + i + 3], tao[j * I + i + 2], tao[j * I + i + 1], 1);
  } else if (i == I - 1) {
    unew = Extrapolation4(tao[j * I + i - 5], tao[j * I + i - 4], tao[j * I + i - 3], tao[j * I + i - 2], tao[j * I + i - 1], 1);
  } else if (j == 0) {
    unew = Extrapolation4(tao[(j + 5) * I + i], tao[(j + 4) * I + i], tao[(j + 3) * I + i], tao[(j + 2) * I + i], tao[(j + 1) * I + i], 1);
  } else if (j == J - 1) {
    unew = Extrapolation4(tao[(j - 5) * I + i], tao[(j - 4) * I + i], tao[(j - 3) * I + i], tao[(j - 2) * I + i], tao[(j - 1) * I + i], 1);
  } else {
    if (i == 1) {
      uw = WENO3(Extrapolation4(tao[j * I + i + 3], tao[j * I + i + 2], tao[j * I + i + 1], tao[j * I + i], tao[j * I + i - 1], 1), tao[j * I + i - 1], tao[j * I + i], tao[j * I + i + 1], h, -1);
      ue = WENO3(tao[j * I + i + 2], tao[j * I + i + 1], tao[j * I + i], tao[j * I + i - 1], h, 1);
      uw = taoC - h * uw;
      ue = taoC + h * ue;
    } else if (i == I - 2) {
      uw = WENO3(tao[j * I + i - 2], tao[j * I + i - 1], tao[j * I + i], tao[j * I + i + 1], h, -1);
      ue = WENO3(Extrapolation4(tao[j * I + i - 3], tao[j * I + i - 2], tao[j * I + i - 1], tao[j * I + i], tao[j * I + i + 1], 1), tao[j * I + i + 1], tao[j * I + i], tao[j * I + i - 1], h, 1);
      uw = taoC - h * uw;
      ue = taoC + h * ue;
    } else {
      uw = WENO3(tao[j * I + i - 2], tao[j * I + i - 1], tao[j * I + i], tao[j * I + i + 1], h, -1);
      ue = WENO3(tao[j * I + i + 2], tao[j * I + i + 1], tao[j * I + i], tao[j * I + i - 1], h, 1);
      uw = taoC - h * uw;
      ue = taoC + h * ue;
    }
    if (j == 1) {
      us = WENO3(Extrapolation4(tao[(j + 3) * I + i], tao[(j + 2) * I + i], tao[(j + 1) * I + i], tao[j * I + i], tao[(j - 1) * I + i], 1), tao[(j - 1) * I + i], tao[j * I + i], tao[(j + 1) * I + i], h, -1);
      un = WENO3(tao[(j + 2) * I + i], tao[(j + 1) * I + i], tao[j * I + i], tao[(j - 1) * I + i], h, 1);
      us = taoC - h * us;
      un = taoC + h * un;
    } else if (j == J - 2) {
      us = WENO3(tao[(j - 2) * I + i], tao[(j - 1) * I + i], tao[j * I + i], tao[(j + 1) * I + i], h, -1);
      un = WENO3(Extrapolation4(tao[(j - 3) * I + i], tao[(j - 2) * I + i], tao[(j - 1) * I + i], tao[j * I + i], tao[(j + 1) * I + i], 1), tao[(j + 1) * I + i], tao[j * I + i], tao[(j - 1) * I + i], h, 1);
      us = taoC - h * us;
      un = taoC + h * un;
    } else {
      us = WENO3(tao[(j - 2) * I + i], tao[(j - 1) * I + i], tao[j * I + i], tao[(j + 1) * I + i], h, -1);
      un = WENO3(tao[(j + 2) * I + i], tao[(j + 1) * I + i], tao[j * I + i], tao[(j - 1) * I + i], h, 1);
      us = taoC - h * us;
      un = taoC + h * un;
    }
    x0 = i * h + xmin;
    y0 = j * h + ymin;
    r2 = dist2(x0, y0, sx, sy);
    T0C = slow0 * r2;
    if (r2 >= 0.1 * h) {
      p0 = slow0 * (x0 - sx) / r2;
      q0 = slow0 * (y0 - sy) / r2;
    } else {
      p0 = 0;
      q0 = 0;
    }
    ax = (2.5 * (fabs(T0C) + h * (fabs(p0) + fabs(q0))));
    ay = (2.5 * (fabs(T0C) + h * (fabs(p0) + fabs(q0))));
    ew = 0.5 * (ue - uw) / h;
    ns = 0.5 * (un - us) / h;
    hamilton = T0C * T0C * (ew * ew + ns * ns) + 2.0 * T0C * taoC * (p0 * ew + q0 * ns) + taoC * taoC * slow0 * slow0;
    hamilton = sqrt(hamilton);
    unew = (h * slow - h * hamilton + ax * 0.5 * (ue + uw) + ay * 0.5 * (un + us)) / (ax + ay);
  }
  tao[j * I + i] = unew;
  return;
}
```