user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<bn_sqr_comba8>:
  endbr64
  push   %rbx
  mov    %rsi,%rax
  mov    (%rsi),%rcx
  mov    %ecx,%edx
  shr    $0x20,%rcx
  mov    %rdx,%rsi
  imul   %rcx,%rsi
  imul   %rdx,%rdx
  imul   %rcx,%rcx
  mov    %rsi,%r8
  shr    $0x1f,%r8
  shl    $0x21,%rsi
  add    %rsi,%rdx
  adc    %r8,%rcx
  mov    %rdx,(%rdi)
  mov    0x8(%rax),%rsi
  mov    %esi,%edx
  shr    $0x20,%rsi
  mov    (%rax),%r10
  mov    %r10d,%r9d
  shr    $0x20,%r10
  mov    %rdx,%r8
  imul   %r10,%r8
  imul   %r9,%rdx
  imul   %rsi,%r9
  imul   %r10,%rsi
  add    %r9,%r8
  jae    L646
  movabs $0x100000000,%r9
  add    %r9,%rsi
L646:
  mov    %r8,%r9
  shr    $0x20,%r9
  shl    $0x20,%r8
  add    %r8,%rdx
  adc    %r9,%rsi
  mov    %rsi,%r10
  shr    $0x3f,%r10
  mov    %r10,%r8
  mov    %rdx,%r9
  shr    $0x3f,%r9
  lea    (%r9,%rsi,2),%r9
  add    %rdx,%rdx
  add    %rdx,%rcx
  jae    L58
  add    $0x1,%r10
  add    $0x1,%r9
  cmove  %r10,%r8
L58:
  mov    %rcx,0x8(%rdi)
  mov    0x8(%rax),%rdx
  mov    %edx,%ecx
  shr    $0x20,%rdx
  mov    %rcx,%rsi
  imul   %rdx,%rsi
  imul   %rcx,%rcx
  imul   %rdx,%rdx
  mov    %rsi,%r10
  shr    $0x1f,%r10
  shl    $0x21,%rsi
  add    %rsi,%rcx
  adc    %r10,%rdx
  add    %rcx,%r9
  adc    $0x0,%rdx
  add    %r8,%rdx
  setb   %sil
  movzbl %sil,%esi
  mov    0x10(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L504
  movabs $0x100000000,%r11
  add    %r11,%r8
L504:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%r8
  mov    %r8,%r10
  shr    $0x3f,%r10
  add    %r10,%rsi
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r8,2),%r8
  add    %rcx,%rcx
  add    %rcx,%r9
  jae    L772
  add    $0x1,%r8
  jne    L772
  add    $0x1,%rsi
  jmp    L853
L772:
  add    %r8,%rdx
  adc    $0x0,%rsi
L853:
  mov    %r9,0x10(%rdi)
  mov    0x18(%rax),%r9
  mov    %r9d,%ecx
  shr    $0x20,%r9
  mov    (%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rcx,%r8
  imul   %r11,%r8
  imul   %r10,%rcx
  imul   %r9,%r10
  imul   %r11,%r9
  add    %r10,%r8
  jae    L19
  movabs $0x100000000,%r10
  add    %r10,%r9
L19:
  mov    %r8,%r10
  shr    $0x20,%r10
  shl    $0x20,%r8
  add    %r8,%rcx
  adc    %r10,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  mov    %r10,%r8
  mov    %rcx,%r11
  shr    $0x3f,%r11
  lea    (%r11,%r9,2),%r9
  add    %rcx,%rcx
  add    %rcx,%rdx
  jae    L846
  add    $0x1,%r9
  jne    L846
  lea    0x1(%r10),%r8
  jmp    L470
L846:
  add    $0x1,%r10
  add    %r9,%rsi
  cmovb  %r10,%r8
L470:
  mov    0x10(%rax),%r9
  mov    %r9d,%ecx
  shr    $0x20,%r9
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L699
  movabs $0x100000000,%r11
  add    %r11,%r9
L699:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%r8
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %rcx,%rcx
  add    %rcx,%rdx
  jae    L18
  add    $0x1,%r9
  jne    L18
  add    $0x1,%r8
  jmp    L90
L18:
  add    %r9,%rsi
  adc    $0x0,%r8
L90:
  mov    %rdx,0x18(%rdi)
  mov    0x10(%rax),%rdx
  mov    %edx,%ecx
  shr    $0x20,%rdx
  mov    %rcx,%r9
  imul   %rdx,%r9
  imul   %rcx,%rcx
  imul   %rdx,%rdx
  mov    %r9,%r10
  shr    $0x1f,%r10
  shl    $0x21,%r9
  add    %r9,%rcx
  adc    %r10,%rdx
  add    %rsi,%rcx
  mov    %rcx,%r9
  adc    $0x0,%rdx
  add    %r8,%rdx
  setb   %sil
  movzbl %sil,%esi
  mov    0x18(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L50
  movabs $0x100000000,%r11
  add    %r11,%r8
L50:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%r8
  mov    %r8,%r10
  shr    $0x3f,%r10
  add    %r10,%rsi
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r8,2),%r8
  add    %rcx,%rcx
  add    %r9,%rcx
  jae    L790
  add    $0x1,%r8
  jne    L790
  add    $0x1,%rsi
  jmp    L256
L790:
  add    %r8,%rdx
  adc    $0x0,%rsi
L256:
  mov    0x20(%rax),%r9
  mov    %r9d,%r8d
  shr    $0x20,%r9
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r8,%r10
  imul   %rbx,%r10
  imul   %r11,%r8
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L478
  movabs $0x100000000,%r11
  add    %r11,%r9
L478:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r8
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%rsi
  mov    %r8,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %r8,%r8
  add    %r8,%rcx
  jae    L643
  add    $0x1,%r9
  jne    L643
  add    $0x1,%rsi
  jmp    L331
L643:
  add    %r9,%rdx
  adc    $0x0,%rsi
L331:
  mov    %rcx,0x20(%rdi)
  mov    0x28(%rax),%r9
  mov    %r9d,%ecx
  shr    $0x20,%r9
  mov    (%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rcx,%r8
  imul   %r11,%r8
  imul   %r10,%rcx
  imul   %r9,%r10
  imul   %r11,%r9
  add    %r10,%r8
  jae    L629
  movabs $0x100000000,%r10
  add    %r10,%r9
L629:
  mov    %r8,%r10
  shr    $0x20,%r10
  shl    $0x20,%r8
  add    %r8,%rcx
  adc    %r10,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  mov    %r10,%r8
  mov    %rcx,%r11
  shr    $0x3f,%r11
  lea    (%r11,%r9,2),%r9
  add    %rcx,%rcx
  add    %rdx,%rcx
  jae    L395
  add    $0x1,%r9
  jne    L395
  lea    0x1(%r10),%r8
  jmp    L322
L395:
  add    $0x1,%r10
  add    %r9,%rsi
  cmovb  %r10,%r8
L322:
  mov    0x20(%rax),%r9
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rdx,%r10
  imul   %rbx,%r10
  imul   %r11,%rdx
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L836
  movabs $0x100000000,%r11
  add    %r11,%r9
L836:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rdx
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%r8
  mov    %rdx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %rdx,%rdx
  add    %rdx,%rcx
  jae    L914
  add    $0x1,%r9
  jne    L914
  add    $0x1,%r8
  jmp    L372
L914:
  add    %r9,%rsi
  adc    $0x0,%r8
L372:
  mov    0x18(%rax),%r9
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rdx,%r10
  imul   %rbx,%r10
  imul   %r11,%rdx
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L684
  movabs $0x100000000,%r11
  add    %r11,%r9
L684:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rdx
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%r8
  mov    %rdx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %rdx,%rdx
  add    %rdx,%rcx
  jae    L115
  add    $0x1,%r9
  jne    L115
  add    $0x1,%r8
  jmp    L46
L115:
  add    %r9,%rsi
  adc    $0x0,%r8
L46:
  mov    %rcx,0x28(%rdi)
  mov    0x18(%rax),%rdx
  mov    %edx,%ecx
  shr    $0x20,%rdx
  mov    %rcx,%r9
  imul   %rdx,%r9
  imul   %rcx,%rcx
  imul   %rdx,%rdx
  mov    %r9,%r10
  shr    $0x1f,%r10
  shl    $0x21,%r9
  add    %r9,%rcx
  adc    %r10,%rdx
  add    %rsi,%rcx
  mov    %rcx,%r9
  adc    $0x0,%rdx
  add    %r8,%rdx
  setb   %sil
  movzbl %sil,%esi
  mov    0x20(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L141
  movabs $0x100000000,%r11
  add    %r11,%r8
L141:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%r8
  mov    %r8,%r10
  shr    $0x3f,%r10
  add    %r10,%rsi
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r8,2),%r11
  lea    (%rcx,%rcx,1),%r8
  add    %r8,%r9
  mov    %r9,%r10
  jae    L938
  add    $0x1,%r11
  jne    L938
  add    $0x1,%rsi
  jmp    L448
L938:
  add    %r11,%rdx
  adc    $0x0,%rsi
L448:
  mov    0x28(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r9
  imul   %rbx,%r9
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L435
  movabs $0x100000000,%r11
  add    %r11,%r8
L435:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %r9,%rcx
  adc    %r11,%r8
  mov    %r8,%r9
  shr    $0x3f,%r9
  add    %r9,%rsi
  mov    %rcx,%r9
  shr    $0x3f,%r9
  lea    (%r9,%r8,2),%r9
  lea    (%rcx,%rcx,1),%r8
  add    %r8,%r10
  jae    L133
  add    $0x1,%r9
  jne    L133
  add    $0x1,%rsi
  jmp    L581
L133:
  add    %r9,%rdx
  adc    $0x0,%rsi
L581:
  mov    0x30(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r9
  imul   %rbx,%r9
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L546
  movabs $0x100000000,%r11
  add    %r11,%r8
L546:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %r9,%rcx
  adc    %r11,%r8
  mov    %r8,%r9
  shr    $0x3f,%r9
  add    %r9,%rsi
  mov    %rcx,%r9
  shr    $0x3f,%r9
  lea    (%r9,%r8,2),%r8
  add    %rcx,%rcx
  add    %rcx,%r10
  jae    L991
  add    $0x1,%r8
  jne    L991
  add    $0x1,%rsi
  jmp    L48
L991:
  add    %r8,%rdx
  adc    $0x0,%rsi
L48:
  mov    %r10,0x30(%rdi)
  mov    0x38(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    (%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rcx,%r9
  imul   %r11,%r9
  imul   %r10,%rcx
  imul   %r8,%r10
  imul   %r11,%r8
  add    %r10,%r9
  jae    L606
  movabs $0x100000000,%r10
  add    %r10,%r8
L606:
  mov    %r9,%r10
  shr    $0x20,%r10
  shl    $0x20,%r9
  add    %r9,%rcx
  adc    %r10,%r8
  mov    %r8,%r10
  shr    $0x3f,%r10
  mov    %r10,%r9
  mov    %rcx,%r11
  shr    $0x3f,%r11
  lea    (%r11,%r8,2),%r8
  add    %rcx,%rcx
  add    %rcx,%rdx
  jae    L732
  add    $0x1,%r8
  jne    L732
  lea    0x1(%r10),%r9
  jmp    L450
L732:
  add    $0x1,%r10
  add    %r8,%rsi
  cmovb  %r10,%r9
L450:
  mov    0x30(%rax),%r10
  mov    %r10d,%r8d
  shr    $0x20,%r10
  mov    0x8(%rax),%rbx
  mov    %ebx,%ecx
  shr    $0x20,%rbx
  mov    %r8,%r11
  imul   %rbx,%r11
  imul   %rcx,%r8
  imul   %r10,%rcx
  imul   %rbx,%r10
  add    %rcx,%r11
  jae    L460
  movabs $0x100000000,%rcx
  add    %rcx,%r10
L460:
  mov    %r11,%rcx
  shr    $0x20,%rcx
  shl    $0x20,%r11
  add    %r11,%r8
  adc    %rcx,%r10
  mov    %r10,%rcx
  shr    $0x3f,%rcx
  add    %rcx,%r9
  mov    %r8,%rcx
  shr    $0x3f,%rcx
  lea    (%rcx,%r10,2),%rcx
  add    %r8,%r8
  add    %r8,%rdx
  jae    L1092
  add    $0x1,%rcx
  jne    L1092
  add    $0x1,%r9
  jmp    L4
L1092:
  add    %rcx,%rsi
  adc    $0x0,%r9
L4:
  mov    0x28(%rax),%r10
  mov    %r10d,%r8d
  shr    $0x20,%r10
  mov    0x10(%rax),%rbx
  mov    %ebx,%ecx
  shr    $0x20,%rbx
  mov    %r8,%r11
  imul   %rbx,%r11
  imul   %rcx,%r8
  imul   %r10,%rcx
  imul   %rbx,%r10
  add    %rcx,%r11
  jae    L60
  movabs $0x100000000,%rcx
  add    %rcx,%r10
L60:
  mov    %r11,%rcx
  shr    $0x20,%rcx
  shl    $0x20,%r11
  add    %r11,%r8
  adc    %rcx,%r10
  mov    %r10,%rcx
  shr    $0x3f,%rcx
  add    %rcx,%r9
  mov    %r8,%rcx
  shr    $0x3f,%rcx
  lea    (%rcx,%r10,2),%rcx
  add    %r8,%r8
  add    %r8,%rdx
  jae    L275
  add    $0x1,%rcx
  jne    L275
  add    $0x1,%r9
  jmp    L627
L275:
  add    %rcx,%rsi
  adc    $0x0,%r9
L627:
  mov    0x20(%rax),%r8
  mov    %r8d,%ecx
  shr    $0x20,%r8
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L877
  movabs $0x100000000,%r11
  add    %r11,%r8
L877:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%r8
  mov    %r8,%r10
  shr    $0x3f,%r10
  add    %r10,%r9
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r8,2),%r8
  add    %rcx,%rcx
  add    %rcx,%rdx
  jae    L594
  add    $0x1,%r8
  jne    L594
  add    $0x1,%r9
  jmp    L382
L594:
  add    %r8,%rsi
  adc    $0x0,%r9
L382:
  mov    %rdx,0x38(%rdi)
  mov    0x20(%rax),%rdx
  mov    %edx,%ecx
  shr    $0x20,%rdx
  mov    %rcx,%r8
  imul   %rdx,%r8
  imul   %rcx,%rcx
  imul   %rdx,%rdx
  mov    %r8,%r10
  shr    $0x1f,%r10
  shl    $0x21,%r8
  add    %r8,%rcx
  adc    %r10,%rdx
  add    %rsi,%rcx
  mov    %rcx,%r10
  adc    $0x0,%rdx
  add    %r9,%rdx
  setb   %cl
  movzbl %cl,%ecx
  mov    0x28(%rax),%r8
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rsi,%r9
  imul   %rbx,%r9
  imul   %r11,%rsi
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L951
  movabs $0x100000000,%r11
  add    %r11,%r8
L951:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %r9,%rsi
  adc    %r11,%r8
  mov    %r8,%r9
  shr    $0x3f,%r9
  add    %r9,%rcx
  mov    %rsi,%r9
  shr    $0x3f,%r9
  lea    (%r9,%r8,2),%r8
  add    %rsi,%rsi
  add    %rsi,%r10
  jae    L1074
  add    $0x1,%r8
  jne    L1074
  add    $0x1,%rcx
  jmp    L667
L1074:
  add    %r8,%rdx
  adc    $0x0,%rcx
L667:
  mov    0x30(%rax),%r8
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rsi,%r9
  imul   %rbx,%r9
  imul   %r11,%rsi
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L745
  movabs $0x100000000,%r11
  add    %r11,%r8
L745:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %r9,%rsi
  adc    %r11,%r8
  mov    %r8,%r9
  shr    $0x3f,%r9
  add    %r9,%rcx
  mov    %rsi,%r9
  shr    $0x3f,%r9
  lea    (%r9,%r8,2),%r9
  lea    (%rsi,%rsi,1),%r8
  add    %r8,%r10
  jae    L578
  add    $0x1,%r9
  jne    L578
  add    $0x1,%rcx
  jmp    L484
L578:
  add    %r9,%rdx
  adc    $0x0,%rcx
L484:
  mov    0x38(%rax),%r8
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rsi,%r9
  imul   %rbx,%r9
  imul   %r11,%rsi
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L718
  movabs $0x100000000,%r11
  add    %r11,%r8
L718:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %r9,%rsi
  adc    %r11,%r8
  mov    %r8,%r9
  shr    $0x3f,%r9
  add    %r9,%rcx
  mov    %rsi,%r9
  shr    $0x3f,%r9
  lea    (%r9,%r8,2),%r8
  add    %rsi,%rsi
  add    %rsi,%r10
  jae    L139
  add    $0x1,%r8
  jne    L139
  add    $0x1,%rcx
  jmp    L383
L139:
  add    %r8,%rdx
  adc    $0x0,%rcx
L383:
  mov    %r10,0x40(%rdi)
  mov    0x38(%rax),%r9
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    0x10(%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rsi,%r8
  imul   %r11,%r8
  imul   %r10,%rsi
  imul   %r9,%r10
  imul   %r11,%r9
  add    %r10,%r8
  jae    L105
  movabs $0x100000000,%r10
  add    %r10,%r9
L105:
  mov    %r8,%r10
  shr    $0x20,%r10
  shl    $0x20,%r8
  add    %r8,%rsi
  adc    %r10,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  mov    %r10,%r8
  mov    %rsi,%r11
  shr    $0x3f,%r11
  lea    (%r11,%r9,2),%r9
  add    %rsi,%rsi
  add    %rdx,%rsi
  jae    L162
  add    $0x1,%r9
  jne    L162
  lea    0x1(%r10),%r8
  jmp    L980
L162:
  add    $0x1,%r10
  add    %r9,%rcx
  cmovb  %r10,%r8
L980:
  mov    0x30(%rax),%r9
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rdx,%r10
  imul   %rbx,%r10
  imul   %r11,%rdx
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L351
  movabs $0x100000000,%r11
  add    %r11,%r9
L351:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rdx
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%r8
  mov    %rdx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %rdx,%rdx
  add    %rdx,%rsi
  jae    L109
  add    $0x1,%r9
  jne    L109
  add    $0x1,%r8
  jmp    L243
L109:
  add    %r9,%rcx
  adc    $0x0,%r8
L243:
  mov    0x28(%rax),%r9
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rdx,%r10
  imul   %rbx,%r10
  imul   %r11,%rdx
  imul   %r9,%r11
  imul   %rbx,%r9
  add    %r11,%r10
  jae    L485
  movabs $0x100000000,%r11
  add    %r11,%r9
L485:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rdx
  adc    %r11,%r9
  mov    %r9,%r10
  shr    $0x3f,%r10
  add    %r10,%r8
  mov    %rdx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%r9,2),%r9
  add    %rdx,%rdx
  add    %rdx,%rsi
  jae    L600
  add    $0x1,%r9
  jne    L600
  add    $0x1,%r8
  jmp    L321
L600:
  add    %r9,%rcx
  adc    $0x0,%r8
L321:
  mov    %rsi,0x48(%rdi)
  mov    0x28(%rax),%rdx
  mov    %edx,%esi
  shr    $0x20,%rdx
  mov    %rsi,%r9
  imul   %rdx,%r9
  imul   %rsi,%rsi
  imul   %rdx,%rdx
  mov    %r9,%r10
  shr    $0x1f,%r10
  shl    $0x21,%r9
  add    %r9,%rsi
  adc    %r10,%rdx
  add    %rcx,%rsi
  mov    %rsi,%r10
  adc    $0x0,%rdx
  add    %r8,%rdx
  setb   %r9b
  movzbl %r9b,%r9d
  mov    0x30(%rax),%rsi
  mov    %esi,%ecx
  shr    $0x20,%rsi
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r8
  imul   %rbx,%r8
  imul   %r11,%rcx
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r8
  jae    L241
  movabs $0x100000000,%r11
  add    %r11,%rsi
L241:
  mov    %r8,%r11
  shr    $0x20,%r11
  shl    $0x20,%r8
  add    %r8,%rcx
  adc    %r11,%rsi
  mov    %rsi,%r8
  shr    $0x3f,%r8
  add    %r8,%r9
  mov    %rcx,%r8
  shr    $0x3f,%r8
  lea    (%r8,%rsi,2),%rsi
  add    %rcx,%rcx
  add    %rcx,%r10
  jae    L12
  add    $0x1,%rsi
  jne    L12
  add    $0x1,%r9
  jmp    L851
L12:
  add    %rsi,%rdx
  adc    $0x0,%r9
L851:
  mov    0x38(%rax),%rsi
  mov    %esi,%ecx
  shr    $0x20,%rsi
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r8
  imul   %rbx,%r8
  imul   %r11,%rcx
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r8
  jae    L394
  movabs $0x100000000,%r11
  add    %r11,%rsi
L394:
  mov    %r8,%r11
  shr    $0x20,%r11
  shl    $0x20,%r8
  add    %r8,%rcx
  adc    %r11,%rsi
  mov    %rsi,%r8
  shr    $0x3f,%r8
  add    %r8,%r9
  mov    %rcx,%r8
  shr    $0x3f,%r8
  lea    (%r8,%rsi,2),%rsi
  lea    (%rcx,%rcx,1),%r8
  mov    %r10,%rcx
  add    %r8,%rcx
  jae    L323
  add    $0x1,%rsi
  jne    L323
  add    $0x1,%r9
  jmp    L173
L323:
  add    %rsi,%rdx
  adc    $0x0,%r9
L173:
  mov    %rcx,0x50(%rdi)
  mov    0x38(%rax),%rsi
  mov    %esi,%ecx
  shr    $0x20,%rsi
  mov    0x20(%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rcx,%r8
  imul   %r11,%r8
  imul   %r10,%rcx
  imul   %rsi,%r10
  imul   %r11,%rsi
  add    %r10,%r8
  jae    L340
  movabs $0x100000000,%r10
  add    %r10,%rsi
L340:
  mov    %r8,%r10
  shr    $0x20,%r10
  shl    $0x20,%r8
  add    %r8,%rcx
  adc    %r10,%rsi
  mov    %rsi,%r8
  shr    $0x3f,%r8
  mov    %r8,%r10
  mov    %rcx,%r11
  shr    $0x3f,%r11
  lea    (%r11,%rsi,2),%rsi
  add    %rcx,%rcx
  add    %rdx,%rcx
  jae    L385
  add    $0x1,%rsi
  jne    L385
  lea    0x1(%r8),%r10
  jmp    L558
L385:
  add    $0x1,%r8
  add    %rsi,%r9
  cmovb  %r8,%r10
L558:
  mov    0x30(%rax),%rdx
  mov    %edx,%esi
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rsi,%r8
  imul   %rbx,%r8
  imul   %r11,%rsi
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r8
  jae    L410
  movabs $0x100000000,%r11
  add    %r11,%rdx
L410:
  mov    %r8,%r11
  shr    $0x20,%r11
  shl    $0x20,%r8
  add    %r8,%rsi
  adc    %r11,%rdx
  mov    %rdx,%r8
  shr    $0x3f,%r8
  add    %r8,%r10
  mov    %rsi,%r8
  shr    $0x3f,%r8
  lea    (%r8,%rdx,2),%rdx
  add    %rsi,%rsi
  add    %rsi,%rcx
  jae    L245
  add    $0x1,%rdx
  jne    L245
  add    $0x1,%r10
  jmp    L379
L245:
  add    %rdx,%r9
  adc    $0x0,%r10
L379:
  mov    %rcx,0x58(%rdi)
  mov    0x30(%rax),%rdx
  mov    %edx,%r8d
  shr    $0x20,%rdx
  mov    %r8,%rcx
  imul   %rdx,%rcx
  imul   %r8,%r8
  imul   %rdx,%rdx
  mov    %rcx,%rsi
  shr    $0x1f,%rsi
  shl    $0x21,%rcx
  add    %rcx,%r8
  adc    %rsi,%rdx
  add    %r9,%r8
  adc    $0x0,%rdx
  mov    %rdx,%rsi
  add    %r10,%rsi
  setb   %r9b
  movzbl %r9b,%r9d
  mov    0x38(%rax),%rdx
  mov    %edx,%ecx
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rcx,%r10
  imul   %rbx,%r10
  imul   %r11,%rcx
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L749
  movabs $0x100000000,%r11
  add    %r11,%rdx
L749:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%rcx
  adc    %r11,%rdx
  mov    %rdx,%r10
  shr    $0x3f,%r10
  add    %r10,%r9
  mov    %rcx,%r10
  shr    $0x3f,%r10
  lea    (%r10,%rdx,2),%rdx
  add    %rcx,%rcx
  add    %rcx,%r8
  jae    L589
  add    $0x1,%rdx
  jne    L589
  add    $0x1,%r9
  jmp    L693
L589:
  add    %rdx,%rsi
  adc    $0x0,%r9
L693:
  mov    %r8,0x60(%rdi)
  mov    0x38(%rax),%rcx
  mov    %ecx,%edx
  shr    $0x20,%rcx
  mov    0x30(%rax),%r11
  mov    %r11d,%r10d
  shr    $0x20,%r11
  mov    %rdx,%r8
  imul   %r11,%r8
  imul   %r10,%rdx
  imul   %rcx,%r10
  imul   %r11,%rcx
  add    %r10,%r8
  jae    L344
  movabs $0x100000000,%r10
  add    %r10,%rcx
L344:
  mov    %r8,%r10
  shr    $0x20,%r10
  shl    $0x20,%r8
  add    %r8,%rdx
  adc    %r10,%rcx
  mov    %rcx,%r10
  shr    $0x3f,%r10
  mov    %r10,%r8
  mov    %rdx,%r11
  shr    $0x3f,%r11
  lea    (%r11,%rcx,2),%rcx
  add    %rdx,%rdx
  add    %rsi,%rdx
  jae    L709
  add    $0x1,%rcx
  jne    L709
  lea    0x1(%r10),%r8
  jmp    L264
L709:
  add    $0x1,%r10
  add    %rcx,%r9
  cmovb  %r10,%r8
L264:
  mov    %rdx,0x68(%rdi)
  mov    0x38(%rax),%rdx
  mov    %edx,%eax
  shr    $0x20,%rdx
  mov    %rax,%rcx
  imul   %rdx,%rcx
  imul   %rax,%rax
  imul   %rdx,%rdx
  mov    %rcx,%rsi
  shr    $0x1f,%rsi
  shl    $0x21,%rcx
  add    %rcx,%rax
  adc    %rsi,%rdx
  add    %r9,%rax
  mov    %rax,0x70(%rdi)
  adc    %rdx,%r8
  mov    %r8,0x78(%rdi)
  pop    %rbx
  ret
```

assistant: ```c
void bn_sqr_comba8(unsigned long long *r, unsigned long long *a) {
  unsigned long long bl, bh;
  unsigned long long t1, t2;
  unsigned long long c1, c2, c3;
  c1 = 0;
  c2 = 0;
  c3 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[0]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[0] = c1;
  c1 = 0;
  t1 = (((a)[1]) & (0xffffffffL));
  t2 = ((((a)[1]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[1] = c2;
  c2 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[1]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[2]) & (0xffffffffL));
  t2 = ((((a)[2]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[2] = c3;
  c3 = 0;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[2]) & (0xffffffffL));
  t2 = ((((a)[2]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[3] = c1;
  c1 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[2]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[4]) & (0xffffffffL));
  t2 = ((((a)[4]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[4] = c2;
  c2 = 0;
  t1 = (((a)[5]) & (0xffffffffL));
  t2 = ((((a)[5]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[4]) & (0xffffffffL));
  t2 = ((((a)[4]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[5] = c3;
  c3 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[3]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[4]) & (0xffffffffL));
  t2 = ((((a)[4]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[5]) & (0xffffffffL));
  t2 = ((((a)[5]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[6] = c1;
  c1 = 0;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[5]) & (0xffffffffL));
  t2 = ((((a)[5]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[4]) & (0xffffffffL));
  t2 = ((((a)[4]) >> 32) & (0xffffffffL));
  bl = (((a)[3]) & (0xffffffffL));
  bh = ((((a)[3]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[7] = c2;
  c2 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[4]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[5]) & (0xffffffffL));
  t2 = ((((a)[5]) >> 32) & (0xffffffffL));
  bl = (((a)[3]) & (0xffffffffL));
  bh = ((((a)[3]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[8] = c3;
  c3 = 0;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[3]) & (0xffffffffL));
  bh = ((((a)[3]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[5]) & (0xffffffffL));
  t2 = ((((a)[5]) >> 32) & (0xffffffffL));
  bl = (((a)[4]) & (0xffffffffL));
  bh = ((((a)[4]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[9] = c1;
  c1 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[5]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[4]) & (0xffffffffL));
  bh = ((((a)[4]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[3]) & (0xffffffffL));
  bh = ((((a)[3]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[10] = c2;
  c2 = 0;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[4]) & (0xffffffffL));
  bh = ((((a)[4]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[6]) & (0xffffffffL));
  t2 = ((((a)[6]) >> 32) & (0xffffffffL));
  bl = (((a)[5]) & (0xffffffffL));
  bh = ((((a)[5]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[11] = c3;
  c3 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[6]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[5]) & (0xffffffffL));
  bh = ((((a)[5]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[12] = c1;
  c1 = 0;
  t1 = (((a)[7]) & (0xffffffffL));
  t2 = ((((a)[7]) >> 32) & (0xffffffffL));
  bl = (((a)[6]) & (0xffffffffL));
  bh = ((((a)[6]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[13] = c2;
  c2 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[7]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[14] = c3;
  r[15] = c1;
}
```