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

```asm
<UpdSnodes>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x108,%rsp
  mov    %esi,0xa0(%rsp)
  mov    %rcx,0xb0(%rsp)
  mov    %r9,0xa8(%rsp)
  cmp    %edx,%edi
  jl     L78
  mov    %edi,%eax
  test   %edi,%edi
  je     L173
  mov    0xa0(%rsp),%edi
  test   %edi,%edi
  je     L173
  test   %edx,%edx
  jle    L173
  lea    -0x2(%rax),%ebx
  mov    %ebx,0xa4(%rsp)
  sub    %edx,%eax
  sub    $0x2,%eax
  mov    %eax,0xc8(%rsp)
  lea    -0x10(%rdi),%eax
  shr    $0x4,%eax
  mov    %eax,%edx
  shl    $0x6,%rdx
  mov    0xa8(%rsp),%rbx
  lea    0x40(%rbx,%rdx,1),%rsi
  mov    %rsi,0x98(%rsp)
  add    $0x1,%eax
  shl    $0x4,%eax
  mov    %eax,0xcc(%rsp)
  movq   $0x1,0xc0(%rsp)
  lea    -0x8(%rdi),%eax
  mov    %eax,0xd8(%rsp)
  lea    0x20(%rbx),%rax
  mov    %rax,0xd0(%rsp)
  lea    -0x4(%rdi),%eax
  mov    %eax,0xdc(%rsp)
  lea    0x10(%rbx),%rax
  mov    %rax,0xe0(%rsp)
  lea    -0x2(%rdi),%eax
  mov    %eax,0xf0(%rsp)
  lea    0x8(%rbx),%rax
  mov    %rax,0xe8(%rsp)
  lea    -0x1(%rdi),%eax
  mov    %eax,0xf4(%rsp)
  lea    0x4(%rbx),%rax
  mov    %rax,0xf8(%rsp)
  mov    %r8,%r15
  jmp    L49
L78:
  mov    $0x0,%edi
  call   <exit@plt>
L28:
  movl   $0x0,(%rsp)
  jmp    L251
L235:
  mov    %edx,0x20(%rsp)
  jmp    L233
L158:
  addq   $0x1,0xc0(%rsp)
  subl   $0x1,0xa4(%rsp)
  mov    0xa4(%rsp),%eax
  cmp    0xc8(%rsp),%eax
  je     L173
L49:
  mov    0xc0(%rsp),%rdi
  lea    -0x1(%rdi),%r14d
  mov    0x158(%rsp),%rax
  mov    -0x4(%rax,%rdi,4),%eax
  mov    0x158(%rsp),%rbx
  mov    %eax,%edx
  sub    (%rbx),%edx
  movslq %edx,%rbx
  mov    %rbx,0xb8(%rsp)
  mov    0x150(%rsp),%rsi
  movslq (%rsi,%rbx,4),%rdx
  mov    0x148(%rsp),%rsi
  lea    (%rsi,%rdx,8),%rsi
  mov    %rsi,0x30(%rsp)
  add    $0x1,%eax
  mov    %eax,0x90(%rsp)
  mov    0x158(%rsp),%rax
  lea    (%rax,%rdi,4),%r13
  cmpl   $0xf,0xa0(%rsp)
  jle    L28
  mov    0x140(%rsp),%rax
  lea    (%rax,%rbx,8),%rax
  mov    %rax,0x88(%rsp)
  mov    0xb0(%rsp),%rsi
  mov    0xa8(%rsp),%rcx
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%edi
  mov    %edi,0x94(%rsp)
  mov    %eax,%eax
  add    $0x2,%rax
  mov    %rax,0x40(%rsp)
L147:
  mov    %r14d,%eax
  add    (%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rdx
  mov    %rdx,0x38(%rsp)
  mov    %r14d,%eax
  add    0x4(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,(%rsp)
  mov    %r14d,%ebx
  add    0x8(%rcx),%ebx
  mov    %ebx,%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    %rdi,0x8(%rsp)
  mov    %r14d,%ebx
  add    0xc(%rcx),%ebx
  mov    %ebx,%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    %rbx,0x10(%rsp)
  mov    %r14d,%r11d
  add    0x10(%rcx),%r11d
  mov    %r11d,%eax
  cltq
  lea    (%r15,%rax,8),%r10
  mov    %r10,0x68(%rsp)
  mov    %r14d,%r10d
  add    0x14(%rcx),%r10d
  mov    %r10d,%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    %r8,0x18(%rsp)
  mov    %r14d,%r8d
  add    0x18(%rcx),%r8d
  mov    %r8d,%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    %r9,0x48(%rsp)
  mov    %r14d,%r9d
  add    0x1c(%rcx),%r9d
  mov    %r9d,%eax
  cltq
  lea    (%r15,%rax,8),%r11
  mov    %r11,0x50(%rsp)
  mov    %r14d,%r11d
  add    0x20(%rcx),%r11d
  mov    %r11d,%eax
  cltq
  lea    (%r15,%rax,8),%r12
  mov    %r14d,%r10d
  add    0x24(%rcx),%r10d
  mov    %r10d,%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    %r14d,%r8d
  add    0x28(%rcx),%r8d
  mov    %r8d,%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    %r14d,%r9d
  add    0x2c(%rcx),%r9d
  mov    %r9d,%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    %r14d,%r11d
  add    0x30(%rcx),%r11d
  mov    %r11d,%eax
  cltq
  lea    (%r15,%rax,8),%r10
  mov    %r14d,%r11d
  add    0x34(%rcx),%r11d
  mov    %r11d,%eax
  cltq
  lea    (%r15,%rax,8),%r11
  mov    %r14d,%ebp
  add    0x38(%rcx),%ebp
  mov    %ebp,%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    %r14d,%ebp
  add    0x3c(%rcx),%ebp
  mov    %ebp,%eax
  cltq
  lea    (%r15,%rax,8),%rbp
  movsd  (%rdx),%xmm1
  movapd %xmm1,%xmm3
  divsd  (%rsi),%xmm3
  movsd  %xmm3,0x20(%rsp)
  mov    (%rsp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm2
  divsd  0x8(%rsi),%xmm2
  movsd  %xmm2,0x28(%rsp)
  mov    0x8(%rsp),%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,0x58(%rsp)
  movapd %xmm6,%xmm2
  divsd  0x10(%rsi),%xmm2
  mov    0x10(%rsp),%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,0x60(%rsp)
  movapd %xmm7,%xmm3
  divsd  0x18(%rsi),%xmm3
  mov    0x68(%rsp),%rdx
  movsd  (%rdx),%xmm4
  movsd  %xmm4,0x68(%rsp)
  divsd  0x20(%rsi),%xmm4
  mov    0x18(%rsp),%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,0x70(%rsp)
  divsd  0x28(%rsi),%xmm5
  mov    0x48(%rsp),%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,0x78(%rsp)
  divsd  0x30(%rsi),%xmm6
  mov    0x50(%rsp),%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,0x80(%rsp)
  divsd  0x38(%rsi),%xmm7
  movsd  (%r12),%xmm8
  divsd  0x40(%rsi),%xmm8
  movsd  (%rdi),%xmm9
  divsd  0x48(%rsi),%xmm9
  movsd  (%r8),%xmm10
  divsd  0x50(%rsi),%xmm10
  movsd  (%r9),%xmm11
  divsd  0x58(%rsi),%xmm11
  movsd  (%r10),%xmm12
  divsd  0x60(%rsi),%xmm12
  movsd  (%r11),%xmm13
  divsd  0x68(%rsi),%xmm13
  movsd  (%rbx),%xmm14
  divsd  0x70(%rsi),%xmm14
  movsd  0x0(%rbp),%xmm15
  divsd  0x78(%rsi),%xmm15
  mulsd  0x20(%rsp),%xmm1
  mulsd  0x28(%rsp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x58(%rsp),%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x60(%rsp),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x68(%rsp),%xmm1
  mulsd  %xmm4,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x70(%rsp),%xmm0
  mulsd  %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x78(%rsp),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x80(%rsp),%xmm0
  mulsd  %xmm7,%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm8,%xmm1
  mulsd  (%r12),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm9,%xmm0
  mulsd  (%rdi),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm10,%xmm1
  mulsd  (%r8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm11,%xmm0
  mulsd  (%r9),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm12,%xmm1
  mulsd  (%r10),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm13,%xmm0
  mulsd  (%r11),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm14,%xmm1
  mulsd  (%rbx),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm15,%xmm0
  mulsd  0x0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    0x88(%rsp),%rax
  movsd  (%rax),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rax)
  cmpl   $0x0,0x94(%rsp)
  jle    L275
  mov    $0x1,%eax
  mov    %rcx,0x58(%rsp)
  mov    %rsi,0x60(%rsp)
  mov    0x48(%rsp),%rsi
  mov    %r14d,0x48(%rsp)
  mov    0x50(%rsp),%r14
  mov    %r15,0x50(%rsp)
  mov    %rdx,%r15
L91:
  mov    -0x4(%r13,%rax,4),%edx
  sub    0x90(%rsp),%edx
  movslq %edx,%rdx
  mov    0x30(%rsp),%rcx
  lea    (%rcx,%rdx,8),%rdx
  mov    0x38(%rsp),%rcx
  movsd  0x20(%rsp),%xmm0
  mulsd  (%rcx,%rax,8),%xmm0
  mov    (%rsp),%rcx
  movsd  0x28(%rsp),%xmm1
  mulsd  (%rcx,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  mov    0x8(%rsp),%rcx
  movapd %xmm2,%xmm0
  mulsd  (%rcx,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    0x10(%rsp),%rcx
  movapd %xmm3,%xmm1
  mulsd  (%rcx,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  mulsd  (%r15,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm5,%xmm1
  mov    0x18(%rsp),%rcx
  mulsd  (%rcx,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  mulsd  (%rsi,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm7,%xmm1
  mulsd  (%r14,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm8,%xmm0
  mulsd  (%r12,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm9,%xmm1
  mulsd  (%rdi,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm10,%xmm0
  mulsd  (%r8,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm11,%xmm1
  mulsd  (%r9,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm12,%xmm0
  mulsd  (%r10,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm13,%xmm1
  mulsd  (%r11,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movapd %xmm14,%xmm0
  mulsd  (%rbx,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm15,%xmm1
  mulsd  0x0(%rbp,%rax,8),%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rdx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  add    $0x1,%rax
  cmp    0x40(%rsp),%rax
  jne    L91
  mov    0x58(%rsp),%rcx
  mov    0x60(%rsp),%rsi
  mov    0x48(%rsp),%r14d
  mov    0x50(%rsp),%r15
L275:
  add    $0x40,%rcx
  sub    $0xffffffffffffff80,%rsi
  cmp    0x98(%rsp),%rcx
  jne    L147
  mov    0xcc(%rsp),%eax
  mov    %eax,(%rsp)
L251:
  mov    (%rsp),%edi
  lea    0xb(%rdi),%eax
  cmp    %eax,0xa0(%rsp)
  jle    L312
  mov    0x140(%rsp),%rax
  mov    0xb8(%rsp),%rbx
  lea    (%rax,%rbx,8),%rax
  mov    %rax,0x48(%rsp)
  movslq %edi,%rax
  mov    0xa8(%rsp),%rbx
  lea    (%rbx,%rax,4),%rsi
  mov    0xb0(%rsp),%rbx
  lea    (%rbx,%rax,8),%rcx
  mov    %edi,0x20(%rsp)
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%edi
  mov    %edi,0x50(%rsp)
  mov    %eax,%eax
  add    $0x2,%rax
  mov    %rax,0x8(%rsp)
  mov    %r14d,0x28(%rsp)
L233:
  mov    0x28(%rsp),%edi
  mov    %edi,%eax
  add    (%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r14
  mov    %edi,%eax
  add    0x4(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rdx
  mov    %rdx,0x18(%rsp)
  mov    %edi,%eax
  add    0x8(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rax
  mov    %rax,(%rsp)
  mov    %edi,%edx
  mov    %edi,%eax
  add    0xc(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    %rbx,0x10(%rsp)
  mov    %edi,%eax
  add    0x10(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    %edx,%eax
  add    0x14(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    %edx,%eax
  add    0x18(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    %edx,%eax
  add    0x1c(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r10
  mov    %edx,%eax
  add    0x20(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r11
  mov    %edx,%eax
  add    0x24(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    %edx,%eax
  add    0x28(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%rbp
  mov    %edx,%eax
  add    0x2c(%rsi),%eax
  cltq
  lea    (%r15,%rax,8),%r12
  movsd  (%r14),%xmm15
  movapd %xmm15,%xmm0
  divsd  (%rcx),%xmm0
  mov    0x18(%rsp),%rdx
  movsd  (%rdx),%xmm14
  movapd %xmm14,%xmm1
  divsd  0x8(%rcx),%xmm1
  mov    (%rsp),%rax
  movsd  (%rax),%xmm13
  movapd %xmm13,%xmm2
  divsd  0x10(%rcx),%xmm2
  mov    0x10(%rsp),%rax
  movsd  (%rax),%xmm12
  movapd %xmm12,%xmm3
  divsd  0x18(%rcx),%xmm3
  movsd  (%rdi),%xmm4
  divsd  0x20(%rcx),%xmm4
  movsd  (%r8),%xmm5
  divsd  0x28(%rcx),%xmm5
  movsd  (%r9),%xmm6
  divsd  0x30(%rcx),%xmm6
  movsd  (%r10),%xmm7
  divsd  0x38(%rcx),%xmm7
  movsd  (%r11),%xmm8
  divsd  0x40(%rcx),%xmm8
  movsd  (%rbx),%xmm9
  divsd  0x48(%rcx),%xmm9
  movsd  0x0(%rbp),%xmm10
  divsd  0x50(%rcx),%xmm10
  movsd  (%r12),%xmm11
  divsd  0x58(%rcx),%xmm11
  mulsd  %xmm0,%xmm15
  mulsd  %xmm1,%xmm14
  addsd  %xmm15,%xmm14
  mulsd  %xmm2,%xmm13
  addsd  %xmm14,%xmm13
  mulsd  %xmm3,%xmm12
  addsd  %xmm13,%xmm12
  movapd %xmm4,%xmm13
  mulsd  (%rdi),%xmm13
  addsd  %xmm12,%xmm13
  movapd %xmm5,%xmm12
  mulsd  (%r8),%xmm12
  addsd  %xmm13,%xmm12
  movapd %xmm6,%xmm13
  mulsd  (%r9),%xmm13
  addsd  %xmm12,%xmm13
  movapd %xmm7,%xmm12
  mulsd  (%r10),%xmm12
  addsd  %xmm13,%xmm12
  movapd %xmm8,%xmm13
  mulsd  (%r11),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm9,%xmm13
  mulsd  (%rbx),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm10,%xmm13
  mulsd  0x0(%rbp),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm11,%xmm13
  mulsd  (%r12),%xmm13
  addsd  %xmm13,%xmm12
  mov    0x48(%rsp),%rax
  movsd  (%rax),%xmm13
  subsd  %xmm12,%xmm13
  movsd  %xmm13,(%rax)
  cmpl   $0x0,0x50(%rsp)
  jle    L162
  mov    $0x1,%eax
  mov    %rsi,0x18(%rsp)
  mov    (%rsp),%rsi
  mov    %rcx,0x38(%rsp)
  mov    %rdx,(%rsp)
  mov    %r15,0x40(%rsp)
  mov    0x10(%rsp),%r15
L100:
  mov    -0x4(%r13,%rax,4),%edx
  sub    0x90(%rsp),%edx
  movslq %edx,%rdx
  mov    0x30(%rsp),%rcx
  lea    (%rcx,%rdx,8),%rdx
  movapd %xmm0,%xmm12
  mulsd  (%r14,%rax,8),%xmm12
  movapd %xmm1,%xmm13
  mov    (%rsp),%rcx
  mulsd  (%rcx,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm2,%xmm13
  mulsd  (%rsi,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm3,%xmm13
  mulsd  (%r15,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm4,%xmm13
  mulsd  (%rdi,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm5,%xmm13
  mulsd  (%r8,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm6,%xmm13
  mulsd  (%r9,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm7,%xmm13
  mulsd  (%r10,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm8,%xmm13
  mulsd  (%r11,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm9,%xmm13
  mulsd  (%rbx,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm10,%xmm13
  mulsd  0x0(%rbp,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movapd %xmm11,%xmm13
  mulsd  (%r12,%rax,8),%xmm13
  addsd  %xmm13,%xmm12
  movsd  (%rdx),%xmm13
  subsd  %xmm12,%xmm13
  movsd  %xmm13,(%rdx)
  add    $0x1,%rax
  cmp    0x8(%rsp),%rax
  jne    L100
  mov    0x18(%rsp),%rsi
  mov    0x38(%rsp),%rcx
  mov    0x40(%rsp),%r15
L162:
  mov    0x20(%rsp),%eax
  lea    0xc(%rax),%edx
  add    $0x30,%rsi
  add    $0x60,%rcx
  add    $0x17,%eax
  cmp    %eax,0xa0(%rsp)
  jg     L235
  mov    %edx,(%rsp)
  mov    0x28(%rsp),%r14d
L312:
  mov    (%rsp),%edi
  lea    0x7(%rdi),%eax
  cmp    %eax,0xa0(%rsp)
  jle    L82
  mov    0x140(%rsp),%rax
  mov    0xb8(%rsp),%rbx
  lea    (%rax,%rbx,8),%rax
  mov    %rax,0x18(%rsp)
  movslq %edi,%rax
  mov    0xa8(%rsp),%rbx
  lea    (%rbx,%rax,4),%rcx
  mov    0xb0(%rsp),%rbx
  lea    (%rbx,%rax,8),%r12
  mov    0xd8(%rsp),%edx
  sub    %edi,%edx
  shr    $0x3,%edx
  mov    %edx,0x40(%rsp)
  mov    %edx,%edx
  lea    (%rax,%rdx,8),%rax
  mov    0xd0(%rsp),%rdi
  lea    (%rdi,%rax,4),%rax
  mov    %rax,0x20(%rsp)
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%edi
  mov    %edi,0x28(%rsp)
  mov    %eax,%eax
  add    $0x2,%rax
  mov    %rax,0x38(%rsp)
L157:
  mov    %r14d,%eax
  add    (%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rsi
  mov    %r14d,%eax
  add    0x4(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    %r14d,%eax
  add    0x8(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%r8
  mov    %r14d,%eax
  add    0xc(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%r9
  mov    %r14d,%eax
  add    0x10(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%r10
  mov    %r14d,%eax
  add    0x14(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%r11
  mov    %r14d,%eax
  add    0x18(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rbx
  mov    %r14d,%eax
  add    0x1c(%rcx),%eax
  cltq
  lea    (%r15,%rax,8),%rbp
  movsd  (%rsi),%xmm0
  movapd %xmm0,%xmm1
  divsd  (%r12),%xmm1
  movsd  (%rdi),%xmm15
  movapd %xmm15,%xmm2
  divsd  0x8(%r12),%xmm2
  movsd  (%r8),%xmm14
  movapd %xmm14,%xmm3
  divsd  0x10(%r12),%xmm3
  movsd  (%r9),%xmm13
  movapd %xmm13,%xmm4
  divsd  0x18(%r12),%xmm4
  movsd  (%r10),%xmm12
  movapd %xmm12,%xmm5
  divsd  0x20(%r12),%xmm5
  movsd  (%r11),%xmm11
  movapd %xmm11,%xmm6
  divsd  0x28(%r12),%xmm6
  movsd  (%rbx),%xmm10
  movapd %xmm10,%xmm7
  divsd  0x30(%r12),%xmm7
  movsd  0x0(%rbp),%xmm9
  movapd %xmm9,%xmm8
  divsd  0x38(%r12),%xmm8
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm15
  addsd  %xmm15,%xmm0
  mulsd  %xmm3,%xmm14
  addsd  %xmm14,%xmm0
  mulsd  %xmm4,%xmm13
  addsd  %xmm13,%xmm0
  mulsd  %xmm5,%xmm12
  addsd  %xmm12,%xmm0
  mulsd  %xmm6,%xmm11
  addsd  %xmm11,%xmm0
  mulsd  %xmm7,%xmm10
  addsd  %xmm10,%xmm0
  mulsd  %xmm8,%xmm9
  addsd  %xmm9,%xmm0
  mov    0x18(%rsp),%rax
  movsd  (%rax),%xmm9
  subsd  %xmm0,%xmm9
  movsd  %xmm9,(%rax)
  cmpl   $0x0,0x28(%rsp)
  jle    L295
  mov    $0x1,%eax
  mov    %rcx,0x8(%rsp)
  mov    0x30(%rsp),%rcx
  mov    %r12,0x10(%rsp)
  mov    0x38(%rsp),%r12
L1:
  mov    -0x4(%r13,%rax,4),%edx
  sub    0x90(%rsp),%edx
  movslq %edx,%rdx
  lea    (%rcx,%rdx,8),%rdx
  movapd %xmm1,%xmm0
  mulsd  (%rsi,%rax,8),%xmm0
  movapd %xmm2,%xmm9
  mulsd  (%rdi,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm3,%xmm9
  mulsd  (%r8,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm4,%xmm9
  mulsd  (%r9,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm5,%xmm9
  mulsd  (%r10,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm6,%xmm9
  mulsd  (%r11,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm7,%xmm9
  mulsd  (%rbx,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm8,%xmm9
  mulsd  0x0(%rbp,%rax,8),%xmm9
  addsd  %xmm9,%xmm0
  movsd  (%rdx),%xmm9
  subsd  %xmm0,%xmm9
  movsd  %xmm9,(%rdx)
  add    $0x1,%rax
  cmp    %r12,%rax
  jne    L1
  mov    0x8(%rsp),%rcx
  mov    0x10(%rsp),%r12
L295:
  add    $0x20,%rcx
  add    $0x40,%r12
  cmp    0x20(%rsp),%rcx
  jne    L157
  mov    (%rsp),%eax
  mov    0x40(%rsp),%edi
  lea    0x8(%rax,%rdi,8),%eax
  mov    %eax,(%rsp)
L82:
  mov    (%rsp),%edi
  lea    0x3(%rdi),%eax
  cmp    %eax,0xa0(%rsp)
  jle    L190
  mov    0x140(%rsp),%rax
  mov    0xb8(%rsp),%rbx
  lea    (%rax,%rbx,8),%rbx
  movslq %edi,%rax
  mov    0xa8(%rsp),%rsi
  lea    (%rsi,%rax,4),%r10
  mov    0xb0(%rsp),%rsi
  lea    (%rsi,%rax,8),%r11
  mov    0xdc(%rsp),%edx
  sub    %edi,%edx
  shr    $0x2,%edx
  mov    %edx,0x10(%rsp)
  mov    %edx,%edx
  lea    (%rax,%rdx,4),%rax
  mov    0xe0(%rsp),%rdi
  lea    (%rdi,%rax,4),%r12
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%ebp
  mov    %eax,%r9d
  add    $0x2,%r9
  mov    %r12,0x8(%rsp)
  mov    0x30(%rsp),%r12
L270:
  mov    %r14d,%eax
  add    (%r10),%eax
  cltq
  lea    (%r15,%rax,8),%rcx
  mov    %r14d,%eax
  add    0x4(%r10),%eax
  cltq
  lea    (%r15,%rax,8),%rsi
  mov    %r14d,%eax
  add    0x8(%r10),%eax
  cltq
  lea    (%r15,%rax,8),%rdi
  mov    %r14d,%eax
  add    0xc(%r10),%eax
  cltq
  lea    (%r15,%rax,8),%r8
  movsd  (%rcx),%xmm0
  movapd %xmm0,%xmm2
  divsd  (%r11),%xmm2
  movsd  (%rsi),%xmm7
  movapd %xmm7,%xmm3
  divsd  0x8(%r11),%xmm3
  movsd  (%rdi),%xmm6
  movapd %xmm6,%xmm4
  divsd  0x10(%r11),%xmm4
  movsd  (%r8),%xmm1
  movapd %xmm1,%xmm5
  divsd  0x18(%r11),%xmm5
  mulsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm7
  addsd  %xmm7,%xmm0
  mulsd  %xmm4,%xmm6
  addsd  %xmm6,%xmm0
  mulsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rbx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rbx)
  test   %ebp,%ebp
  jle    L58
  mov    $0x1,%eax
L140:
  mov    -0x4(%r13,%rax,4),%edx
  sub    0x90(%rsp),%edx
  movslq %edx,%rdx
  lea    (%r12,%rdx,8),%rdx
  movapd %xmm2,%xmm0
  mulsd  (%rcx,%rax,8),%xmm0
  movapd %xmm3,%xmm1
  mulsd  (%rsi,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  (%rdi,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm5,%xmm1
  mulsd  (%r8,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rdx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdx)
  add    $0x1,%rax
  cmp    %r9,%rax
  jne    L140
L58:
  add    $0x10,%r10
  add    $0x20,%r11
  cmp    0x8(%rsp),%r10
  jne    L270
  mov    (%rsp),%eax
  mov    0x10(%rsp),%edi
  lea    0x4(%rax,%rdi,4),%eax
  mov    %eax,(%rsp)
L190:
  mov    (%rsp),%edi
  lea    0x1(%rdi),%eax
  cmp    %eax,0xa0(%rsp)
  jle    L212
  mov    0x140(%rsp),%rax
  mov    0xb8(%rsp),%rbx
  lea    (%rax,%rbx,8),%r10
  movslq %edi,%rax
  mov    0xa8(%rsp),%rbx
  lea    (%rbx,%rax,4),%r8
  mov    0xb0(%rsp),%rbx
  lea    (%rbx,%rax,8),%r9
  mov    0xf0(%rsp),%edx
  sub    %edi,%edx
  shr    %edx
  mov    %edx,%ebp
  mov    %edx,%edx
  lea    (%rax,%rdx,2),%rax
  mov    0xe8(%rsp),%rdi
  lea    (%rdi,%rax,4),%rbx
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%r11d
  mov    %eax,%edi
  add    $0x2,%rdi
  mov    0x30(%rsp),%r12
L119:
  mov    %r14d,%eax
  add    (%r8),%eax
  cltq
  lea    (%r15,%rax,8),%rcx
  mov    %r14d,%eax
  add    0x4(%r8),%eax
  cltq
  lea    (%r15,%rax,8),%rsi
  movsd  (%rcx),%xmm0
  movapd %xmm0,%xmm2
  divsd  (%r9),%xmm2
  movsd  (%rsi),%xmm1
  movapd %xmm1,%xmm3
  divsd  0x8(%r9),%xmm3
  mulsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%r10),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r10)
  test   %r11d,%r11d
  jle    L90
  mov    $0x1,%eax
L274:
  mov    -0x4(%r13,%rax,4),%edx
  sub    0x90(%rsp),%edx
  movslq %edx,%rdx
  lea    (%r12,%rdx,8),%rdx
  movapd %xmm2,%xmm1
  mulsd  (%rcx,%rax,8),%xmm1
  movapd %xmm3,%xmm0
  mulsd  (%rsi,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  (%rdx),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  add    $0x1,%rax
  cmp    %rdi,%rax
  jne    L274
L90:
  add    $0x8,%r8
  add    $0x10,%r9
  cmp    %rbx,%r8
  jne    L119
  mov    (%rsp),%eax
  lea    0x2(%rax,%rbp,2),%eax
  mov    %eax,(%rsp)
L212:
  mov    (%rsp),%ebx
  cmp    %ebx,0xa0(%rsp)
  jle    L158
  mov    0x140(%rsp),%rax
  mov    0xb8(%rsp),%rdi
  lea    (%rax,%rdi,8),%r9
  movslq %ebx,%rdx
  mov    0xa8(%rsp),%rax
  lea    (%rax,%rdx,4),%rdi
  mov    0xb0(%rsp),%rax
  lea    (%rax,%rdx,8),%r8
  mov    0xf4(%rsp),%eax
  sub    %ebx,%eax
  add    %rdx,%rax
  mov    0xf8(%rsp),%rbx
  lea    (%rbx,%rax,4),%r11
  mov    0xa4(%rsp),%eax
  lea    0x1(%rax),%r10d
  mov    %eax,%esi
  mov    0x30(%rsp),%rbx
  mov    0x90(%rsp),%ebp
L271:
  mov    %r14d,%eax
  add    (%rdi),%eax
  cltq
  lea    (%r15,%rax,8),%rcx
  movsd  (%rcx),%xmm0
  movapd %xmm0,%xmm2
  divsd  (%r8),%xmm2
  mulsd  %xmm2,%xmm0
  movsd  (%r9),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r9)
  test   %r10d,%r10d
  jle    L318
  mov    $0x0,%edx
L323:
  mov    0x0(%r13,%rdx,4),%eax
  sub    %ebp,%eax
  cltq
  lea    (%rbx,%rax,8),%rax
  movapd %xmm2,%xmm1
  mulsd  0x8(%rcx,%rdx,8),%xmm1
  movsd  (%rax),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    %rdx,%rax
  add    $0x1,%rdx
  cmp    %rsi,%rax
  jne    L323
L318:
  add    $0x4,%rdi
  add    $0x8,%r8
  cmp    %r11,%rdi
  jne    L271
  jmp    L158
L173:
  add    $0x108,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

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];
    }
  }
}
```