user: Translate the below assembly code into C programming language:

```asm
<bn_mul_comba8>:
  endbr64
  mov    %rdx,%rax
  push   %r12
  mov    %rsi,%rcx
  push   %rbp
  push   %rbx
  mov    (%rsi),%rsi
  mov    (%rax),%r10
  mov    %esi,%edx
  shr    $0x20,%rsi
  mov    %r10d,%r11d
  shr    $0x20,%r10
  mov    %rdx,%r8
  mov    %rsi,%r9
  imul   %r10,%rdx
  imul   %r11,%rsi
  imul   %r11,%r8
  imul   %r10,%r9
  add    %rsi,%rdx
  jb     L394
L406:
  mov    %rdx,%rsi
  shl    $0x20,%rdx
  shr    $0x20,%rsi
  add    %rdx,%r8
  mov    %r8,(%rdi)
  mov    (%rcx),%r8
  adc    %rsi,%r9
  mov    0x8(%rax),%r11
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %r11d,%ebx
  shr    $0x20,%r11
  mov    %rdx,%r10
  mov    %r8,%rsi
  imul   %r11,%rdx
  imul   %rbx,%r8
  imul   %rbx,%r10
  imul   %r11,%rsi
  add    %r8,%rdx
  jb     L1101
L471:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    (%rax),%rbx
  shr    $0x20,%r8
  add    %rdx,%r10
  adc    %r8,%rsi
  mov    0x8(%rcx),%r8
  add    %r10,%r9
  mov    %ebx,%ebp
  adc    $0x0,%rsi
  shr    $0x20,%rbx
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %rdx,%r11
  imul   %rbx,%rdx
  mov    %r8,%r10
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r8,%rdx
  jb     L1227
L1129:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  shr    $0x20,%r8
  add    %rdx,%r11
  mov    %r10,%rdx
  adc    %r8,%rdx
  add    %r11,%r9
  mov    %r9,0x8(%rdi)
  adc    $0x0,%rdx
  mov    0x10(%rcx),%r9
  mov    (%rax),%rbx
  add    %rdx,%rsi
  setb   %dl
  mov    %r9d,%r8d
  shr    $0x20,%r9
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %r8,%r10
  mov    %r9,%r11
  imul   %rbx,%r8
  movzbl %dl,%edx
  imul   %rbp,%r9
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r9,%r8
  jb     L1256
L967:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r10
  adc    %r9,%r11
  add    %r10,%rsi
  mov    0x8(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%r11
  xor    %r9d,%r9d
  add    %rdx,%r11
  mov    %r10d,%r8d
  setb   %r9b
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rdx
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L328
L1068:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rdx
  add    %rbx,%rsi
  mov    (%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %rdx,%r11
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rdx
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L1051
L168:
  mov    %r8,%r10
  shl    $0x20,%r8
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rdx
  add    %rbx,%rsi
  mov    %rsi,0x10(%rdi)
  adc    $0x0,%rdx
  mov    (%rcx),%r10
  mov    0x18(%rax),%rbx
  add    %r11,%rdx
  adc    $0x0,%r9
  mov    %r10d,%r8d
  shr    $0x20,%r10
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %r8,%r11
  mov    %r10,%rsi
  imul   %rbx,%r8
  imul   %rbp,%r10
  imul   %rbp,%r11
  imul   %rbx,%rsi
  add    %r10,%r8
  jb     L611
L1158:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%r11
  adc    %r10,%rsi
  add    %r11,%rdx
  mov    0x8(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r9,%rsi
  mov    %r10d,%r8d
  setb   %r9b
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%r11
  movzbl %r9b,%r9d
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%r11
  add    %r10,%r8
  jb     L859
L450:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%r11
  add    %rbx,%rdx
  mov    0x10(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rsi,%r11
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rsi
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rsi
  add    %r10,%r8
  jb     L186
L1222:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    (%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rsi
  add    %rbx,%rdx
  mov    0x18(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %rsi,%r11
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rsi
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rsi
  add    %r10,%r8
  jb     L511
L331:
  mov    %r8,%r10
  shl    $0x20,%r8
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rsi
  add    %rbx,%rdx
  mov    %rdx,0x18(%rdi)
  adc    $0x0,%rsi
  mov    0x20(%rcx),%rdx
  mov    (%rax),%rbx
  add    %r11,%rsi
  adc    $0x0,%r9
  mov    %edx,%r8d
  shr    $0x20,%rdx
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %r8,%r10
  mov    %rdx,%r11
  imul   %rbx,%r8
  imul   %rbp,%rdx
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %rdx,%r8
  jb     L522
L1235:
  mov    %r8,%rdx
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%rdx
  add    %r8,%r10
  adc    %rdx,%r11
  add    %r10,%rsi
  mov    0x18(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r9,%r11
  mov    %r10d,%r8d
  setb   %r9b
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rdx
  movzbl %r9b,%r9d
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L779
L485:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rdx
  add    %rbx,%rsi
  mov    0x10(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %r11,%rdx
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%r11
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%r11
  add    %r10,%r8
  jb     L87
L687:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%r11
  add    %rbx,%rsi
  mov    0x8(%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rdx,%r11
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rdx
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L475
L338:
  mov    %r8,%r10
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rdx
  add    %rbx,%rsi
  mov    (%rcx),%r10
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %rdx,%r11
  mov    %r10d,%r8d
  adc    $0x0,%r9
  shr    $0x20,%r10
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r10,%rdx
  imul   %rbp,%r8
  imul   %r12,%r10
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L1269
L728:
  mov    %r8,%r10
  shl    $0x20,%r8
  shr    $0x20,%r10
  add    %r8,%rbx
  adc    %r10,%rdx
  add    %rbx,%rsi
  mov    %rsi,0x20(%rdi)
  adc    $0x0,%rdx
  mov    (%rcx),%r8
  mov    0x28(%rax),%rbx
  add    %r11,%rdx
  adc    $0x0,%r9
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rsi,%r10
  mov    %r8,%r11
  imul   %rbx,%rsi
  imul   %rbp,%r8
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r8,%rsi
  jb     L19
L1028:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%r10
  adc    %r8,%r11
  add    %r10,%rdx
  mov    %ebp,%r12d
  adc    $0x0,%r11
  xor    %esi,%esi
  add    %r9,%r11
  mov    0x8(%rcx),%r9
  setb   %sil
  shr    $0x20,%rbp
  mov    %r9d,%r8d
  shr    $0x20,%r9
  mov    %r8,%rbx
  imul   %rbp,%r8
  mov    %r9,%r10
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L458
L739:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x10(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L1140
L316:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L372
L733:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L397
L885:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    (%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  mov    %r11,%r8
  adc    $0x0,%r8
  mov    %r8,%r11
  mov    %r9d,%r8d
  add    %r10,%r11
  mov    %r8,%rbx
  adc    $0x0,%rsi
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L1
L1274:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,%r9
  adc    $0x0,%r8
  mov    %r9,0x28(%rdi)
  mov    0x30(%rcx),%r9
  mov    (%rax),%rbx
  mov    %r8,%rdx
  add    %r11,%rdx
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  mov    %ebx,%ebp
  shr    $0x20,%r9
  mov    %r8,%r11
  shr    $0x20,%rbx
  imul   %rbp,%r11
  mov    %r9,%r10
  imul   %rbx,%r8
  imul   %rbp,%r9
  imul   %rbx,%r10
  add    %r9,%r8
  jb     L1014
L46:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r11
  adc    %r9,%r10
  add    %r11,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %rsi,%r10
  mov    %r9d,%r8d
  setb   %sil
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  movzbl %sil,%esi
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L502
L567:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L682
L519:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L564
L1164:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x10(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L245
L888:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x8(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L853
L896:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    (%rcx),%r9
  mov    %ebp,%r12d
  mov    %r11,%r8
  adc    $0x0,%r8
  mov    %r8,%r11
  mov    %r9d,%r8d
  add    %r10,%r11
  mov    %r8,%rbx
  adc    $0x0,%rsi
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L448
L968:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,%r9
  adc    $0x0,%r8
  mov    %r9,0x30(%rdi)
  mov    (%rcx),%r9
  mov    0x38(%rax),%rbx
  mov    %r8,%rdx
  add    %r11,%rdx
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  mov    %ebx,%ebp
  shr    $0x20,%r9
  mov    %r8,%r10
  shr    $0x20,%rbx
  imul   %rbp,%r10
  mov    %r9,%r11
  imul   %rbx,%r8
  imul   %rbp,%r9
  imul   %rbx,%r11
  add    %r9,%r8
  jb     L754
L561:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r10
  adc    %r9,%r11
  add    %r10,%rdx
  mov    0x8(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rsi,%r11
  mov    %r9d,%r8d
  setb   %sil
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  movzbl %sil,%esi
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L258
L950:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x10(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L1090
L975:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L414
L90:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L63
L275:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L462
L861:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x8(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L879
L920:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    (%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x38(%rcx),%r9
  mov    %ebp,%r12d
  mov    %r11,%r8
  adc    $0x0,%r8
  mov    %r8,%r11
  mov    %r9d,%r8d
  add    %r10,%r11
  mov    %r8,%rbx
  adc    $0x0,%rsi
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L541
L546:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,%r9
  adc    $0x0,%r8
  mov    %r9,0x38(%rdi)
  mov    0x38(%rcx),%r9
  mov    0x8(%rax),%rbx
  mov    %r8,%rdx
  add    %r11,%rdx
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  mov    %ebx,%ebp
  shr    $0x20,%r9
  mov    %r8,%r11
  shr    $0x20,%rbx
  imul   %rbp,%r11
  mov    %r9,%r10
  imul   %rbx,%r8
  imul   %rbp,%r9
  imul   %rbx,%r10
  add    %r9,%r8
  jb     L388
L385:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r11
  adc    %r9,%r10
  add    %r11,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %rsi,%r10
  mov    %r9d,%r8d
  setb   %sil
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  movzbl %sil,%esi
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L479
L170:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L999
L825:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L1214
L204:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L751
L855:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x10(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L1023
L428:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x38(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x8(%rcx),%r9
  mov    %ebp,%r12d
  mov    %r11,%r8
  adc    $0x0,%r8
  mov    %r8,%r11
  mov    %r9d,%r8d
  add    %r10,%r11
  mov    %r8,%rbx
  adc    $0x0,%rsi
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L215
L954:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,%r9
  adc    $0x0,%r8
  mov    %r9,0x40(%rdi)
  mov    0x10(%rcx),%r9
  mov    0x38(%rax),%rbx
  mov    %r8,%rdx
  add    %r11,%rdx
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  mov    %ebx,%ebp
  shr    $0x20,%r9
  mov    %r8,%r10
  shr    $0x20,%rbx
  imul   %rbp,%r10
  mov    %r9,%r11
  imul   %rbx,%r8
  imul   %rbp,%r9
  imul   %rbx,%r11
  add    %r9,%r8
  jb     L653
L903:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r10
  adc    %r9,%r11
  add    %r10,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rsi,%r11
  mov    %r9d,%r8d
  setb   %sil
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  movzbl %sil,%esi
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L441
L783:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L1042
L842:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L539
L167:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  shr    $0x20,%r9
  mov    %r8,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%r8
  jb     L930
L963:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x38(%rcx),%r9
  mov    %ebp,%r12d
  mov    %r11,%r8
  adc    $0x0,%r8
  mov    %r8,%r11
  mov    %r9d,%r8d
  add    %r10,%r11
  mov    %r8,%rbx
  adc    $0x0,%rsi
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L171
L1169:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,%r9
  adc    $0x0,%r8
  mov    %r9,0x48(%rdi)
  mov    0x38(%rcx),%r9
  mov    0x18(%rax),%rbx
  mov    %r8,%rdx
  add    %r11,%rdx
  mov    %r9d,%r8d
  adc    $0x0,%rsi
  mov    %ebx,%ebp
  shr    $0x20,%r9
  mov    %r8,%r11
  shr    $0x20,%rbx
  imul   %rbp,%r11
  mov    %r9,%r10
  imul   %rbx,%r8
  imul   %rbp,%r9
  imul   %rbx,%r10
  add    %r9,%r8
  jb     L352
L1246:
  mov    %r8,%r9
  shl    $0x20,%r8
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %r8,%r11
  adc    %r9,%r10
  add    %r11,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  xor    %r8d,%r8d
  add    %rsi,%r10
  mov    %r9d,%esi
  setb   %r8b
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%rsi
  jb     L486
L125:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  adc    %r9,%r11
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%esi
  adc    $0x0,%r8
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L366
L1265:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x20(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%esi
  adc    $0x0,%r8
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%rsi
  jb     L233
L811:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x38(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    0x18(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  adc    $0x0,%r8
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %rsi,%rbx
  mov    %r9,%r10
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L242
L931:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    %rdx,%r9
  adc    $0x0,%rsi
  mov    %r9,0x50(%rdi)
  mov    %rsi,%rdx
  mov    0x20(%rcx),%r9
  mov    0x38(%rax),%rbx
  add    %r11,%rdx
  adc    $0x0,%r8
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rsi,%r10
  mov    %r9,%r11
  imul   %rbx,%rsi
  imul   %rbp,%r9
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r9,%rsi
  jb     L656
L1011:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%r10
  adc    %r9,%r11
  add    %r10,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r8,%r11
  mov    %r9d,%esi
  setb   %r8b
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  movzbl %r8b,%r8d
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L802
L524:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x28(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%esi
  adc    $0x0,%r8
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%rsi
  jb     L184
L630:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    0x38(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  adc    $0x0,%r8
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %rsi,%rbx
  mov    %r9,%r10
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L256
L1141:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    %rdx,%r9
  adc    $0x0,%rsi
  mov    %r9,0x58(%rdi)
  mov    %rsi,%rdx
  mov    0x38(%rcx),%r9
  mov    0x28(%rax),%rbx
  add    %r11,%rdx
  adc    $0x0,%r8
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rsi,%r11
  mov    %r9,%r10
  imul   %rbx,%rsi
  imul   %rbp,%r9
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r9,%rsi
  jb     L1106
L45:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%r11
  adc    %r9,%r10
  add    %r11,%rdx
  mov    0x30(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r8,%r10
  mov    %r9d,%esi
  setb   %r8b
  shr    $0x20,%r9
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  movzbl %r8b,%r8d
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%rsi
  jb     L789
L1053:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x38(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    0x28(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  adc    $0x0,%r8
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %rsi,%rbx
  mov    %r9,%r10
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L16
L307:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    %rdx,%r9
  adc    $0x0,%rsi
  mov    %r9,0x60(%rdi)
  mov    %rsi,%rdx
  mov    0x30(%rcx),%r9
  mov    0x38(%rax),%rbx
  add    %r11,%rdx
  adc    $0x0,%r8
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rsi,%r11
  mov    %r9,%r10
  imul   %rbx,%rsi
  imul   %rbp,%r9
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r9,%rsi
  jb     L590
L836:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%r11
  mov    %r10,%rsi
  adc    %r9,%rsi
  add    %r11,%rdx
  mov    0x38(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r8,%rsi
  setb   %r8b
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r9d,%esi
  shr    $0x20,%r9
  mov    %rsi,%rbx
  movzbl %r8b,%r8d
  mov    %r9,%r10
  imul   %rbp,%rsi
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%rsi
  jb     L1268
L487:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  shr    $0x20,%r9
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r9,%rsi
  add    %rbx,%rdx
  mov    %rdx,0x68(%rdi)
  adc    $0x0,%rsi
  mov    0x38(%rcx),%rcx
  add    %r11,%rsi
  mov    0x38(%rax),%rax
  adc    $0x0,%r8
  mov    %ecx,%edx
  shr    $0x20,%rcx
  mov    %eax,%r11d
  mov    %rcx,%r10
  shr    $0x20,%rax
  mov    %rdx,%r9
  imul   %rax,%r10
  imul   %r11,%rcx
  imul   %rdx,%rax
  imul   %r11,%r9
  add    %rcx,%rax
  jb     L304
L1172:
  mov    %rax,%rdx
  shl    $0x20,%rax
  pop    %rbx
  pop    %rbp
  shr    $0x20,%rdx
  add    %rax,%r9
  pop    %r12
  adc    %rdx,%r10
  add    %r9,%rsi
  adc    %r10,%r8
  mov    %rsi,0x70(%rdi)
  mov    %r8,0x78(%rdi)
  ret
L394:
  mov    $0x1,%esi
  shl    $0x20,%rsi
  add    %rsi,%r9
  jmp    L406
L304:
  mov    $0x1,%edx
  shl    $0x20,%rdx
  add    %rdx,%r10
  jmp    L1172
L1268:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L487
L590:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L836
L16:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L307
L789:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1053
L1106:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L45
L256:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1141
L184:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L630
L802:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L524
L656:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1011
L242:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L931
L233:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L811
L366:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1265
L486:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L125
L352:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1246
L171:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1169
L930:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L963
L539:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L167
L1042:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L842
L441:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L783
L653:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L903
L215:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L954
L1023:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L428
L751:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L855
L1214:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L204
L999:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L825
L479:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L170
L388:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L385
L541:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L546
L879:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L920
L462:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L861
L63:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L275
L414:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L90
L1090:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L975
L258:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L950
L754:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L561
L448:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L968
L853:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L896
L245:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L888
L564:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1164
L682:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L519
L502:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L567
L1014:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L46
L1:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1274
L397:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L885
L372:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L733
L1140:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L316
L458:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L739
L19:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L1028
L1269:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L728
L475:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L338
L87:
  movabs $0x100000000,%r10
  add    %r10,%r11
  jmp    L687
L779:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L485
L522:
  mov    $0x1,%edx
  shl    $0x20,%rdx
  add    %rdx,%r11
  jmp    L1235
L511:
  movabs $0x100000000,%r10
  add    %r10,%rsi
  jmp    L331
L186:
  movabs $0x100000000,%r10
  add    %r10,%rsi
  jmp    L1222
L859:
  movabs $0x100000000,%r10
  add    %r10,%r11
  jmp    L450
L611:
  movabs $0x100000000,%r10
  add    %r10,%rsi
  jmp    L1158
L1051:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L168
L328:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L1068
L1256:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L967
L1227:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L1129
L1101:
  movabs $0x100000000,%r8
  add    %r8,%rsi
  jmp    L471
```

assistant: ```c
void bn_mul_comba8(unsigned long long *r, unsigned long long *a, unsigned long long *b) {
  unsigned long long bl, bh;
  unsigned long long t1, t2;
  unsigned long long c1, c2, c3;
  c1 = 0;
  c2 = 0;
  c3 = 0;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[0] = c1;
  c1 = 0;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[1] = c2;
  c2 = 0;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[2] = c3;
  c3 = 0;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[3]) & (0xffffffffL));
  t2 = (((a[3]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[3] = c1;
  c1 = 0;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[4] = c2;
  c2 = 0;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[3]) & (0xffffffffL));
  t2 = (((a[3]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[5] = c3;
  c3 = 0;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[5]) & (0xffffffffL));
  t2 = (((a[5]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[3]) & (0xffffffffL));
  t2 = (((a[3]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[6] = c1;
  c1 = 0;
  t1 = ((a[0]) & (0xffffffffL));
  t2 = (((a[0]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[5]) & (0xffffffffL));
  t2 = (((a[5]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[0]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[7] = c2;
  c2 = 0;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[1]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[3]) & (0xffffffffL));
  t2 = (((a[3]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[1]) & (0xffffffffL));
  t2 = (((a[1]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[8] = c3;
  c3 = 0;
  t1 = ((a[2]) & (0xffffffffL));
  t2 = (((a[2]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[3]) & (0xffffffffL));
  t2 = (((a[3]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[5]) & (0xffffffffL));
  t2 = (((a[5]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[2]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[9] = c1;
  c1 = 0;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[3]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[5]) & (0xffffffffL));
  t2 = (((a[5]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  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 = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[10] = c2;
  c2 = 0;
  t1 = ((a[4]) & (0xffffffffL));
  t2 = (((a[4]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  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 = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[4]) & (0xffffffffL));
  bh = (((b[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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[11] = c3;
  c3 = 0;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[5]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = ((a[5]) & (0xffffffffL));
  t2 = (((a[5]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[12] = c1;
  c1 = 0;
  t1 = ((a[6]) & (0xffffffffL));
  t2 = (((a[6]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[6]) & (0xffffffffL));
  bh = (((b[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;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[13] = c2;
  c2 = 0;
  t1 = ((a[7]) & (0xffffffffL));
  t2 = (((a[7]) >> 32) & (0xffffffffL));
  bl = ((b[7]) & (0xffffffffL));
  bh = (((b[7]) >> 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;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[14] = c3;
  r[15] = c1;
}
```