user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<UpdSnodes>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x128,%rsp
  mov    %esi,0xbc(%rsp)
  mov    %rcx,0xc8(%rsp)
  mov    %r9,0xc0(%rsp)
  cmp    %edx,%edi
  jl     L149
  mov    %edi,%eax
  test   %edi,%edi
  je     L37
  mov    %esi,%ebx
  test   %esi,%esi
  je     L37
  test   %edx,%edx
  jle    L37
  mov    0x178(%rsp),%rdi
  lea    -0x2(%rax),%esi
  mov    %r8,%r15
  mov    %esi,0xe4(%rsp)
  mov    (%rdi),%edi
  mov    %esi,0xd8(%rsp)
  mov    %edi,0xdc(%rsp)
  lea    -0x1(%rax),%edi
  sub    %edx,%eax
  sub    $0x2,%eax
  mov    %edi,0xb8(%rsp)
  mov    0x178(%rsp),%rdi
  mov    %eax,0xe0(%rsp)
  lea    -0x10(%rbx),%eax
  shr    $0x4,%eax
  lea    0x4(%rdi),%r9
  mov    0xc0(%rsp),%rdi
  mov    %eax,%edx
  add    $0x1,%eax
  mov    %r9,%r14
  shl    $0x4,%eax
  shl    $0x6,%rdx
  mov    %eax,0xe8(%rsp)
  add    $0xb,%eax
  lea    0x40(%rdi,%rdx,1),%rcx
  mov    %eax,0xec(%rsp)
  lea    -0x8(%rbx),%eax
  mov    %eax,0xf8(%rsp)
  lea    0x20(%rdi),%rax
  mov    %rax,0xf0(%rsp)
  lea    -0x4(%rbx),%eax
  mov    %eax,0xfc(%rsp)
  lea    0x10(%rdi),%rax
  mov    %rax,0x100(%rsp)
  lea    -0x2(%rbx),%eax
  mov    %eax,0x110(%rsp)
  lea    0x8(%rdi),%rax
  mov    %rax,0x108(%rsp)
  lea    -0x1(%rbx),%eax
  mov    %eax,0x114(%rsp)
  lea    0x4(%rdi),%rax
  mov    %rcx,0xb0(%rsp)
  mov    %rax,0x118(%rsp)
  nopw   0x0(%rax,%rax,1)
L93:
  mov    -0x4(%r14),%eax
  mov    0x170(%rsp),%rsi
  mov    0xe4(%rsp),%r13d
  mov    0xd8(%rsp),%edi
  mov    %eax,%edx
  sub    0xdc(%rsp),%edx
  add    $0x1,%eax
  movslq %edx,%rbx
  sub    %edi,%r13d
  cmpl   $0xf,0xbc(%rsp)
  mov    %eax,0x3c(%rsp)
  movslq (%rsi,%rbx,4),%rdx
  mov    0x168(%rsp),%rsi
  mov    %rbx,0xd0(%rsp)
  lea    (%rsi,%rdx,8),%rsi
  mov    %rsi,0x30(%rsp)
  jle    L267
  mov    0x160(%rsp),%rax
  mov    0xc8(%rsp),%rsi
  mov    0xc0(%rsp),%rcx
  lea    (%rax,%rbx,8),%rax
  mov    %rax,0xa8(%rsp)
  mov    %edi,%eax
  add    $0x2,%rax
  mov    %rax,0x48(%rsp)
  nopl   0x0(%rax,%rax,1)
L24:
  mov    (%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rbp
  mov    0x4(%rcx),%eax
  movsd  0x0(%rbp),%xmm1
  add    %r13d,%eax
  cltq
  movapd %xmm1,%xmm15
  divsd  (%rsi),%xmm15
  lea    (%r15,%rax,8),%rbx
  mov    0x8(%rcx),%eax
  mulsd  %xmm15,%xmm1
  movsd  (%rbx),%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm0,%xmm14
  divsd  0x8(%rsi),%xmm14
  lea    (%r15,%rax,8),%r11
  mov    0xc(%rcx),%eax
  mulsd  %xmm14,%xmm0
  movsd  (%r11),%xmm13
  divsd  0x10(%rsi),%xmm13
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r10
  mov    0x10(%rcx),%eax
  movsd  (%r10),%xmm12
  divsd  0x18(%rsi),%xmm12
  addsd  %xmm1,%xmm0
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    0x14(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    0x18(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    0x1c(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r12
  mov    0x20(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rdx
  mov    0x24(%rcx),%eax
  mov    %rdx,0x40(%rsp)
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,(%rsp)
  mov    0x28(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x8(%rsp)
  mov    0x2c(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x10(%rsp)
  mov    0x30(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x50(%rsp)
  mov    0x34(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x18(%rsp)
  mov    0x38(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x58(%rsp)
  mov    0x3c(%rcx),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x60(%rsp)
  movsd  (%r9),%xmm11
  divsd  0x20(%rsi),%xmm11
  mov    (%rsp),%rax
  movsd  (%rdx),%xmm6
  movsd  (%r8),%xmm10
  movsd  (%rdi),%xmm9
  divsd  0x28(%rsi),%xmm10
  divsd  0x30(%rsi),%xmm9
  movsd  (%rax),%xmm5
  mov    0x8(%rsp),%rax
  movapd %xmm6,%xmm7
  movsd  %xmm6,0x68(%rsp)
  divsd  0x40(%rsi),%xmm7
  movsd  (%r12),%xmm4
  divsd  0x38(%rsi),%xmm4
  movsd  %xmm7,0x28(%rsp)
  movsd  (%rax),%xmm3
  mov    0x10(%rsp),%rax
  movsd  %xmm5,0x70(%rsp)
  movapd %xmm5,%xmm8
  movsd  %xmm4,0x20(%rsp)
  divsd  0x48(%rsi),%xmm8
  movsd  (%rax),%xmm6
  mov    0x50(%rsp),%rax
  movsd  %xmm3,0x78(%rsp)
  movapd %xmm3,%xmm2
  divsd  0x50(%rsi),%xmm2
  movapd %xmm2,%xmm7
  movsd  %xmm6,0x80(%rsp)
  movsd  (%rax),%xmm5
  mov    0x18(%rsp),%rax
  divsd  0x58(%rsi),%xmm6
  movsd  %xmm5,0x88(%rsp)
  movsd  (%rax),%xmm3
  divsd  0x60(%rsi),%xmm5
  movsd  %xmm3,0x90(%rsp)
  movapd %xmm3,%xmm4
  divsd  0x68(%rsi),%xmm4
  movsd  (%r11),%xmm1
  mov    0x58(%rsp),%rax
  mov    0xb8(%rsp),%edx
  mulsd  %xmm13,%xmm1
  movsd  (%rax),%xmm3
  mov    0x60(%rsp),%rax
  movsd  %xmm3,0x98(%rsp)
  divsd  0x70(%rsi),%xmm3
  movsd  (%rax),%xmm2
  mov    0xa8(%rsp),%rax
  movsd  %xmm2,0xa0(%rsp)
  addsd  %xmm0,%xmm1
  movsd  (%r10),%xmm0
  divsd  0x78(%rsi),%xmm2
  mulsd  %xmm12,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%r9),%xmm1
  mulsd  %xmm11,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%r8),%xmm0
  mulsd  %xmm10,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%rdi),%xmm1
  mulsd  %xmm9,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x20(%rsp),%xmm0
  mulsd  (%r12),%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x68(%rsp),%xmm1
  mulsd  0x28(%rsp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x70(%rsp),%xmm0
  mulsd  %xmm8,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x78(%rsp),%xmm1
  mulsd  %xmm7,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x80(%rsp),%xmm0
  mulsd  %xmm6,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x88(%rsp),%xmm1
  mulsd  %xmm5,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x90(%rsp),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x98(%rsp),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0xa0(%rsp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%rax),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rax)
  mov    $0x1,%eax
  test   %edx,%edx
  jle    L275
  mov    %r13d,0x68(%rsp)
  mov    0x60(%rsp),%r13
  mov    %rsi,0x60(%rsp)
  mov    0x58(%rsp),%rsi
  mov    %rcx,0x58(%rsp)
  mov    %r15,0x70(%rsp)
  mov    0x50(%rsp),%r15
  nopl   0x0(%rax)
L72:
  movsd  0x0(%rbp,%rax,8),%xmm0
  movsd  (%rbx,%rax,8),%xmm1
  mov    -0x4(%r14,%rax,4),%edx
  mov    0x30(%rsp),%rcx
  mulsd  %xmm15,%xmm0
  sub    0x3c(%rsp),%edx
  mulsd  %xmm14,%xmm1
  movslq %edx,%rdx
  lea    (%rcx,%rdx,8),%rdx
  mov    0x40(%rsp),%rcx
  addsd  %xmm0,%xmm1
  movsd  (%r11,%rax,8),%xmm0
  mulsd  %xmm13,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%r10,%rax,8),%xmm1
  mulsd  %xmm12,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%r9,%rax,8),%xmm0
  mulsd  %xmm11,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%r8,%rax,8),%xmm1
  mulsd  %xmm10,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rdi,%rax,8),%xmm0
  mulsd  %xmm9,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x20(%rsp),%xmm1
  mulsd  (%r12,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x28(%rsp),%xmm0
  mulsd  (%rcx,%rax,8),%xmm0
  mov    (%rsp),%rcx
  addsd  %xmm1,%xmm0
  movsd  (%rcx,%rax,8),%xmm1
  mov    0x8(%rsp),%rcx
  mulsd  %xmm8,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rcx,%rax,8),%xmm0
  mov    0x10(%rsp),%rcx
  mulsd  %xmm7,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%rcx,%rax,8),%xmm1
  mov    0x18(%rsp),%rcx
  mulsd  %xmm6,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%r15,%rax,8),%xmm0
  mulsd  %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  (%rcx,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rsi,%rax,8),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x0(%r13,%rax,8),%xmm1
  add    $0x1,%rax
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rdx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  cmp    %rax,0x48(%rsp)
  jne    L72
  mov    0x68(%rsp),%r13d
  mov    0x60(%rsp),%rsi
  mov    0x58(%rsp),%rcx
  mov    0x70(%rsp),%r15
L275:
  add    $0x40,%rcx
  sub    $0xffffffffffffff80,%rsi
  cmp    %rcx,0xb0(%rsp)
  jne    L24
  mov    0xe8(%rsp),%edi
  mov    0xec(%rsp),%eax
  mov    %edi,(%rsp)
L258:
  cmp    %eax,0xbc(%rsp)
  jle    L81
  mov    0xd0(%rsp),%rdi
  mov    0x160(%rsp),%rax
  lea    (%rax,%rdi,8),%rax
  mov    0xc0(%rsp),%rdi
  mov    %rax,0x68(%rsp)
  movslq (%rsp),%rax
  lea    (%rdi,%rax,4),%rsi
  mov    0xc8(%rsp),%rdi
  mov    %eax,0x60(%rsp)
  lea    (%rdi,%rax,8),%rcx
  mov    0xd8(%rsp),%eax
  add    $0x2,%rax
  mov    %rax,0x10(%rsp)
L234:
  mov    (%rsi),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r12
  mov    0x4(%rsi),%eax
  movsd  (%r12),%xmm15
  add    %r13d,%eax
  cltq
  movapd %xmm15,%xmm11
  divsd  (%rcx),%xmm11
  lea    (%r15,%rax,8),%rbp
  mov    0x8(%rsi),%eax
  mulsd  %xmm11,%xmm15
  movsd  0x0(%rbp),%xmm14
  add    %r13d,%eax
  cltq
  movapd %xmm14,%xmm10
  divsd  0x8(%rcx),%xmm10
  lea    (%r15,%rax,8),%rbx
  mov    0xc(%rsi),%eax
  mulsd  %xmm10,%xmm14
  movsd  (%rbx),%xmm13
  add    %r13d,%eax
  cltq
  movapd %xmm13,%xmm9
  divsd  0x10(%rcx),%xmm9
  lea    (%r15,%rax,8),%r11
  mov    0x10(%rsi),%eax
  mulsd  %xmm9,%xmm13
  movsd  (%r11),%xmm12
  addsd  %xmm15,%xmm14
  add    %r13d,%eax
  cltq
  movapd %xmm12,%xmm8
  divsd  0x18(%rcx),%xmm8
  lea    (%r15,%rax,8),%r10
  mov    0x14(%rsi),%eax
  mulsd  %xmm8,%xmm12
  movsd  (%r10),%xmm7
  divsd  0x20(%rcx),%xmm7
  addsd  %xmm14,%xmm13
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    0x18(%rsi),%eax
  movsd  (%r9),%xmm6
  divsd  0x28(%rcx),%xmm6
  addsd  %xmm13,%xmm12
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    0x1c(%rsi),%eax
  movsd  (%r8),%xmm5
  divsd  0x30(%rcx),%xmm5
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    0x20(%rsi),%eax
  movsd  (%rdi),%xmm4
  divsd  0x38(%rcx),%xmm4
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rdx
  mov    0x24(%rsi),%eax
  mov    %rdx,0x8(%rsp)
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x18(%rsp)
  mov    0x28(%rsi),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x20(%rsp)
  mov    0x2c(%rsi),%eax
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,0x28(%rsp)
  movsd  (%rdx),%xmm2
  movsd  (%r10),%xmm15
  movsd  (%r8),%xmm14
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm2,%xmm3
  divsd  0x40(%rcx),%xmm3
  mov    0x18(%rsp),%rax
  mulsd  %xmm7,%xmm15
  mov    0xb8(%rsp),%edx
  mulsd  %xmm5,%xmm14
  movsd  (%rax),%xmm2
  mov    0x20(%rsp),%rax
  movsd  %xmm2,0x48(%rsp)
  divsd  0x48(%rcx),%xmm2
  movsd  (%rax),%xmm1
  mov    0x28(%rsp),%rax
  movapd %xmm15,%xmm13
  movsd  %xmm1,0x50(%rsp)
  divsd  0x50(%rcx),%xmm1
  movsd  (%rax),%xmm0
  addsd  %xmm12,%xmm13
  movsd  (%r9),%xmm12
  mov    0x68(%rsp),%rax
  movsd  %xmm0,0x58(%rsp)
  divsd  0x58(%rcx),%xmm0
  mulsd  %xmm6,%xmm12
  addsd  %xmm13,%xmm12
  movapd %xmm14,%xmm13
  addsd  %xmm12,%xmm13
  movsd  (%rdi),%xmm12
  mulsd  %xmm4,%xmm12
  addsd  %xmm13,%xmm12
  movsd  0x40(%rsp),%xmm13
  mulsd  %xmm3,%xmm13
  addsd  %xmm13,%xmm12
  movsd  0x48(%rsp),%xmm13
  mulsd  %xmm2,%xmm13
  addsd  %xmm13,%xmm12
  movsd  0x50(%rsp),%xmm13
  mulsd  %xmm1,%xmm13
  addsd  %xmm13,%xmm12
  movsd  0x58(%rsp),%xmm13
  mulsd  %xmm0,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%rax),%xmm13
  subsd  %xmm12,%xmm13
  movsd  %xmm13,(%rax)
  mov    $0x1,%eax
  test   %edx,%edx
  jle    L142
  mov    %r13d,0x40(%rsp)
  mov    0x20(%rsp),%r13
  mov    %rcx,0x20(%rsp)
  mov    %rsi,0x48(%rsp)
  mov    0x18(%rsp),%rsi
  mov    %r15,0x18(%rsp)
  mov    0x28(%rsp),%r15
  nopl   0x0(%rax)
L127:
  movsd  (%r12,%rax,8),%xmm12
  movsd  0x0(%rbp,%rax,8),%xmm13
  mov    -0x4(%r14,%rax,4),%edx
  mov    0x30(%rsp),%rcx
  mulsd  %xmm10,%xmm13
  sub    0x3c(%rsp),%edx
  mulsd  %xmm11,%xmm12
  movslq %edx,%rdx
  lea    (%rcx,%rdx,8),%rdx
  mov    0x8(%rsp),%rcx
  addsd  %xmm13,%xmm12
  movsd  (%rbx,%rax,8),%xmm13
  mulsd  %xmm9,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%r11,%rax,8),%xmm13
  mulsd  %xmm8,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%r10,%rax,8),%xmm13
  mulsd  %xmm7,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%r9,%rax,8),%xmm13
  mulsd  %xmm6,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%r8,%rax,8),%xmm13
  mulsd  %xmm5,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%rdi,%rax,8),%xmm13
  mulsd  %xmm4,%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm3,%xmm13
  mulsd  (%rcx,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%rsi,%rax,8),%xmm13
  mulsd  %xmm2,%xmm13
  addsd  %xmm13,%xmm12
  movsd  0x0(%r13,%rax,8),%xmm13
  mulsd  %xmm1,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%r15,%rax,8),%xmm13
  add    $0x1,%rax
  mulsd  %xmm0,%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%rdx),%xmm13
  subsd  %xmm12,%xmm13
  movsd  %xmm13,(%rdx)
  cmp    %rax,0x10(%rsp)
  jne    L127
  mov    0x40(%rsp),%r13d
  mov    0x20(%rsp),%rcx
  mov    0x48(%rsp),%rsi
  mov    0x18(%rsp),%r15
L142:
  mov    0x60(%rsp),%eax
  addl   $0xc,(%rsp)
  add    $0x30,%rsi
  add    $0x60,%rcx
  add    $0x17,%eax
  cmp    %eax,0xbc(%rsp)
  jle    L81
  mov    (%rsp),%eax
  mov    %eax,0x60(%rsp)
  jmp    L234
  nopl   0x0(%rax)
L81:
  mov    (%rsp),%ebx
  lea    0x7(%rbx),%eax
  cmp    %eax,0xbc(%rsp)
  jle    L202
  mov    0xd0(%rsp),%rdi
  mov    0x160(%rsp),%rax
  mov    0xf8(%rsp),%edx
  lea    (%rax,%rdi,8),%rax
  mov    0xc0(%rsp),%rdi
  mov    %rax,0x20(%rsp)
  movslq %ebx,%rax
  sub    %ebx,%edx
  lea    (%rdi,%rax,4),%rbp
  mov    0xc8(%rsp),%rdi
  shr    $0x3,%edx
  mov    %edx,0x48(%rsp)
  lea    (%rdi,%rax,8),%r12
  mov    0xf0(%rsp),%rdi
  lea    (%rax,%rdx,8),%rax
  lea    (%rdi,%rax,4),%rax
  mov    %rax,0x28(%rsp)
  mov    0xd8(%rsp),%eax
  add    $0x2,%rax
  mov    %rax,0x40(%rsp)
L208:
  mov    0x0(%rbp),%eax
  mov    0xb8(%rsp),%edx
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    0x4(%rbp),%eax
  movsd  (%rbx),%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm0,%xmm8
  divsd  (%r12),%xmm8
  lea    (%r15,%rax,8),%r11
  mov    0x8(%rbp),%eax
  mulsd  %xmm8,%xmm0
  movsd  (%r11),%xmm15
  add    %r13d,%eax
  cltq
  movapd %xmm15,%xmm7
  divsd  0x8(%r12),%xmm7
  lea    (%r15,%rax,8),%r10
  mov    0xc(%rbp),%eax
  mulsd  %xmm7,%xmm15
  movsd  (%r10),%xmm14
  add    %r13d,%eax
  cltq
  movapd %xmm14,%xmm6
  divsd  0x10(%r12),%xmm6
  lea    (%r15,%rax,8),%r9
  mov    0x10(%rbp),%eax
  mulsd  %xmm6,%xmm14
  movsd  (%r9),%xmm13
  addsd  %xmm15,%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm13,%xmm5
  divsd  0x18(%r12),%xmm5
  lea    (%r15,%rax,8),%r8
  mov    0x14(%rbp),%eax
  mulsd  %xmm5,%xmm13
  movsd  (%r8),%xmm12
  addsd  %xmm14,%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm12,%xmm4
  divsd  0x20(%r12),%xmm4
  lea    (%r15,%rax,8),%rdi
  mov    0x18(%rbp),%eax
  mulsd  %xmm4,%xmm12
  movsd  (%rdi),%xmm11
  addsd  %xmm13,%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm11,%xmm3
  divsd  0x28(%r12),%xmm3
  lea    (%r15,%rax,8),%rsi
  mov    0x1c(%rbp),%eax
  mulsd  %xmm3,%xmm11
  movsd  (%rsi),%xmm10
  addsd  %xmm12,%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm10,%xmm2
  divsd  0x30(%r12),%xmm2
  lea    (%r15,%rax,8),%rcx
  mulsd  %xmm2,%xmm10
  mov    0x20(%rsp),%rax
  movsd  (%rcx),%xmm9
  addsd  %xmm11,%xmm0
  movapd %xmm9,%xmm1
  divsd  0x38(%r12),%xmm1
  mulsd  %xmm1,%xmm9
  addsd  %xmm10,%xmm0
  addsd  %xmm9,%xmm0
  movsd  (%rax),%xmm9
  subsd  %xmm0,%xmm9
  movsd  %xmm9,(%rax)
  mov    $0x1,%eax
  test   %edx,%edx
  jle    L94
  mov    %r13d,0x8(%rsp)
  mov    0x30(%rsp),%r13
  mov    %r12,0x10(%rsp)
  mov    0x40(%rsp),%r12
  mov    %rbp,0x18(%rsp)
  mov    0x3c(%rsp),%ebp
  nopw   0x0(%rax,%rax,1)
L174:
  movsd  (%rbx,%rax,8),%xmm0
  movsd  (%r11,%rax,8),%xmm9
  mov    -0x4(%r14,%rax,4),%edx
  mulsd  %xmm7,%xmm9
  mulsd  %xmm8,%xmm0
  sub    %ebp,%edx
  movslq %edx,%rdx
  lea    0x0(%r13,%rdx,8),%rdx
  addsd  %xmm9,%xmm0
  movsd  (%r10,%rax,8),%xmm9
  mulsd  %xmm6,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%r9,%rax,8),%xmm9
  mulsd  %xmm5,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%r8,%rax,8),%xmm9
  mulsd  %xmm4,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%rdi,%rax,8),%xmm9
  mulsd  %xmm3,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%rsi,%rax,8),%xmm9
  mulsd  %xmm2,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%rcx,%rax,8),%xmm9
  add    $0x1,%rax
  mulsd  %xmm1,%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%rdx),%xmm9
  subsd  %xmm0,%xmm9
  movsd  %xmm9,(%rdx)
  cmp    %rax,%r12
  jne    L174
  mov    0x8(%rsp),%r13d
  mov    0x10(%rsp),%r12
  mov    0x18(%rsp),%rbp
L94:
  add    $0x20,%rbp
  add    $0x40,%r12
  cmp    %rbp,0x28(%rsp)
  jne    L208
  mov    (%rsp),%eax
  mov    0x48(%rsp),%edi
  lea    0x8(%rax,%rdi,8),%eax
  mov    %eax,(%rsp)
L202:
  mov    (%rsp),%edi
  lea    0x3(%rdi),%eax
  cmp    %eax,0xbc(%rsp)
  jle    L14
  mov    0x160(%rsp),%rax
  mov    0xd0(%rsp),%rbx
  mov    0xc0(%rsp),%rsi
  mov    0xfc(%rsp),%edx
  lea    (%rax,%rbx,8),%rbx
  movslq %edi,%rax
  mov    0x3c(%rsp),%r12d
  mov    0xd8(%rsp),%r9d
  lea    (%rsi,%rax,4),%r10
  sub    %edi,%edx
  mov    0xc8(%rsp),%rsi
  mov    0x100(%rsp),%rdi
  shr    $0x2,%edx
  add    $0x2,%r9
  lea    (%rsi,%rax,8),%r11
  lea    (%rax,%rdx,4),%rax
  mov    %edx,0x10(%rsp)
  lea    (%rdi,%rax,4),%rbp
  mov    %rbp,0x8(%rsp)
  mov    0x30(%rsp),%rbp
L27:
  mov    (%r10),%eax
  mov    0xb8(%rsp),%edx
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    0x4(%r10),%eax
  movsd  (%r8),%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm0,%xmm5
  divsd  (%r11),%xmm5
  lea    (%r15,%rax,8),%rdi
  mov    0x8(%r10),%eax
  mulsd  %xmm5,%xmm0
  movsd  (%rdi),%xmm7
  add    %r13d,%eax
  cltq
  movapd %xmm7,%xmm4
  divsd  0x8(%r11),%xmm4
  lea    (%r15,%rax,8),%rsi
  mov    0xc(%r10),%eax
  mulsd  %xmm4,%xmm7
  movsd  (%rsi),%xmm6
  add    %r13d,%eax
  cltq
  movapd %xmm6,%xmm3
  divsd  0x10(%r11),%xmm3
  lea    (%r15,%rax,8),%rcx
  mulsd  %xmm3,%xmm6
  mov    $0x1,%eax
  movsd  (%rcx),%xmm1
  addsd  %xmm7,%xmm0
  movapd %xmm1,%xmm2
  divsd  0x18(%r11),%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm6,%xmm0
  addsd  %xmm1,%xmm0
  movsd  (%rbx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rbx)
  test   %edx,%edx
  jle    L242
  nopl   (%rax)
L62:
  movsd  (%r8,%rax,8),%xmm0
  movsd  (%rdi,%rax,8),%xmm1
  mov    -0x4(%r14,%rax,4),%edx
  mulsd  %xmm4,%xmm1
  mulsd  %xmm5,%xmm0
  sub    %r12d,%edx
  movslq %edx,%rdx
  lea    0x0(%rbp,%rdx,8),%rdx
  addsd  %xmm1,%xmm0
  movsd  (%rsi,%rax,8),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rcx,%rax,8),%xmm1
  add    $0x1,%rax
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rdx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdx)
  cmp    %rax,%r9
  jne    L62
L242:
  add    $0x10,%r10
  add    $0x20,%r11
  cmp    %r10,0x8(%rsp)
  jne    L27
  mov    (%rsp),%eax
  mov    0x10(%rsp),%r12d
  lea    0x4(%rax,%r12,4),%eax
  mov    %eax,(%rsp)
L14:
  mov    (%rsp),%ebx
  lea    0x1(%rbx),%eax
  cmp    %eax,0xbc(%rsp)
  jle    L196
  mov    0x160(%rsp),%rax
  mov    0xd0(%rsp),%rdi
  mov    0x110(%rsp),%edx
  mov    0x30(%rsp),%rbp
  lea    (%rax,%rdi,8),%r10
  mov    0xc0(%rsp),%rdi
  movslq %ebx,%rax
  mov    0x3c(%rsp),%r12d
  sub    %ebx,%edx
  lea    (%rdi,%rax,4),%r8
  mov    %edx,%ebx
  mov    0xc8(%rsp),%rdi
  shr    %ebx
  lea    (%rdi,%rax,8),%r9
  mov    %ebx,%edx
  mov    0x108(%rsp),%rdi
  lea    (%rax,%rdx,2),%rax
  lea    (%rdi,%rax,4),%r11
  mov    0xd8(%rsp),%edi
  add    $0x2,%rdi
L214:
  mov    (%r8),%eax
  mov    0xb8(%rsp),%edx
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rsi
  mov    0x4(%r8),%eax
  movsd  (%rsi),%xmm0
  add    %r13d,%eax
  cltq
  movapd %xmm0,%xmm3
  divsd  (%r9),%xmm3
  lea    (%r15,%rax,8),%rcx
  mulsd  %xmm3,%xmm0
  mov    $0x1,%eax
  movsd  (%rcx),%xmm1
  movapd %xmm1,%xmm2
  divsd  0x8(%r9),%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%r10),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r10)
  test   %edx,%edx
  jle    L80
  nopl   (%rax)
L41:
  movsd  (%rsi,%rax,8),%xmm1
  movsd  (%rcx,%rax,8),%xmm0
  mov    -0x4(%r14,%rax,4),%edx
  add    $0x1,%rax
  mulsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm1
  sub    %r12d,%edx
  movslq %edx,%rdx
  lea    0x0(%rbp,%rdx,8),%rdx
  addsd  %xmm0,%xmm1
  movsd  (%rdx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  cmp    %rax,%rdi
  jne    L41
L80:
  add    $0x8,%r8
  add    $0x10,%r9
  cmp    %r8,%r11
  jne    L214
  mov    (%rsp),%eax
  lea    0x2(%rax,%rbx,2),%eax
  mov    %eax,(%rsp)
L196:
  mov    (%rsp),%ebx
  cmp    %ebx,0xbc(%rsp)
  jle    L198
  mov    0x160(%rsp),%rax
  mov    0xd0(%rsp),%rbx
  movslq (%rsp),%rdx
  mov    0xd8(%rsp),%esi
  lea    (%rax,%rbx,8),%r9
  mov    0x30(%rsp),%r11
  mov    0xc0(%rsp),%rax
  mov    0x118(%rsp),%rbx
  mov    0xb8(%rsp),%ebp
  lea    (%rax,%rdx,4),%rdi
  mov    0xc8(%rsp),%rax
  lea    (%rax,%rdx,8),%r8
  mov    0x114(%rsp),%eax
  sub    %edx,%eax
  add    %rdx,%rax
  lea    (%rbx,%rax,4),%r10
  mov    0x3c(%rsp),%ebx
L59:
  mov    (%rdi),%eax
  movsd  (%r9),%xmm1
  xor    %edx,%edx
  add    %r13d,%eax
  cltq
  lea    (%r15,%rax,8),%rcx
  movsd  (%rcx),%xmm0
  movapd %xmm0,%xmm2
  divsd  (%r8),%xmm2
  mulsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r9)
  test   %ebp,%ebp
  jle    L254
  nopl   (%rax)
L272:
  mov    (%r14,%rdx,4),%eax
  movsd  0x8(%rcx,%rdx,8),%xmm1
  mulsd  %xmm2,%xmm1
  sub    %ebx,%eax
  cltq
  lea    (%r11,%rax,8),%rax
  movsd  (%rax),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    %rdx,%rax
  add    $0x1,%rdx
  cmp    %rax,%rsi
  jne    L272
L254:
  add    $0x4,%rdi
  add    $0x8,%r8
  cmp    %rdi,%r10
  jne    L59
L198:
  subl   $0x1,0xd8(%rsp)
  add    $0x4,%r14
  mov    0xd8(%rsp),%eax
  subl   $0x1,0xb8(%rsp)
  cmp    %eax,0xe0(%rsp)
  jne    L93
L37:
  add    $0x128,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L267:
  movl   $0x0,(%rsp)
  mov    $0xb,%eax
  jmp    L258
L149:
  xor    %edi,%edi
  call   <exit@plt>
```

assistant: ```c
void UpdSnodes(int m, int n, int s, double diaga[], double *a, int fira[], double diagb[], double *b, int firb[], int subb[]) {
  int i, j, k, t, u, sze, delay, *ls;
  double rtemp1, rtemp2, rtemp3, rtemp4, rtemp5, rtemp6, rtemp7, rtemp8, rtemp9, rtemp10, rtemp11, rtemp12, rtemp13, rtemp14, rtemp15, rtemp16, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11, *a12, *a13, *a14, *a15, *a16, *b0;
  if (m < s)
    exit(0);
  if (m == 0 || n == 0)
    return;
  for (i = 0; i < s; ++i) {
    j = subb[i];
    u = j - subb[0];
    b0 = b + firb[u];
    delay = j + 1;
    sze = m - i - 1;
    ls = subb + i + 1;
    k = 0;
    for (; k + 15 < n; k += 16) {
      a1 = a + (fira[k + 0] + i);
      a2 = a + (fira[k + 1] + i);
      a3 = a + (fira[k + 2] + i);
      a4 = a + (fira[k + 3] + i);
      a5 = a + (fira[k + 4] + i);
      a6 = a + (fira[k + 5] + i);
      a7 = a + (fira[k + 6] + i);
      a8 = a + (fira[k + 7] + i);
      a9 = a + (fira[k + 8] + i);
      a10 = a + (fira[k + 9] + i);
      a11 = a + (fira[k + 10] + i);
      a12 = a + (fira[k + 11] + i);
      a13 = a + (fira[k + 12] + i);
      a14 = a + (fira[k + 13] + i);
      a15 = a + (fira[k + 14] + i);
      a16 = a + (fira[k + 15] + i);
      rtemp1 = *a1 / diaga[k + 0];
      rtemp2 = *a2 / diaga[k + 1];
      rtemp3 = *a3 / diaga[k + 2];
      rtemp4 = *a4 / diaga[k + 3];
      rtemp5 = *a5 / diaga[k + 4];
      rtemp6 = *a6 / diaga[k + 5];
      rtemp7 = *a7 / diaga[k + 6];
      rtemp8 = *a8 / diaga[k + 7];
      rtemp9 = *a9 / diaga[k + 8];
      rtemp10 = *a10 / diaga[k + 9];
      rtemp11 = *a11 / diaga[k + 10];
      rtemp12 = *a12 / diaga[k + 11];
      rtemp13 = *a13 / diaga[k + 12];
      rtemp14 = *a14 / diaga[k + 13];
      rtemp15 = *a15 / diaga[k + 14];
      rtemp16 = *a16 / diaga[k + 15];
      diagb[u] -= rtemp1 * (*a1) + rtemp2 * (*a2) + rtemp3 * (*a3) + rtemp4 * (*a4) + rtemp5 * (*a5) + rtemp6 * (*a6) + rtemp7 * (*a7) + rtemp8 * (*a8) + rtemp9 * (*a9) + rtemp10 * (*a10) + rtemp11 * (*a11) + rtemp12 * (*a12) + rtemp13 * (*a13) + rtemp14 * (*a14) + rtemp15 * (*a15) + rtemp16 * (*a16);
      ++a1;
      ++a2;
      ++a3;
      ++a4;
      ++a5;
      ++a6;
      ++a7;
      ++a8;
      ++a9;
      ++a10;
      ++a11;
      ++a12;
      ++a13;
      ++a14;
      ++a15;
      ++a16;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t] + rtemp2 * a2[t] + rtemp3 * a3[t] + rtemp4 * a4[t] + rtemp5 * a5[t] + rtemp6 * a6[t] + rtemp7 * a7[t] + rtemp8 * a8[t] + rtemp9 * a9[t] + rtemp10 * a10[t] + rtemp11 * a11[t] + rtemp12 * a12[t] + rtemp13 * a13[t] + rtemp14 * a14[t] + rtemp15 * a15[t] + rtemp16 * a16[t];
    }
    for (; k + 11 < n; k += 12) {
      a1 = a + (fira[k + 0] + i);
      a2 = a + (fira[k + 1] + i);
      a3 = a + (fira[k + 2] + i);
      a4 = a + (fira[k + 3] + i);
      a5 = a + (fira[k + 4] + i);
      a6 = a + (fira[k + 5] + i);
      a7 = a + (fira[k + 6] + i);
      a8 = a + (fira[k + 7] + i);
      a9 = a + (fira[k + 8] + i);
      a10 = a + (fira[k + 9] + i);
      a11 = a + (fira[k + 10] + i);
      a12 = a + (fira[k + 11] + i);
      rtemp1 = *a1 / diaga[k + 0];
      rtemp2 = *a2 / diaga[k + 1];
      rtemp3 = *a3 / diaga[k + 2];
      rtemp4 = *a4 / diaga[k + 3];
      rtemp5 = *a5 / diaga[k + 4];
      rtemp6 = *a6 / diaga[k + 5];
      rtemp7 = *a7 / diaga[k + 6];
      rtemp8 = *a8 / diaga[k + 7];
      rtemp9 = *a9 / diaga[k + 8];
      rtemp10 = *a10 / diaga[k + 9];
      rtemp11 = *a11 / diaga[k + 10];
      rtemp12 = *a12 / diaga[k + 11];
      diagb[u] -= rtemp1 * (*a1) + rtemp2 * (*a2) + rtemp3 * (*a3) + rtemp4 * (*a4) + rtemp5 * (*a5) + rtemp6 * (*a6) + rtemp7 * (*a7) + rtemp8 * (*a8) + rtemp9 * (*a9) + rtemp10 * (*a10) + rtemp11 * (*a11) + rtemp12 * (*a12);
      ++a1;
      ++a2;
      ++a3;
      ++a4;
      ++a5;
      ++a6;
      ++a7;
      ++a8;
      ++a9;
      ++a10;
      ++a11;
      ++a12;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t] + rtemp2 * a2[t] + rtemp3 * a3[t] + rtemp4 * a4[t] + rtemp5 * a5[t] + rtemp6 * a6[t] + rtemp7 * a7[t] + rtemp8 * a8[t] + rtemp9 * a9[t] + rtemp10 * a10[t] + rtemp11 * a11[t] + rtemp12 * a12[t];
    }
    for (; k + 7 < n; k += 8) {
      a1 = a + (fira[k + 0] + i);
      a2 = a + (fira[k + 1] + i);
      a3 = a + (fira[k + 2] + i);
      a4 = a + (fira[k + 3] + i);
      a5 = a + (fira[k + 4] + i);
      a6 = a + (fira[k + 5] + i);
      a7 = a + (fira[k + 6] + i);
      a8 = a + (fira[k + 7] + i);
      rtemp1 = *a1 / diaga[k + 0];
      rtemp2 = *a2 / diaga[k + 1];
      rtemp3 = *a3 / diaga[k + 2];
      rtemp4 = *a4 / diaga[k + 3];
      rtemp5 = *a5 / diaga[k + 4];
      rtemp6 = *a6 / diaga[k + 5];
      rtemp7 = *a7 / diaga[k + 6];
      rtemp8 = *a8 / diaga[k + 7];
      diagb[u] -= rtemp1 * (*a1) + rtemp2 * (*a2) + rtemp3 * (*a3) + rtemp4 * (*a4) + rtemp5 * (*a5) + rtemp6 * (*a6) + rtemp7 * (*a7) + rtemp8 * (*a8);
      ++a1;
      ++a2;
      ++a3;
      ++a4;
      ++a5;
      ++a6;
      ++a7;
      ++a8;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t] + rtemp2 * a2[t] + rtemp3 * a3[t] + rtemp4 * a4[t] + rtemp5 * a5[t] + rtemp6 * a6[t] + rtemp7 * a7[t] + rtemp8 * a8[t];
    }
    for (; k + 3 < n; k += 4) {
      a1 = a + (fira[k + 0] + i);
      a2 = a + (fira[k + 1] + i);
      a3 = a + (fira[k + 2] + i);
      a4 = a + (fira[k + 3] + i);
      rtemp1 = *a1 / diaga[k + 0];
      rtemp2 = *a2 / diaga[k + 1];
      rtemp3 = *a3 / diaga[k + 2];
      rtemp4 = *a4 / diaga[k + 3];
      diagb[u] -= rtemp1 * (*a1) + rtemp2 * (*a2) + rtemp3 * (*a3) + rtemp4 * (*a4);
      ++a1;
      ++a2;
      ++a3;
      ++a4;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t] + rtemp2 * a2[t] + rtemp3 * a3[t] + rtemp4 * a4[t];
    }
    for (; k + 1 < n; k += 2) {
      a1 = a + (fira[k + 0] + i);
      a2 = a + (fira[k + 1] + i);
      rtemp1 = *a1 / diaga[k + 0];
      rtemp2 = *a2 / diaga[k + 1];
      diagb[u] -= rtemp1 * (*a1) + rtemp2 * (*a2);
      ++a1;
      ++a2;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t] + rtemp2 * a2[t];
    }
    for (; k < n; ++k) {
      a1 = a + (fira[k + 0] + i);
      rtemp1 = *a1 / diaga[k + 0];
      diagb[u] -= rtemp1 * (*a1);
      ++a1;
      for (t = 0; t < sze; ++t)
        b0[ls[t] - delay] -= rtemp1 * a1[t];
    }
  }
}
```