user: 请将以下的汇编代码转换成C语言代码:

```asm
<bn_mul_comba8>:
  endbr64
  push   %rbp
  push   %rbx
  mov    %rsi,%rcx
  mov    %rdx,%rax
  mov    (%rsi),%rdx
  mov    %edx,%r8d
  shr    $0x20,%rdx
  mov    (%rax),%r10
  mov    %r10d,%r9d
  shr    $0x20,%r10
  mov    %r8,%rsi
  imul   %r10,%rsi
  imul   %r9,%r8
  imul   %rdx,%r9
  imul   %r10,%rdx
  add    %r9,%rsi
  jae    L20
  movabs $0x100000000,%r9
  add    %r9,%rdx
L20:
  mov    %rsi,%r9
  shr    $0x20,%r9
  shl    $0x20,%rsi
  add    %rsi,%r8
  adc    %r9,%rdx
  mov    %r8,(%rdi)
  mov    (%rcx),%rsi
  mov    %esi,%r8d
  shr    $0x20,%rsi
  mov    0x8(%rax),%r11
  mov    %r11d,%r9d
  shr    $0x20,%r11
  mov    %r8,%r10
  imul   %r11,%r10
  imul   %r9,%r8
  imul   %rsi,%r9
  imul   %r11,%rsi
  add    %r9,%r10
  jae    L72
  movabs $0x100000000,%r9
  add    %r9,%rsi
L72:
  mov    %r10,%r9
  shr    $0x20,%r9
  shl    $0x20,%r10
  add    %r10,%r8
  adc    %rsi,%r9
  add    %r8,%rdx
  adc    $0x0,%r9
  mov    0x8(%rcx),%rsi
  mov    %esi,%r8d
  shr    $0x20,%rsi
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r8,%r10
  imul   %rbx,%r10
  imul   %r11,%r8
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L543
  movabs $0x100000000,%r11
  add    %r11,%rsi
L543:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r8
  adc    %r11,%rsi
  add    %r8,%rdx
  adc    $0x0,%rsi
  add    %rsi,%r9
  setb   %sil
  movzbl %sil,%esi
  mov    %rdx,0x8(%rdi)
  mov    0x10(%rcx),%rdx
  mov    %edx,%r8d
  shr    $0x20,%rdx
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r8,%r10
  imul   %rbx,%r10
  imul   %r11,%r8
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L233
  movabs $0x100000000,%r11
  add    %r11,%rdx
L233:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r8
  adc    %r11,%rdx
  add    %r8,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x8(%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    0x8(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L509
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L509:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    (%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    0x10(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L56
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L56:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  mov    %rsi,%r10
  adc    $0x0,%r8
  mov    %r9,0x10(%rdi)
  mov    (%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%esi
  shr    $0x20,%rbx
  mov    %r9,%r11
  imul   %rbx,%r11
  imul   %rsi,%r9
  imul   %rdx,%rsi
  imul   %rbx,%rdx
  add    %rsi,%r11
  jae    L639
  movabs $0x100000000,%rsi
  add    %rsi,%rdx
L639:
  mov    %r11,%rsi
  shr    $0x20,%rsi
  shl    $0x20,%r11
  add    %r11,%r9
  adc    %rsi,%rdx
  add    %r9,%r10
  adc    $0x0,%rdx
  add    %rdx,%r8
  setb   %sil
  movzbl %sil,%esi
  mov    0x8(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L419
  movabs $0x100000000,%r11
  add    %r11,%rdx
L419:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%r10
  adc    $0x0,%rdx
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x10(%rcx),%r8
  mov    %r8d,%ebp
  shr    $0x20,%r8
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r9
  jae    L266
  movabs $0x100000000,%r11
  add    %r11,%r8
L266:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%r8
  add    %r9,%r10
  adc    $0x0,%r8
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x18(%rcx),%r8
  mov    %r8d,%r9d
  shr    $0x20,%r8
  mov    (%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r9,%r11
  imul   %rbp,%r11
  imul   %rbx,%r9
  imul   %r8,%rbx
  imul   %rbp,%r8
  add    %rbx,%r11
  jae    L114
  movabs $0x100000000,%rbx
  add    %rbx,%r8
L114:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r9
  adc    %rbx,%r8
  add    %r9,%r10
  adc    $0x0,%r8
  add    %rdx,%r8
  adc    $0x0,%rsi
  mov    %r10,0x18(%rdi)
  mov    0x20(%rcx),%rdx
  mov    %edx,%r10d
  shr    $0x20,%rdx
  mov    (%rax),%rbx
  mov    %ebx,%r9d
  shr    $0x20,%rbx
  mov    %r10,%r11
  imul   %rbx,%r11
  imul   %r9,%r10
  imul   %rdx,%r9
  imul   %rbx,%rdx
  add    %r9,%r11
  jae    L480
  movabs $0x100000000,%r9
  add    %r9,%rdx
L480:
  mov    %r11,%r9
  shr    $0x20,%r9
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %r9,%rdx
  add    %r10,%r8
  mov    %r8,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L606
  movabs $0x100000000,%r11
  add    %r11,%rdx
L606:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x10(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L327
  movabs $0x100000000,%r11
  add    %r11,%rdx
L327:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x8(%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    0x18(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L265
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L265:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    (%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    0x20(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L541
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L541:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x20(%rdi)
  mov    (%rcx),%rdx
  mov    %edx,%r10d
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r9d
  shr    $0x20,%rbx
  mov    %r10,%r11
  imul   %rbx,%r11
  imul   %r9,%r10
  imul   %rdx,%r9
  imul   %rbx,%rdx
  add    %r9,%r11
  jae    L220
  movabs $0x100000000,%r9
  add    %r9,%rdx
L220:
  mov    %r11,%r9
  shr    $0x20,%r9
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %r9,%rdx
  add    %r10,%rsi
  mov    %rsi,%r9
  adc    $0x0,%rdx
  mov    %rdx,%rsi
  add    %r8,%rsi
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x8(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L585
  movabs $0x100000000,%r11
  add    %r11,%rdx
L585:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x10(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L438
  movabs $0x100000000,%r11
  add    %r11,%rdx
L438:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L241
  movabs $0x100000000,%r11
  add    %r11,%rdx
L241:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x20(%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    0x8(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L462
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L462:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x28(%rcx),%rsi
  mov    %esi,%r10d
  shr    $0x20,%rsi
  mov    (%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r10,%r11
  imul   %rbp,%r11
  imul   %rbx,%r10
  imul   %rsi,%rbx
  imul   %rbp,%rsi
  add    %rbx,%r11
  jae    L630
  movabs $0x100000000,%rbx
  add    %rbx,%rsi
L630:
  mov    %r11,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %rbx,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x28(%rdi)
  mov    0x30(%rcx),%rdx
  mov    %edx,%r10d
  shr    $0x20,%rdx
  mov    (%rax),%rbx
  mov    %ebx,%r9d
  shr    $0x20,%rbx
  mov    %r10,%r11
  imul   %rbx,%r11
  imul   %r9,%r10
  imul   %rdx,%r9
  imul   %rbx,%rdx
  add    %r9,%r11
  jae    L320
  movabs $0x100000000,%r9
  add    %r9,%rdx
L320:
  mov    %r11,%r9
  shr    $0x20,%r9
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %r9,%rdx
  add    %r10,%rsi
  mov    %rsi,%r9
  adc    $0x0,%rdx
  mov    %rdx,%rsi
  add    %r8,%rsi
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L276
  movabs $0x100000000,%r11
  add    %r11,%rdx
L276:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x20(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L113
  movabs $0x100000000,%r11
  add    %r11,%rdx
L113:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L551
  movabs $0x100000000,%r11
  add    %r11,%rdx
L551:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x10(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L117
  movabs $0x100000000,%r11
  add    %r11,%rdx
L117:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x8(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L97
  movabs $0x100000000,%r11
  add    %r11,%rsi
L97:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    (%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L306
  movabs $0x100000000,%r11
  add    %r11,%rsi
L306:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x30(%rdi)
  mov    (%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L539
  movabs $0x100000000,%r11
  add    %r11,%rdx
L539:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %rsi,%r9
  adc    $0x0,%rdx
  mov    %rdx,%rsi
  add    %r8,%rsi
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x8(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L385
  movabs $0x100000000,%r11
  add    %r11,%rdx
L385:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x10(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L26
  movabs $0x100000000,%r11
  add    %r11,%rdx
L26:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L409
  movabs $0x100000000,%r11
  add    %r11,%rdx
L409:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x20(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L581
  movabs $0x100000000,%r11
  add    %r11,%rdx
L581:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L8
  movabs $0x100000000,%r11
  add    %r11,%rdx
L8:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x30(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L98
  movabs $0x100000000,%r11
  add    %r11,%rsi
L98:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x38(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    (%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L476
  movabs $0x100000000,%r11
  add    %r11,%rsi
L476:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x38(%rdi)
  mov    0x38(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x8(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L152
  movabs $0x100000000,%r11
  add    %r11,%rdx
L152:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  adc    $0x0,%rdx
  add    %r8,%rdx
  mov    %rdx,%r10
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x30(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L414
  movabs $0x100000000,%r11
  add    %r11,%rdx
L414:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  adc    $0x0,%rdx
  add    %rdx,%r10
  adc    $0x0,%r8
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L173
  movabs $0x100000000,%r11
  add    %r11,%rdx
L173:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  adc    $0x0,%rdx
  add    %rdx,%r10
  adc    $0x0,%r8
  mov    0x20(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L230
  movabs $0x100000000,%r11
  add    %r11,%rdx
L230:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  adc    $0x0,%rdx
  add    %rdx,%r10
  adc    $0x0,%r8
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L412
  movabs $0x100000000,%r11
  add    %r11,%rdx
L412:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %rsi,%r9
  adc    $0x0,%rdx
  add    %r10,%rdx
  adc    $0x0,%r8
  mov    0x10(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L368
  movabs $0x100000000,%r11
  add    %r11,%rsi
L368:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x8(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L322
  movabs $0x100000000,%r11
  add    %r11,%rsi
L322:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x40(%rdi)
  mov    0x10(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L473
  movabs $0x100000000,%r11
  add    %r11,%rdx
L473:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  mov    %rsi,%r10
  adc    $0x0,%rdx
  add    %rdx,%r8
  setb   %sil
  movzbl %sil,%esi
  mov    0x18(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L195
  movabs $0x100000000,%r11
  add    %r11,%rdx
L195:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%r10
  adc    $0x0,%rdx
  add    %rdx,%r8
  adc    $0x0,%rsi
  mov    0x20(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L408
  movabs $0x100000000,%r11
  add    %r11,%rdx
L408:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%r10
  adc    $0x0,%rdx
  add    %rdx,%r8
  adc    $0x0,%rsi
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L77
  movabs $0x100000000,%r11
  add    %r11,%rdx
L77:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x30(%rcx),%r8
  mov    %r8d,%ebp
  shr    $0x20,%r8
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L170
  movabs $0x100000000,%r11
  add    %r11,%r8
L170:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%r8
  add    %r10,%r9
  adc    $0x0,%r8
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x38(%rcx),%r8
  mov    %r8d,%ebp
  shr    $0x20,%r8
  mov    0x10(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L199
  movabs $0x100000000,%r11
  add    %r11,%r8
L199:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%r8
  add    %r10,%r9
  adc    $0x0,%r8
  add    %rdx,%r8
  adc    $0x0,%rsi
  mov    %r9,0x48(%rdi)
  mov    0x38(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x18(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L127
  movabs $0x100000000,%r11
  add    %r11,%rdx
L127:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %r9,%r8
  mov    %r8,%r10
  adc    $0x0,%rdx
  add    %rdx,%rsi
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x30(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L171
  movabs $0x100000000,%r11
  add    %r11,%rdx
L171:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r9,%r10
  adc    $0x0,%rdx
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L63
  movabs $0x100000000,%r11
  add    %r11,%rdx
L63:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x20(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L270
  movabs $0x100000000,%r11
  add    %r11,%rsi
L270:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x18(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r10
  jae    L218
  movabs $0x100000000,%r11
  add    %r11,%rsi
L218:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%rsi
  add    %r10,%r9
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r9,0x50(%rdi)
  mov    0x20(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L236
  movabs $0x100000000,%r11
  add    %r11,%rdx
L236:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %r9,%rsi
  mov    %rsi,%r10
  adc    $0x0,%rdx
  add    %rdx,%r8
  setb   %sil
  movzbl %sil,%esi
  mov    0x28(%rcx),%rdx
  mov    %edx,%ebp
  shr    $0x20,%rdx
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r9
  jae    L613
  movabs $0x100000000,%r11
  add    %r11,%rdx
L613:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rdx
  add    %r10,%r9
  adc    $0x0,%rdx
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x30(%rcx),%r8
  mov    %r8d,%ebp
  shr    $0x20,%r8
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L141
  movabs $0x100000000,%r11
  add    %r11,%r8
L141:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%r8
  add    %r10,%r9
  adc    $0x0,%r8
  add    %r8,%rdx
  adc    $0x0,%rsi
  mov    0x38(%rcx),%r8
  mov    %r8d,%ebp
  shr    $0x20,%r8
  mov    0x20(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r10
  imul   %rbx,%r10
  imul   %r11,%rbp
  imul   %r8,%r11
  imul   %rbx,%r8
  add    %r11,%r10
  jae    L580
  movabs $0x100000000,%r11
  add    %r11,%r8
L580:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %rbp,%r10
  adc    %r11,%r8
  add    %r10,%r9
  adc    $0x0,%r8
  add    %rdx,%r8
  adc    $0x0,%rsi
  mov    %r9,0x58(%rdi)
  mov    0x38(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x28(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %r9,%r10
  imul   %rbx,%r10
  imul   %r11,%r9
  imul   %rdx,%r11
  imul   %rbx,%rdx
  add    %r11,%r10
  jae    L337
  movabs $0x100000000,%r11
  add    %r11,%rdx
L337:
  mov    %r10,%r11
  shr    $0x20,%r11
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %r11,%rdx
  add    %r9,%r8
  mov    %r8,%r10
  adc    $0x0,%rdx
  add    %rsi,%rdx
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x30(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x30(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r9
  jae    L256
  movabs $0x100000000,%r11
  add    %r11,%rsi
L256:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rsi
  add    %r9,%r10
  adc    $0x0,%rsi
  add    %rsi,%rdx
  adc    $0x0,%r8
  mov    0x28(%rcx),%rsi
  mov    %esi,%ebp
  shr    $0x20,%rsi
  mov    0x38(%rax),%rbx
  mov    %ebx,%r11d
  shr    $0x20,%rbx
  mov    %rbp,%r9
  imul   %rbx,%r9
  imul   %r11,%rbp
  imul   %rsi,%r11
  imul   %rbx,%rsi
  add    %r11,%r9
  jae    L410
  movabs $0x100000000,%r11
  add    %r11,%rsi
L410:
  mov    %r9,%r11
  shr    $0x20,%r11
  shl    $0x20,%r9
  add    %rbp,%r9
  adc    %r11,%rsi
  add    %r9,%r10
  adc    $0x0,%rsi
  add    %rdx,%rsi
  adc    $0x0,%r8
  mov    %r10,0x60(%rdi)
  mov    0x30(%rcx),%rdx
  mov    %edx,%r10d
  shr    $0x20,%rdx
  mov    0x38(%rax),%rbx
  mov    %ebx,%r9d
  shr    $0x20,%rbx
  mov    %r10,%r11
  imul   %rbx,%r11
  imul   %r9,%r10
  imul   %rdx,%r9
  imul   %rbx,%rdx
  add    %r9,%r11
  jae    L222
  movabs $0x100000000,%r9
  add    %r9,%rdx
L222:
  mov    %r11,%r9
  shr    $0x20,%r9
  shl    $0x20,%r11
  add    %r11,%r10
  adc    %r9,%rdx
  add    %r10,%rsi
  adc    $0x0,%rdx
  add    %r8,%rdx
  mov    %rdx,%r11
  setb   %r8b
  movzbl %r8b,%r8d
  mov    0x38(%rcx),%rdx
  mov    %edx,%r9d
  shr    $0x20,%rdx
  mov    0x30(%rax),%rbp
  mov    %ebp,%ebx
  shr    $0x20,%rbp
  mov    %r9,%r10
  imul   %rbp,%r10
  imul   %rbx,%r9
  imul   %rdx,%rbx
  imul   %rbp,%rdx
  add    %rbx,%r10
  jae    L614
  movabs $0x100000000,%rbx
  add    %rbx,%rdx
L614:
  mov    %r10,%rbx
  shr    $0x20,%rbx
  shl    $0x20,%r10
  add    %r10,%r9
  adc    %rbx,%rdx
  add    %r9,%rsi
  adc    $0x0,%rdx
  add    %r11,%rdx
  adc    $0x0,%r8
  mov    %rsi,0x68(%rdi)
  mov    0x38(%rcx),%rcx
  mov    %ecx,%esi
  shr    $0x20,%rcx
  mov    0x38(%rax),%rax
  mov    %eax,%r10d
  shr    $0x20,%rax
  mov    %rsi,%r9
  imul   %rax,%r9
  imul   %r10,%rsi
  imul   %rcx,%r10
  imul   %rcx,%rax
  add    %r10,%r9
  jae    L511
  movabs $0x100000000,%rcx
  add    %rcx,%rax
L511:
  mov    %r9,%rcx
  shr    $0x20,%rcx
  shl    $0x20,%r9
  add    %r9,%rsi
  adc    %rcx,%rax
  add    %rsi,%rdx
  mov    %rdx,0x70(%rdi)
  adc    %rax,%r8
  mov    %r8,0x78(%rdi)
  pop    %rbx
  pop    %rbp
  ret
```

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