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

```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     L568
L1173:
  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     L1055
L634:
  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     L94
L390:
  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),%r8
  xor    %r10d,%r10d
  mov    (%rax),%rbx
  add    %rdx,%rsi
  setb   %r10b
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r9
  mov    %r8,%r11
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r9
  imul   %rbx,%r11
  add    %r8,%rdx
  jb     L208
L569:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x8(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r9
  adc    %r8,%r11
  add    %r9,%rsi
  mov    %ebp,%r12d
  adc    $0x0,%r11
  xor    %r9d,%r9d
  add    %r10,%r11
  mov    0x8(%rcx),%r10
  setb   %r9b
  shr    $0x20,%rbp
  mov    %r10d,%r8d
  shr    $0x20,%r10
  mov    %r8,%rbx
  imul   %rbp,%r8
  mov    %r10,%rdx
  imul   %r12,%r10
  imul   %r12,%rbx
  imul   %rbp,%rdx
  add    %r10,%r8
  jb     L1057
L862:
  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     L1181
L1270:
  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),%r8
  mov    0x18(%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     L1179
L824:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x10(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%r10
  adc    %r8,%r11
  add    %r10,%rdx
  mov    0x8(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r9,%r11
  mov    %r8d,%esi
  setb   %r9b
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  movzbl %r9b,%r9d
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L424
L929:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x8(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r10
  add    %rbx,%rdx
  mov    0x10(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%esi
  adc    $0x0,%r9
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L1175
L328:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    (%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r8,%rsi
  add    %rbx,%rdx
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  mov    0x18(%rcx),%r10
  adc    $0x0,%r9
  shr    $0x20,%rbp
  mov    %rsi,%r11
  mov    %r10d,%r8d
  shr    $0x20,%r10
  mov    %r8,%rbx
  imul   %rbp,%r8
  mov    %r10,%rsi
  imul   %r12,%r10
  imul   %r12,%rbx
  imul   %rbp,%rsi
  add    %r10,%r8
  jb     L669
L971:
  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),%r8
  mov    (%rax),%rbx
  add    %r11,%rsi
  adc    $0x0,%r9
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r11
  mov    %r8,%r10
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r8,%rdx
  jb     L381
L495:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x8(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r11
  adc    %r8,%r10
  add    %r11,%rsi
  mov    %ebp,%r12d
  adc    $0x0,%r10
  xor    %r8d,%r8d
  add    %r9,%r10
  mov    0x18(%rcx),%r9
  setb   %r8b
  shr    $0x20,%rbp
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    %rdx,%rbx
  imul   %rbp,%rdx
  mov    %r9,%r11
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r11
  add    %r9,%rdx
  jb     L342
L147:
  mov    %rdx,%r9
  shl    $0x20,%rdx
  mov    0x10(%rax),%rbp
  shr    $0x20,%r9
  add    %rdx,%rbx
  adc    %r9,%r11
  add    %rbx,%rsi
  mov    0x10(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r9d,%edx
  adc    $0x0,%r8
  shr    $0x20,%r9
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r10
  imul   %rbp,%rdx
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%rdx
  jb     L1107
L352:
  mov    %rdx,%r9
  shl    $0x20,%rdx
  mov    0x18(%rax),%rbp
  shr    $0x20,%r9
  add    %rdx,%rbx
  adc    %r9,%r10
  add    %rbx,%rsi
  mov    0x8(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r9d,%edx
  adc    $0x0,%r8
  shr    $0x20,%r9
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r9,%r11
  imul   %rbp,%rdx
  imul   %r12,%r9
  imul   %rbp,%r11
  add    %r9,%rdx
  jb     L1082
L397:
  mov    %rdx,%r9
  shl    $0x20,%rdx
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %rdx,%rbx
  mov    %r11,%rdx
  adc    %r9,%rdx
  add    %rbx,%rsi
  mov    (%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %r10,%rdx
  adc    $0x0,%r8
  mov    %rdx,%r11
  shr    $0x20,%rbp
  mov    %r9d,%edx
  shr    $0x20,%r9
  mov    %rdx,%rbx
  mov    %r9,%r10
  imul   %rbp,%rdx
  imul   %r12,%r9
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r9,%rdx
  jb     L807
L413:
  mov    %rdx,%r9
  shl    $0x20,%rdx
  shr    $0x20,%r9
  add    %rdx,%rbx
  mov    %r10,%rdx
  adc    %r9,%rdx
  add    %rbx,%rsi
  mov    %rsi,0x20(%rdi)
  adc    $0x0,%rdx
  mov    (%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,%r10
  mov    %r9,%r11
  imul   %rbx,%rsi
  imul   %rbp,%r9
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r9,%rsi
  jb     L1030
L749:
  mov    %rsi,%r9
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r9
  add    %rsi,%r10
  adc    %r9,%r11
  add    %r10,%rdx
  mov    0x8(%rcx),%r9
  mov    %ebp,%r12d
  adc    $0x0,%r11
  xor    %esi,%esi
  add    %r8,%r11
  mov    %r9d,%r8d
  setb   %sil
  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     L1020
L964:
  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     L116
L1160:
  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     L1032
L524:
  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     L234
L933:
  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     L231
L425:
  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     L582
L1241:
  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     L766
L1130:
  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     L1168
L1038:
  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     L49
L1221:
  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     L132
L1077:
  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     L1004
L309:
  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     L508
L957:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r9,%r10
  add    %rbx,%rdx
  mov    %r10,%r8
  mov    %rdx,0x30(%rdi)
  mov    0x38(%rax),%rbx
  adc    $0x0,%r8
  mov    %r8,%r9
  mov    (%rcx),%r8
  mov    %ebx,%ebp
  add    %r11,%r9
  adc    $0x0,%rsi
  mov    %r8d,%edx
  shr    $0x20,%rbx
  shr    $0x20,%r8
  mov    %rdx,%r10
  mov    %r8,%r11
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r8,%rdx
  jb     L414
L512:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r10
  mov    %r9,%rdx
  mov    0x8(%rcx),%r9
  adc    %r8,%r11
  add    %r10,%rdx
  mov    %ebp,%r12d
  adc    $0x0,%r11
  mov    %r9d,%r8d
  add    %rsi,%r11
  mov    %r8,%rbx
  setb   %sil
  shr    $0x20,%r9
  imul   %r12,%rbx
  shr    $0x20,%rbp
  mov    %r9,%r10
  movzbl %sil,%esi
  imul   %rbp,%r8
  imul   %r12,%r9
  imul   %rbp,%r10
  add    %r9,%r8
  jb     L73
L316:
  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     L877
L635:
  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     L277
L941:
  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     L1204
L1015:
  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     L709
L596:
  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     L725
L257:
  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     L29
L1167:
  mov    %r8,%r9
  shl    $0x20,%r8
  shr    $0x20,%r9
  add    %r8,%rbx
  adc    %r10,%r9
  add    %rbx,%rdx
  mov    %rdx,0x38(%rdi)
  adc    $0x0,%r9
  mov    0x38(%rcx),%r8
  mov    0x8(%rax),%rbx
  add    %r11,%r9
  adc    $0x0,%rsi
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r11
  mov    %r8,%r10
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r8,%rdx
  jb     L736
L714:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x10(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r11
  adc    %r8,%r10
  add    %r11,%r9
  mov    0x30(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  xor    %edx,%edx
  add    %rsi,%r10
  mov    %r8d,%esi
  setb   %dl
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L1093
L928:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x18(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r11
  add    %rbx,%r9
  mov    0x28(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L46
L228:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x20(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L830
L149:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x28(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r11
  add    %rbx,%r9
  mov    0x18(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L799
L534:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x10(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L1090
L783:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x38(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r8,%rsi
  add    %rbx,%r9
  mov    0x8(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  adc    $0x0,%rdx
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    %rsi,%rbx
  mov    %r8,%r10
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L858
L1071:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  shr    $0x20,%r8
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r8,%rsi
  add    %rbx,%r9
  mov    %r9,%r8
  adc    $0x0,%rsi
  mov    %r8,0x40(%rdi)
  mov    0x10(%rcx),%r8
  add    %r11,%rsi
  mov    0x38(%rax),%rbx
  adc    $0x0,%rdx
  mov    %rsi,%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     L861
L1212:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%r10
  adc    %r8,%r11
  add    %r10,%r9
  mov    0x18(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rdx,%r11
  mov    %r8d,%esi
  setb   %dl
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  movzbl %dl,%edx
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L814
L690:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x28(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x20(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L1229
L501:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r11
  add    %rbx,%r9
  mov    0x28(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L595
L728:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x18(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x30(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%esi
  adc    $0x0,%rdx
  shr    $0x20,%r8
  mov    %rsi,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rsi
  jb     L1016
L879:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x10(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%rbx
  mov    %r11,%rsi
  adc    %r8,%rsi
  add    %rbx,%r9
  mov    0x38(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rsi
  add    %r10,%rsi
  adc    $0x0,%rdx
  mov    %rsi,%r11
  shr    $0x20,%rbp
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    %rsi,%rbx
  mov    %r8,%r10
  imul   %rbp,%rsi
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r8,%rsi
  jb     L1099
L250:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  shr    $0x20,%r8
  add    %rsi,%rbx
  mov    %r10,%rsi
  adc    %r8,%rsi
  add    %rbx,%r9
  mov    %r9,%r8
  adc    $0x0,%rsi
  mov    %r8,0x48(%rdi)
  mov    0x38(%rcx),%r8
  add    %r11,%rsi
  mov    0x18(%rax),%rbx
  adc    $0x0,%rdx
  mov    %rsi,%r9
  mov    %r8d,%esi
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rsi,%r11
  mov    %r8,%r10
  imul   %rbx,%rsi
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r8,%rsi
  jb     L1178
L578:
  mov    %rsi,%r8
  shl    $0x20,%rsi
  mov    0x20(%rax),%rbp
  shr    $0x20,%r8
  add    %rsi,%r11
  adc    %r8,%r10
  add    %r11,%r9
  mov    0x30(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  xor    %esi,%esi
  add    %rdx,%r10
  mov    %r8d,%edx
  setb   %sil
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rdx
  jb     L88
L687:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x28(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  adc    %r8,%r11
  add    %rbx,%r9
  mov    0x28(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %r10,%r11
  mov    %r8d,%edx
  adc    $0x0,%rsi
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rdx
  jb     L604
L416:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x20(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%edx
  adc    $0x0,%rsi
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rdx
  jb     L865
L1079:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x38(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r11,%rdx
  adc    %r8,%rdx
  add    %rbx,%r9
  mov    0x18(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %r10,%rdx
  adc    $0x0,%rsi
  mov    %rdx,%r11
  shr    $0x20,%rbp
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %rdx,%rbx
  mov    %r8,%r10
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r8,%rdx
  jb     L673
L358:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r10,%rdx
  adc    %r8,%rdx
  add    %rbx,%r9
  mov    %r9,%r8
  adc    $0x0,%rdx
  mov    %r8,0x50(%rdi)
  mov    0x20(%rcx),%r8
  add    %r11,%rdx
  mov    0x38(%rax),%rbx
  adc    $0x0,%rsi
  mov    %rdx,%r9
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r10
  mov    %r8,%r11
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r10
  imul   %rbx,%r11
  add    %r8,%rdx
  jb     L1206
L69:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r10
  adc    %r8,%r11
  add    %r10,%r9
  mov    0x28(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r11
  add    %rsi,%r11
  mov    %r8d,%edx
  setb   %sil
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r10
  movzbl %sil,%esi
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r10
  add    %r8,%rdx
  jb     L137
L1075:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x28(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    0x30(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %r11,%r10
  mov    %r8d,%edx
  adc    $0x0,%rsi
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rdx
  jb     L190
L1114:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x20(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r11,%rdx
  adc    %r8,%rdx
  add    %rbx,%r9
  mov    0x38(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %r10,%rdx
  adc    $0x0,%rsi
  mov    %rdx,%r11
  shr    $0x20,%rbp
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %rdx,%rbx
  mov    %r8,%r10
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r8,%rdx
  jb     L801
L724:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r10,%rdx
  adc    %r8,%rdx
  add    %rbx,%r9
  mov    %r9,%r8
  adc    $0x0,%rdx
  mov    %r8,0x58(%rdi)
  mov    0x38(%rcx),%r8
  add    %r11,%rdx
  mov    0x28(%rax),%rbx
  adc    $0x0,%rsi
  mov    %rdx,%r9
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r11
  mov    %r8,%r10
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r10
  add    %r8,%rdx
  jb     L448
L96:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r11
  adc    %r8,%r10
  add    %r11,%r9
  mov    0x30(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%r10
  add    %rsi,%r10
  mov    %r8d,%edx
  setb   %sil
  shr    $0x20,%r8
  mov    %rdx,%rbx
  shr    $0x20,%rbp
  imul   %r12,%rbx
  mov    %r8,%r11
  movzbl %sil,%esi
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %rbp,%r11
  add    %r8,%rdx
  jb     L1101
L249:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x38(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r11,%rdx
  adc    %r8,%rdx
  add    %rbx,%r9
  mov    0x28(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %r10,%rdx
  adc    $0x0,%rsi
  mov    %rdx,%r11
  shr    $0x20,%rbp
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %rdx,%rbx
  mov    %r8,%r10
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r10
  add    %r8,%rdx
  jb     L854
L1129:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  shr    $0x20,%r8
  add    %rdx,%rbx
  adc    %r8,%r10
  add    %rbx,%r9
  mov    %r9,0x60(%rdi)
  adc    $0x0,%r10
  mov    0x30(%rcx),%r8
  mov    0x38(%rax),%rbx
  add    %r11,%r10
  adc    $0x0,%rsi
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %ebx,%ebp
  shr    $0x20,%rbx
  mov    %rdx,%r11
  mov    %r8,%r9
  imul   %rbx,%rdx
  imul   %rbp,%r8
  imul   %rbp,%r11
  imul   %rbx,%r9
  add    %r8,%rdx
  jb     L452
L41:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  mov    0x30(%rax),%rbp
  shr    $0x20,%r8
  add    %rdx,%r11
  mov    %r9,%rdx
  adc    %r8,%rdx
  add    %r11,%r10
  mov    0x38(%rcx),%r8
  mov    %ebp,%r12d
  adc    $0x0,%rdx
  add    %rsi,%rdx
  setb   %sil
  mov    %rdx,%r11
  shr    $0x20,%rbp
  mov    %r8d,%edx
  shr    $0x20,%r8
  mov    %rdx,%rbx
  movzbl %sil,%esi
  mov    %r8,%r9
  imul   %rbp,%rdx
  imul   %r12,%r8
  imul   %r12,%rbx
  imul   %rbp,%r9
  add    %r8,%rdx
  jb     L993
L493:
  mov    %rdx,%r8
  shl    $0x20,%rdx
  shr    $0x20,%r8
  add    %rdx,%rbx
  mov    %r9,%rdx
  adc    %r8,%rdx
  add    %rbx,%r10
  mov    %r10,0x68(%rdi)
  adc    $0x0,%rdx
  mov    0x38(%rcx),%rcx
  add    %r11,%rdx
  mov    0x38(%rax),%rax
  adc    $0x0,%rsi
  mov    %rdx,%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     L129
L833:
  mov    %rax,%rdx
  shl    $0x20,%rax
  pop    %rbx
  pop    %rbp
  shr    $0x20,%rdx
  add    %rax,%r9
  pop    %r12
  adc    %rdx,%r10
  mov    %r8,%rdx
  add    %r9,%rdx
  adc    %r10,%rsi
  movq   %rdx,%xmm0
  movq   %rsi,%xmm1
  punpcklqdq %xmm1,%xmm0
  movups %xmm0,0x70(%rdi)
  ret
L568:
  mov    $0x1,%esi
  shl    $0x20,%rsi
  add    %rsi,%r9
  jmp    L1173
L129:
  mov    $0x1,%edx
  shl    $0x20,%rdx
  add    %rdx,%r10
  jmp    L833
L993:
  movabs $0x100000000,%r8
  add    %r8,%r9
  jmp    L493
L452:
  movabs $0x100000000,%r8
  add    %r8,%r9
  jmp    L41
L854:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L1129
L1101:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L249
L448:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L96
L801:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L724
L190:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L1114
L137:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L1075
L1206:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L69
L673:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L358
L865:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L1079
L604:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L416
L88:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L687
L1178:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L578
L1099:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L250
L1016:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L879
L595:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L728
L1229:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L501
L814:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L690
L861:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L1212
L858:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L1071
L1090:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L783
L799:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L534
L830:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L149
L46:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L228
L1093:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L928
L736:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L714
L29:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1167
L725:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L257
L709:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L596
L1204:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1015
L277:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L941
L877:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L635
L73:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L316
L414:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L512
L508:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L957
L1004:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L309
L132:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1077
L49:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1221
L1168:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1038
L766:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1130
L582:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L1241
L231:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L425
L234:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L933
L1032:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L524
L116:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L1160
L1020:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L964
L1030:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L749
L807:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L413
L1082:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L397
L1107:
  movabs $0x100000000,%r9
  add    %r9,%r10
  jmp    L352
L342:
  movabs $0x100000000,%r9
  add    %r9,%r11
  jmp    L147
L381:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L495
L669:
  movabs $0x100000000,%r10
  add    %r10,%rsi
  jmp    L971
L1175:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L328
L424:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L929
L1179:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L824
L1181:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L1270
L1057:
  movabs $0x100000000,%r10
  add    %r10,%rdx
  jmp    L862
L208:
  movabs $0x100000000,%r8
  add    %r8,%r11
  jmp    L569
L94:
  movabs $0x100000000,%r8
  add    %r8,%r10
  jmp    L390
L1055:
  movabs $0x100000000,%r8
  add    %r8,%rsi
  jmp    L634
```

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