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

```asm
<bn_sqr_comba8>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x418,%rsp
  mov    %rdi,-0x488(%rbp)
  mov    %rsi,-0x490(%rbp)
  movq   $0x0,-0x470(%rbp)
  movq   $0x0,-0x468(%rbp)
  movq   $0x0,-0x460(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x458(%rbp)
  mov    -0x458(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x338(%rbp)
  shrq   $0x20,-0x458(%rbp)
  mov    -0x338(%rbp),%rax
  imul   -0x458(%rbp),%rax
  mov    %rax,-0x330(%rbp)
  mov    -0x338(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x338(%rbp)
  mov    -0x458(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x458(%rbp)
  mov    -0x330(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x458(%rbp)
  shlq   $0x21,-0x330(%rbp)
  mov    -0x330(%rbp),%rax
  add    %rax,-0x338(%rbp)
  mov    -0x338(%rbp),%rax
  cmp    -0x330(%rbp),%rax
  jae    L334
  addq   $0x1,-0x458(%rbp)
L334:
  mov    -0x338(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x458(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1915
  addq   $0x1,-0x478(%rbp)
L1915:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2035
  addq   $0x1,-0x460(%rbp)
L2035:
  mov    -0x488(%rbp),%rax
  mov    -0x470(%rbp),%rdx
  mov    %rdx,(%rax)
  movq   $0x0,-0x470(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x310(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x450(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x310(%rbp),%rax
  mov    %rax,-0x308(%rbp)
  mov    -0x310(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x310(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x450(%rbp),%rax
  mov    %rax,-0x300(%rbp)
  mov    -0x450(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x450(%rbp)
  mov    -0x300(%rbp),%rax
  add    %rax,-0x308(%rbp)
  mov    -0x308(%rbp),%rax
  cmp    -0x300(%rbp),%rax
  jae    L887
  movabs $0x100000000,%rax
  add    %rax,-0x450(%rbp)
L887:
  mov    -0x308(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x450(%rbp)
  mov    -0x308(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x300(%rbp)
  mov    -0x300(%rbp),%rax
  add    %rax,-0x310(%rbp)
  mov    -0x310(%rbp),%rax
  cmp    -0x300(%rbp),%rax
  jae    L514
  addq   $0x1,-0x450(%rbp)
L514:
  mov    -0x310(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x450(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1588
  addq   $0x1,-0x470(%rbp)
L1588:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1766
  addq   $0x1,-0x478(%rbp)
L1766:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L297
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L297
  addq   $0x1,-0x470(%rbp)
L297:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1922
  addq   $0x1,-0x470(%rbp)
L1922:
  mov    -0x488(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x468(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x468(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x8(%rax),%rax
  mov    %rax,-0x448(%rbp)
  mov    -0x448(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x2f8(%rbp)
  shrq   $0x20,-0x448(%rbp)
  mov    -0x2f8(%rbp),%rax
  imul   -0x448(%rbp),%rax
  mov    %rax,-0x2f0(%rbp)
  mov    -0x2f8(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x2f8(%rbp)
  mov    -0x448(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x448(%rbp)
  mov    -0x2f0(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x448(%rbp)
  shlq   $0x21,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  add    %rax,-0x2f8(%rbp)
  mov    -0x2f8(%rbp),%rax
  cmp    -0x2f0(%rbp),%rax
  jae    L877
  addq   $0x1,-0x448(%rbp)
L877:
  mov    -0x2f8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x448(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1441
  addq   $0x1,-0x478(%rbp)
L1441:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1190
  addq   $0x1,-0x468(%rbp)
L1190:
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x2e8(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x440(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x2e8(%rbp),%rax
  mov    %rax,-0x2e0(%rbp)
  mov    -0x2e8(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x2e8(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x440(%rbp),%rax
  mov    %rax,-0x2d8(%rbp)
  mov    -0x440(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x440(%rbp)
  mov    -0x2d8(%rbp),%rax
  add    %rax,-0x2e0(%rbp)
  mov    -0x2e0(%rbp),%rax
  cmp    -0x2d8(%rbp),%rax
  jae    L1820
  movabs $0x100000000,%rax
  add    %rax,-0x440(%rbp)
L1820:
  mov    -0x2e0(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x440(%rbp)
  mov    -0x2e0(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x2d8(%rbp)
  mov    -0x2d8(%rbp),%rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  cmp    -0x2d8(%rbp),%rax
  jae    L227
  addq   $0x1,-0x440(%rbp)
L227:
  mov    -0x2e8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x440(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1349
  addq   $0x1,-0x468(%rbp)
L1349:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L457
  addq   $0x1,-0x478(%rbp)
L457:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1125
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1125
  addq   $0x1,-0x468(%rbp)
L1125:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L538
  addq   $0x1,-0x468(%rbp)
L538:
  mov    -0x488(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x460(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x460(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x2d0(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x438(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x2d0(%rbp),%rax
  mov    %rax,-0x2c8(%rbp)
  mov    -0x2d0(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x2d0(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x438(%rbp),%rax
  mov    %rax,-0x2c0(%rbp)
  mov    -0x438(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x438(%rbp)
  mov    -0x2c0(%rbp),%rax
  add    %rax,-0x2c8(%rbp)
  mov    -0x2c8(%rbp),%rax
  cmp    -0x2c0(%rbp),%rax
  jae    L1629
  movabs $0x100000000,%rax
  add    %rax,-0x438(%rbp)
L1629:
  mov    -0x2c8(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x438(%rbp)
  mov    -0x2c8(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x2c0(%rbp)
  mov    -0x2c0(%rbp),%rax
  add    %rax,-0x2d0(%rbp)
  mov    -0x2d0(%rbp),%rax
  cmp    -0x2c0(%rbp),%rax
  jae    L348
  addq   $0x1,-0x438(%rbp)
L348:
  mov    -0x2d0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x438(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L668
  addq   $0x1,-0x460(%rbp)
L668:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1972
  addq   $0x1,-0x478(%rbp)
L1972:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L486
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L486
  addq   $0x1,-0x460(%rbp)
L486:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L494
  addq   $0x1,-0x460(%rbp)
L494:
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x2b8(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x430(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x2b8(%rbp),%rax
  mov    %rax,-0x2b0(%rbp)
  mov    -0x2b8(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x2b8(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x430(%rbp),%rax
  mov    %rax,-0x2a8(%rbp)
  mov    -0x430(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x430(%rbp)
  mov    -0x2a8(%rbp),%rax
  add    %rax,-0x2b0(%rbp)
  mov    -0x2b0(%rbp),%rax
  cmp    -0x2a8(%rbp),%rax
  jae    L1539
  movabs $0x100000000,%rax
  add    %rax,-0x430(%rbp)
L1539:
  mov    -0x2b0(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x430(%rbp)
  mov    -0x2b0(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x2a8(%rbp)
  mov    -0x2a8(%rbp),%rax
  add    %rax,-0x2b8(%rbp)
  mov    -0x2b8(%rbp),%rax
  cmp    -0x2a8(%rbp),%rax
  jae    L1726
  addq   $0x1,-0x430(%rbp)
L1726:
  mov    -0x2b8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x430(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L41
  addq   $0x1,-0x460(%rbp)
L41:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1973
  addq   $0x1,-0x478(%rbp)
L1973:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L686
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L686
  addq   $0x1,-0x460(%rbp)
L686:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L343
  addq   $0x1,-0x460(%rbp)
L343:
  mov    -0x488(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x470(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x470(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x10(%rax),%rax
  mov    %rax,-0x428(%rbp)
  mov    -0x428(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x2a0(%rbp)
  shrq   $0x20,-0x428(%rbp)
  mov    -0x2a0(%rbp),%rax
  imul   -0x428(%rbp),%rax
  mov    %rax,-0x298(%rbp)
  mov    -0x2a0(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x2a0(%rbp)
  mov    -0x428(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x428(%rbp)
  mov    -0x298(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x428(%rbp)
  shlq   $0x21,-0x298(%rbp)
  mov    -0x298(%rbp),%rax
  add    %rax,-0x2a0(%rbp)
  mov    -0x2a0(%rbp),%rax
  cmp    -0x298(%rbp),%rax
  jae    L851
  addq   $0x1,-0x428(%rbp)
L851:
  mov    -0x2a0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x428(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1964
  addq   $0x1,-0x478(%rbp)
L1964:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L636
  addq   $0x1,-0x470(%rbp)
L636:
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x290(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x420(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x290(%rbp),%rax
  mov    %rax,-0x288(%rbp)
  mov    -0x290(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x290(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x420(%rbp),%rax
  mov    %rax,-0x280(%rbp)
  mov    -0x420(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x420(%rbp)
  mov    -0x280(%rbp),%rax
  add    %rax,-0x288(%rbp)
  mov    -0x288(%rbp),%rax
  cmp    -0x280(%rbp),%rax
  jae    L724
  movabs $0x100000000,%rax
  add    %rax,-0x420(%rbp)
L724:
  mov    -0x288(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x420(%rbp)
  mov    -0x288(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x280(%rbp)
  mov    -0x280(%rbp),%rax
  add    %rax,-0x290(%rbp)
  mov    -0x290(%rbp),%rax
  cmp    -0x280(%rbp),%rax
  jae    L46
  addq   $0x1,-0x420(%rbp)
L46:
  mov    -0x290(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x420(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L288
  addq   $0x1,-0x470(%rbp)
L288:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1376
  addq   $0x1,-0x478(%rbp)
L1376:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L536
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L536
  addq   $0x1,-0x470(%rbp)
L536:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L38
  addq   $0x1,-0x470(%rbp)
L38:
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x278(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x418(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x278(%rbp),%rax
  mov    %rax,-0x270(%rbp)
  mov    -0x278(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x278(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x418(%rbp),%rax
  mov    %rax,-0x268(%rbp)
  mov    -0x418(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x418(%rbp)
  mov    -0x268(%rbp),%rax
  add    %rax,-0x270(%rbp)
  mov    -0x270(%rbp),%rax
  cmp    -0x268(%rbp),%rax
  jae    L930
  movabs $0x100000000,%rax
  add    %rax,-0x418(%rbp)
L930:
  mov    -0x270(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x418(%rbp)
  mov    -0x270(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x268(%rbp)
  mov    -0x268(%rbp),%rax
  add    %rax,-0x278(%rbp)
  mov    -0x278(%rbp),%rax
  cmp    -0x268(%rbp),%rax
  jae    L1544
  addq   $0x1,-0x418(%rbp)
L1544:
  mov    -0x278(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x418(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L608
  addq   $0x1,-0x470(%rbp)
L608:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L685
  addq   $0x1,-0x478(%rbp)
L685:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L318
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L318
  addq   $0x1,-0x470(%rbp)
L318:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1892
  addq   $0x1,-0x470(%rbp)
L1892:
  mov    -0x488(%rbp),%rax
  lea    0x20(%rax),%rdx
  mov    -0x468(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x468(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x260(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x410(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x260(%rbp),%rax
  mov    %rax,-0x258(%rbp)
  mov    -0x260(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x260(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x410(%rbp),%rax
  mov    %rax,-0x250(%rbp)
  mov    -0x410(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x410(%rbp)
  mov    -0x250(%rbp),%rax
  add    %rax,-0x258(%rbp)
  mov    -0x258(%rbp),%rax
  cmp    -0x250(%rbp),%rax
  jae    L1419
  movabs $0x100000000,%rax
  add    %rax,-0x410(%rbp)
L1419:
  mov    -0x258(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x410(%rbp)
  mov    -0x258(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x250(%rbp)
  mov    -0x250(%rbp),%rax
  add    %rax,-0x260(%rbp)
  mov    -0x260(%rbp),%rax
  cmp    -0x250(%rbp),%rax
  jae    L1872
  addq   $0x1,-0x410(%rbp)
L1872:
  mov    -0x260(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x410(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L922
  addq   $0x1,-0x468(%rbp)
L922:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1739
  addq   $0x1,-0x478(%rbp)
L1739:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L447
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L447
  addq   $0x1,-0x468(%rbp)
L447:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L889
  addq   $0x1,-0x468(%rbp)
L889:
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x248(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x408(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x248(%rbp),%rax
  mov    %rax,-0x240(%rbp)
  mov    -0x248(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x248(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x408(%rbp),%rax
  mov    %rax,-0x238(%rbp)
  mov    -0x408(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x408(%rbp)
  mov    -0x238(%rbp),%rax
  add    %rax,-0x240(%rbp)
  mov    -0x240(%rbp),%rax
  cmp    -0x238(%rbp),%rax
  jae    L57
  movabs $0x100000000,%rax
  add    %rax,-0x408(%rbp)
L57:
  mov    -0x240(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x408(%rbp)
  mov    -0x240(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x238(%rbp)
  mov    -0x238(%rbp),%rax
  add    %rax,-0x248(%rbp)
  mov    -0x248(%rbp),%rax
  cmp    -0x238(%rbp),%rax
  jae    L648
  addq   $0x1,-0x408(%rbp)
L648:
  mov    -0x248(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x408(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1577
  addq   $0x1,-0x468(%rbp)
L1577:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1704
  addq   $0x1,-0x478(%rbp)
L1704:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L2072
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L2072
  addq   $0x1,-0x468(%rbp)
L2072:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1211
  addq   $0x1,-0x468(%rbp)
L1211:
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x230(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x400(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x230(%rbp),%rax
  mov    %rax,-0x228(%rbp)
  mov    -0x230(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x230(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x400(%rbp),%rax
  mov    %rax,-0x220(%rbp)
  mov    -0x400(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x400(%rbp)
  mov    -0x220(%rbp),%rax
  add    %rax,-0x228(%rbp)
  mov    -0x228(%rbp),%rax
  cmp    -0x220(%rbp),%rax
  jae    L1326
  movabs $0x100000000,%rax
  add    %rax,-0x400(%rbp)
L1326:
  mov    -0x228(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x400(%rbp)
  mov    -0x228(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x220(%rbp)
  mov    -0x220(%rbp),%rax
  add    %rax,-0x230(%rbp)
  mov    -0x230(%rbp),%rax
  cmp    -0x220(%rbp),%rax
  jae    L1378
  addq   $0x1,-0x400(%rbp)
L1378:
  mov    -0x230(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x400(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L609
  addq   $0x1,-0x468(%rbp)
L609:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L168
  addq   $0x1,-0x478(%rbp)
L168:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L960
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L960
  addq   $0x1,-0x468(%rbp)
L960:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1606
  addq   $0x1,-0x468(%rbp)
L1606:
  mov    -0x488(%rbp),%rax
  lea    0x28(%rax),%rdx
  mov    -0x460(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x460(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x18(%rax),%rax
  mov    %rax,-0x3f8(%rbp)
  mov    -0x3f8(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x218(%rbp)
  shrq   $0x20,-0x3f8(%rbp)
  mov    -0x218(%rbp),%rax
  imul   -0x3f8(%rbp),%rax
  mov    %rax,-0x210(%rbp)
  mov    -0x218(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x218(%rbp)
  mov    -0x3f8(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x3f8(%rbp)
  mov    -0x210(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x3f8(%rbp)
  shlq   $0x21,-0x210(%rbp)
  mov    -0x210(%rbp),%rax
  add    %rax,-0x218(%rbp)
  mov    -0x218(%rbp),%rax
  cmp    -0x210(%rbp),%rax
  jae    L2136
  addq   $0x1,-0x3f8(%rbp)
L2136:
  mov    -0x218(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3f8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1945
  addq   $0x1,-0x478(%rbp)
L1945:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1184
  addq   $0x1,-0x460(%rbp)
L1184:
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x208(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3f0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x208(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  mov    -0x208(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x208(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3f0(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  mov    -0x3f0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3f0(%rbp)
  mov    -0x1f8(%rbp),%rax
  add    %rax,-0x200(%rbp)
  mov    -0x200(%rbp),%rax
  cmp    -0x1f8(%rbp),%rax
  jae    L1223
  movabs $0x100000000,%rax
  add    %rax,-0x3f0(%rbp)
L1223:
  mov    -0x200(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3f0(%rbp)
  mov    -0x200(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x1f8(%rbp)
  mov    -0x1f8(%rbp),%rax
  add    %rax,-0x208(%rbp)
  mov    -0x208(%rbp),%rax
  cmp    -0x1f8(%rbp),%rax
  jae    L1994
  addq   $0x1,-0x3f0(%rbp)
L1994:
  mov    -0x208(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3f0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L427
  addq   $0x1,-0x460(%rbp)
L427:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1809
  addq   $0x1,-0x478(%rbp)
L1809:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1762
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1762
  addq   $0x1,-0x460(%rbp)
L1762:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L399
  addq   $0x1,-0x460(%rbp)
L399:
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x1f0(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3e8(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x1f0(%rbp),%rax
  mov    %rax,-0x1e8(%rbp)
  mov    -0x1f0(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x1f0(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3e8(%rbp),%rax
  mov    %rax,-0x1e0(%rbp)
  mov    -0x3e8(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3e8(%rbp)
  mov    -0x1e0(%rbp),%rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  cmp    -0x1e0(%rbp),%rax
  jae    L1658
  movabs $0x100000000,%rax
  add    %rax,-0x3e8(%rbp)
L1658:
  mov    -0x1e8(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x1e0(%rbp)
  mov    -0x1e0(%rbp),%rax
  add    %rax,-0x1f0(%rbp)
  mov    -0x1f0(%rbp),%rax
  cmp    -0x1e0(%rbp),%rax
  jae    L1391
  addq   $0x1,-0x3e8(%rbp)
L1391:
  mov    -0x1f0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3e8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1413
  addq   $0x1,-0x460(%rbp)
L1413:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L119
  addq   $0x1,-0x478(%rbp)
L119:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1871
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1871
  addq   $0x1,-0x460(%rbp)
L1871:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1325
  addq   $0x1,-0x460(%rbp)
L1325:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x1d8(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3e0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x1d8(%rbp),%rax
  mov    %rax,-0x1d0(%rbp)
  mov    -0x1d8(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x1d8(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3e0(%rbp),%rax
  mov    %rax,-0x1c8(%rbp)
  mov    -0x3e0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3e0(%rbp)
  mov    -0x1c8(%rbp),%rax
  add    %rax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%rax
  cmp    -0x1c8(%rbp),%rax
  jae    L1317
  movabs $0x100000000,%rax
  add    %rax,-0x3e0(%rbp)
L1317:
  mov    -0x1d0(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3e0(%rbp)
  mov    -0x1d0(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x1c8(%rbp)
  mov    -0x1c8(%rbp),%rax
  add    %rax,-0x1d8(%rbp)
  mov    -0x1d8(%rbp),%rax
  cmp    -0x1c8(%rbp),%rax
  jae    L631
  addq   $0x1,-0x3e0(%rbp)
L631:
  mov    -0x1d8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3e0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L531
  addq   $0x1,-0x460(%rbp)
L531:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L742
  addq   $0x1,-0x478(%rbp)
L742:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L2078
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L2078
  addq   $0x1,-0x460(%rbp)
L2078:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1219
  addq   $0x1,-0x460(%rbp)
L1219:
  mov    -0x488(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x470(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x470(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x1c0(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3d8(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x1c0(%rbp),%rax
  mov    %rax,-0x1b8(%rbp)
  mov    -0x1c0(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x1c0(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3d8(%rbp),%rax
  mov    %rax,-0x1b0(%rbp)
  mov    -0x3d8(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3d8(%rbp)
  mov    -0x1b0(%rbp),%rax
  add    %rax,-0x1b8(%rbp)
  mov    -0x1b8(%rbp),%rax
  cmp    -0x1b0(%rbp),%rax
  jae    L937
  movabs $0x100000000,%rax
  add    %rax,-0x3d8(%rbp)
L937:
  mov    -0x1b8(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3d8(%rbp)
  mov    -0x1b8(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x1b0(%rbp)
  mov    -0x1b0(%rbp),%rax
  add    %rax,-0x1c0(%rbp)
  mov    -0x1c0(%rbp),%rax
  cmp    -0x1b0(%rbp),%rax
  jae    L65
  addq   $0x1,-0x3d8(%rbp)
L65:
  mov    -0x1c0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3d8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L200
  addq   $0x1,-0x470(%rbp)
L200:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1374
  addq   $0x1,-0x478(%rbp)
L1374:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1238
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1238
  addq   $0x1,-0x470(%rbp)
L1238:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L478
  addq   $0x1,-0x470(%rbp)
L478:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x1a8(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3d0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x1a8(%rbp),%rax
  mov    %rax,-0x1a0(%rbp)
  mov    -0x1a8(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x1a8(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3d0(%rbp),%rax
  mov    %rax,-0x198(%rbp)
  mov    -0x3d0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3d0(%rbp)
  mov    -0x198(%rbp),%rax
  add    %rax,-0x1a0(%rbp)
  mov    -0x1a0(%rbp),%rax
  cmp    -0x198(%rbp),%rax
  jae    L1952
  movabs $0x100000000,%rax
  add    %rax,-0x3d0(%rbp)
L1952:
  mov    -0x1a0(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3d0(%rbp)
  mov    -0x1a0(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x198(%rbp)
  mov    -0x198(%rbp),%rax
  add    %rax,-0x1a8(%rbp)
  mov    -0x1a8(%rbp),%rax
  cmp    -0x198(%rbp),%rax
  jae    L308
  addq   $0x1,-0x3d0(%rbp)
L308:
  mov    -0x1a8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3d0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L556
  addq   $0x1,-0x470(%rbp)
L556:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1153
  addq   $0x1,-0x478(%rbp)
L1153:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L843
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L843
  addq   $0x1,-0x470(%rbp)
L843:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2010
  addq   $0x1,-0x470(%rbp)
L2010:
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x190(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3c8(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x190(%rbp),%rax
  mov    %rax,-0x188(%rbp)
  mov    -0x190(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x190(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3c8(%rbp),%rax
  mov    %rax,-0x180(%rbp)
  mov    -0x3c8(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3c8(%rbp)
  mov    -0x180(%rbp),%rax
  add    %rax,-0x188(%rbp)
  mov    -0x188(%rbp),%rax
  cmp    -0x180(%rbp),%rax
  jae    L1911
  movabs $0x100000000,%rax
  add    %rax,-0x3c8(%rbp)
L1911:
  mov    -0x188(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3c8(%rbp)
  mov    -0x188(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x180(%rbp)
  mov    -0x180(%rbp),%rax
  add    %rax,-0x190(%rbp)
  mov    -0x190(%rbp),%rax
  cmp    -0x180(%rbp),%rax
  jae    L601
  addq   $0x1,-0x3c8(%rbp)
L601:
  mov    -0x190(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3c8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1869
  addq   $0x1,-0x470(%rbp)
L1869:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1835
  addq   $0x1,-0x478(%rbp)
L1835:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1751
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1751
  addq   $0x1,-0x470(%rbp)
L1751:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1394
  addq   $0x1,-0x470(%rbp)
L1394:
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x178(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3c0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x178(%rbp),%rax
  mov    %rax,-0x170(%rbp)
  mov    -0x178(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x178(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3c0(%rbp),%rax
  mov    %rax,-0x168(%rbp)
  mov    -0x3c0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3c0(%rbp)
  mov    -0x168(%rbp),%rax
  add    %rax,-0x170(%rbp)
  mov    -0x170(%rbp),%rax
  cmp    -0x168(%rbp),%rax
  jae    L1258
  movabs $0x100000000,%rax
  add    %rax,-0x3c0(%rbp)
L1258:
  mov    -0x170(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3c0(%rbp)
  mov    -0x170(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x168(%rbp)
  mov    -0x168(%rbp),%rax
  add    %rax,-0x178(%rbp)
  mov    -0x178(%rbp),%rax
  cmp    -0x168(%rbp),%rax
  jae    L2144
  addq   $0x1,-0x3c0(%rbp)
L2144:
  mov    -0x178(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3c0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L218
  addq   $0x1,-0x470(%rbp)
L218:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L28
  addq   $0x1,-0x478(%rbp)
L28:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L300
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L300
  addq   $0x1,-0x470(%rbp)
L300:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1119
  addq   $0x1,-0x470(%rbp)
L1119:
  mov    -0x488(%rbp),%rax
  lea    0x38(%rax),%rdx
  mov    -0x468(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x468(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x20(%rax),%rax
  mov    %rax,-0x3b8(%rbp)
  mov    -0x3b8(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x160(%rbp)
  shrq   $0x20,-0x3b8(%rbp)
  mov    -0x160(%rbp),%rax
  imul   -0x3b8(%rbp),%rax
  mov    %rax,-0x158(%rbp)
  mov    -0x160(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x160(%rbp)
  mov    -0x3b8(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x3b8(%rbp)
  mov    -0x158(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x3b8(%rbp)
  shlq   $0x21,-0x158(%rbp)
  mov    -0x158(%rbp),%rax
  add    %rax,-0x160(%rbp)
  mov    -0x160(%rbp),%rax
  cmp    -0x158(%rbp),%rax
  jae    L1138
  addq   $0x1,-0x3b8(%rbp)
L1138:
  mov    -0x160(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3b8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1077
  addq   $0x1,-0x478(%rbp)
L1077:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1759
  addq   $0x1,-0x468(%rbp)
L1759:
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x150(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3b0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x150(%rbp),%rax
  mov    %rax,-0x148(%rbp)
  mov    -0x150(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x150(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3b0(%rbp),%rax
  mov    %rax,-0x140(%rbp)
  mov    -0x3b0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3b0(%rbp)
  mov    -0x140(%rbp),%rax
  add    %rax,-0x148(%rbp)
  mov    -0x148(%rbp),%rax
  cmp    -0x140(%rbp),%rax
  jae    L1447
  movabs $0x100000000,%rax
  add    %rax,-0x3b0(%rbp)
L1447:
  mov    -0x148(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3b0(%rbp)
  mov    -0x148(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x140(%rbp)
  mov    -0x140(%rbp),%rax
  add    %rax,-0x150(%rbp)
  mov    -0x150(%rbp),%rax
  cmp    -0x140(%rbp),%rax
  jae    L363
  addq   $0x1,-0x3b0(%rbp)
L363:
  mov    -0x150(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3b0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L162
  addq   $0x1,-0x468(%rbp)
L162:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L2176
  addq   $0x1,-0x478(%rbp)
L2176:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1193
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1193
  addq   $0x1,-0x468(%rbp)
L1193:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2123
  addq   $0x1,-0x468(%rbp)
L2123:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x138(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3a8(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x138(%rbp),%rax
  mov    %rax,-0x130(%rbp)
  mov    -0x138(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x138(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3a8(%rbp),%rax
  mov    %rax,-0x128(%rbp)
  mov    -0x3a8(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3a8(%rbp)
  mov    -0x128(%rbp),%rax
  add    %rax,-0x130(%rbp)
  mov    -0x130(%rbp),%rax
  cmp    -0x128(%rbp),%rax
  jae    L1527
  movabs $0x100000000,%rax
  add    %rax,-0x3a8(%rbp)
L1527:
  mov    -0x130(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3a8(%rbp)
  mov    -0x130(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x128(%rbp)
  mov    -0x128(%rbp),%rax
  add    %rax,-0x138(%rbp)
  mov    -0x138(%rbp),%rax
  cmp    -0x128(%rbp),%rax
  jae    L1401
  addq   $0x1,-0x3a8(%rbp)
L1401:
  mov    -0x138(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3a8(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L490
  addq   $0x1,-0x468(%rbp)
L490:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L734
  addq   $0x1,-0x478(%rbp)
L734:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1838
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1838
  addq   $0x1,-0x468(%rbp)
L1838:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2036
  addq   $0x1,-0x468(%rbp)
L2036:
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x120(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x3a0(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x120(%rbp),%rax
  mov    %rax,-0x118(%rbp)
  mov    -0x120(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x120(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x3a0(%rbp),%rax
  mov    %rax,-0x110(%rbp)
  mov    -0x3a0(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x3a0(%rbp)
  mov    -0x110(%rbp),%rax
  add    %rax,-0x118(%rbp)
  mov    -0x118(%rbp),%rax
  cmp    -0x110(%rbp),%rax
  jae    L2104
  movabs $0x100000000,%rax
  add    %rax,-0x3a0(%rbp)
L2104:
  mov    -0x118(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x3a0(%rbp)
  mov    -0x118(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x110(%rbp)
  mov    -0x110(%rbp),%rax
  add    %rax,-0x120(%rbp)
  mov    -0x120(%rbp),%rax
  cmp    -0x110(%rbp),%rax
  jae    L1361
  addq   $0x1,-0x3a0(%rbp)
L1361:
  mov    -0x120(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x3a0(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1684
  addq   $0x1,-0x468(%rbp)
L1684:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L620
  addq   $0x1,-0x478(%rbp)
L620:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1752
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1752
  addq   $0x1,-0x468(%rbp)
L1752:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1074
  addq   $0x1,-0x468(%rbp)
L1074:
  mov    -0x488(%rbp),%rax
  lea    0x40(%rax),%rdx
  mov    -0x460(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x460(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x108(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x398(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x108(%rbp),%rax
  mov    %rax,-0x100(%rbp)
  mov    -0x108(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x108(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x398(%rbp),%rax
  mov    %rax,-0xf8(%rbp)
  mov    -0x398(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x398(%rbp)
  mov    -0xf8(%rbp),%rax
  add    %rax,-0x100(%rbp)
  mov    -0x100(%rbp),%rax
  cmp    -0xf8(%rbp),%rax
  jae    L1547
  movabs $0x100000000,%rax
  add    %rax,-0x398(%rbp)
L1547:
  mov    -0x100(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x398(%rbp)
  mov    -0x100(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0xf8(%rbp)
  mov    -0xf8(%rbp),%rax
  add    %rax,-0x108(%rbp)
  mov    -0x108(%rbp),%rax
  cmp    -0xf8(%rbp),%rax
  jae    L1561
  addq   $0x1,-0x398(%rbp)
L1561:
  mov    -0x108(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x398(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1265
  addq   $0x1,-0x460(%rbp)
L1265:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L1962
  addq   $0x1,-0x478(%rbp)
L1962:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L2048
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L2048
  addq   $0x1,-0x460(%rbp)
L2048:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L493
  addq   $0x1,-0x460(%rbp)
L493:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0xf0(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x390(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0xf0(%rbp),%rax
  mov    %rax,-0xe8(%rbp)
  mov    -0xf0(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0xf0(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x390(%rbp),%rax
  mov    %rax,-0xe0(%rbp)
  mov    -0x390(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x390(%rbp)
  mov    -0xe0(%rbp),%rax
  add    %rax,-0xe8(%rbp)
  mov    -0xe8(%rbp),%rax
  cmp    -0xe0(%rbp),%rax
  jae    L501
  movabs $0x100000000,%rax
  add    %rax,-0x390(%rbp)
L501:
  mov    -0xe8(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x390(%rbp)
  mov    -0xe8(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0xe0(%rbp)
  mov    -0xe0(%rbp),%rax
  add    %rax,-0xf0(%rbp)
  mov    -0xf0(%rbp),%rax
  cmp    -0xe0(%rbp),%rax
  jae    L298
  addq   $0x1,-0x390(%rbp)
L298:
  mov    -0xf0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x390(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L953
  addq   $0x1,-0x460(%rbp)
L953:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L711
  addq   $0x1,-0x478(%rbp)
L711:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L746
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L746
  addq   $0x1,-0x460(%rbp)
L746:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1584
  addq   $0x1,-0x460(%rbp)
L1584:
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x388(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0xd8(%rbp),%rax
  mov    %rax,-0xd0(%rbp)
  mov    -0xd8(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x388(%rbp),%rax
  mov    %rax,-0xc8(%rbp)
  mov    -0x388(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x388(%rbp)
  mov    -0xc8(%rbp),%rax
  add    %rax,-0xd0(%rbp)
  mov    -0xd0(%rbp),%rax
  cmp    -0xc8(%rbp),%rax
  jae    L934
  movabs $0x100000000,%rax
  add    %rax,-0x388(%rbp)
L934:
  mov    -0xd0(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x388(%rbp)
  mov    -0xd0(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0xc8(%rbp)
  mov    -0xc8(%rbp),%rax
  add    %rax,-0xd8(%rbp)
  mov    -0xd8(%rbp),%rax
  cmp    -0xc8(%rbp),%rax
  jae    L121
  addq   $0x1,-0x388(%rbp)
L121:
  mov    -0xd8(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x388(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1793
  addq   $0x1,-0x460(%rbp)
L1793:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L185
  addq   $0x1,-0x478(%rbp)
L185:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L567
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L567
  addq   $0x1,-0x460(%rbp)
L567:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L939
  addq   $0x1,-0x460(%rbp)
L939:
  mov    -0x488(%rbp),%rax
  lea    0x48(%rax),%rdx
  mov    -0x470(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x470(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x28(%rax),%rax
  mov    %rax,-0x380(%rbp)
  mov    -0x380(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0xc0(%rbp)
  shrq   $0x20,-0x380(%rbp)
  mov    -0xc0(%rbp),%rax
  imul   -0x380(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  mov    -0xc0(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0xc0(%rbp)
  mov    -0x380(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x380(%rbp)
  mov    -0xb8(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x380(%rbp)
  shlq   $0x21,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  add    %rax,-0xc0(%rbp)
  mov    -0xc0(%rbp),%rax
  cmp    -0xb8(%rbp),%rax
  jae    L508
  addq   $0x1,-0x380(%rbp)
L508:
  mov    -0xc0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x380(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1669
  addq   $0x1,-0x478(%rbp)
L1669:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1203
  addq   $0x1,-0x470(%rbp)
L1203:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x378(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0xb0(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  mov    -0xb0(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x378(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0x378(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x378(%rbp)
  mov    -0xa0(%rbp),%rax
  add    %rax,-0xa8(%rbp)
  mov    -0xa8(%rbp),%rax
  cmp    -0xa0(%rbp),%rax
  jae    L409
  movabs $0x100000000,%rax
  add    %rax,-0x378(%rbp)
L409:
  mov    -0xa8(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x378(%rbp)
  mov    -0xa8(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0xa0(%rbp),%rax
  add    %rax,-0xb0(%rbp)
  mov    -0xb0(%rbp),%rax
  cmp    -0xa0(%rbp),%rax
  jae    L187
  addq   $0x1,-0x378(%rbp)
L187:
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x378(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1592
  addq   $0x1,-0x470(%rbp)
L1592:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L882
  addq   $0x1,-0x478(%rbp)
L882:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1129
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1129
  addq   $0x1,-0x470(%rbp)
L1129:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1103
  addq   $0x1,-0x470(%rbp)
L1103:
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x370(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x98(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    -0x98(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x370(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    -0x370(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x370(%rbp)
  mov    -0x88(%rbp),%rax
  add    %rax,-0x90(%rbp)
  mov    -0x90(%rbp),%rax
  cmp    -0x88(%rbp),%rax
  jae    L1842
  movabs $0x100000000,%rax
  add    %rax,-0x370(%rbp)
L1842:
  mov    -0x90(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x370(%rbp)
  mov    -0x90(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x88(%rbp)
  mov    -0x88(%rbp),%rax
  add    %rax,-0x98(%rbp)
  mov    -0x98(%rbp),%rax
  cmp    -0x88(%rbp),%rax
  jae    L2056
  addq   $0x1,-0x370(%rbp)
L2056:
  mov    -0x98(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x370(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1590
  addq   $0x1,-0x470(%rbp)
L1590:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L883
  addq   $0x1,-0x478(%rbp)
L883:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L2112
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L2112
  addq   $0x1,-0x470(%rbp)
L2112:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L662
  addq   $0x1,-0x470(%rbp)
L662:
  mov    -0x488(%rbp),%rax
  lea    0x50(%rax),%rdx
  mov    -0x468(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x468(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x368(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x80(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  mov    -0x80(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x368(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x368(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x368(%rbp)
  mov    -0x70(%rbp),%rax
  add    %rax,-0x78(%rbp)
  mov    -0x78(%rbp),%rax
  cmp    -0x70(%rbp),%rax
  jae    L717
  movabs $0x100000000,%rax
  add    %rax,-0x368(%rbp)
L717:
  mov    -0x78(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x368(%rbp)
  mov    -0x78(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  add    %rax,-0x80(%rbp)
  mov    -0x80(%rbp),%rax
  cmp    -0x70(%rbp),%rax
  jae    L1977
  addq   $0x1,-0x368(%rbp)
L1977:
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x368(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1085
  addq   $0x1,-0x468(%rbp)
L1085:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L450
  addq   $0x1,-0x478(%rbp)
L450:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L756
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L756
  addq   $0x1,-0x468(%rbp)
L756:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2065
  addq   $0x1,-0x468(%rbp)
L2065:
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x360(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x68(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x68(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x360(%rbp),%rax
  mov    %rax,-0x58(%rbp)
  mov    -0x360(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x360(%rbp)
  mov    -0x58(%rbp),%rax
  add    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jae    L1241
  movabs $0x100000000,%rax
  add    %rax,-0x360(%rbp)
L1241:
  mov    -0x60(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x360(%rbp)
  mov    -0x60(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x58(%rbp)
  mov    -0x58(%rbp),%rax
  add    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jae    L625
  addq   $0x1,-0x360(%rbp)
L625:
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x360(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L2152
  addq   $0x1,-0x468(%rbp)
L2152:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L2192
  addq   $0x1,-0x478(%rbp)
L2192:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1217
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1217
  addq   $0x1,-0x468(%rbp)
L1217:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1030
  addq   $0x1,-0x468(%rbp)
L1030:
  mov    -0x488(%rbp),%rax
  lea    0x58(%rax),%rdx
  mov    -0x460(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x460(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x30(%rax),%rax
  mov    %rax,-0x358(%rbp)
  mov    -0x358(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x50(%rbp)
  shrq   $0x20,-0x358(%rbp)
  mov    -0x50(%rbp),%rax
  imul   -0x358(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x50(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x358(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x358(%rbp)
  mov    -0x48(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x358(%rbp)
  shlq   $0x21,-0x48(%rbp)
  mov    -0x48(%rbp),%rax
  add    %rax,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  cmp    -0x48(%rbp),%rax
  jae    L2009
  addq   $0x1,-0x358(%rbp)
L2009:
  mov    -0x50(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x358(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1407
  addq   $0x1,-0x478(%rbp)
L1407:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L2146
  addq   $0x1,-0x460(%rbp)
L2146:
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x350(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x40(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x40(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x350(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    -0x350(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x350(%rbp)
  mov    -0x30(%rbp),%rax
  add    %rax,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1612
  movabs $0x100000000,%rax
  add    %rax,-0x350(%rbp)
L1612:
  mov    -0x38(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x350(%rbp)
  mov    -0x38(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0x30(%rbp),%rax
  add    %rax,-0x40(%rbp)
  mov    -0x40(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L943
  addq   $0x1,-0x350(%rbp)
L943:
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x350(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L613
  addq   $0x1,-0x460(%rbp)
L613:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L838
  addq   $0x1,-0x478(%rbp)
L838:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L1393
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L1393
  addq   $0x1,-0x460(%rbp)
L1393:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1585
  addq   $0x1,-0x460(%rbp)
L1585:
  mov    -0x488(%rbp),%rax
  lea    0x60(%rax),%rdx
  mov    -0x470(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x470(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x328(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  and    $0xffffffff,%eax
  mov    %rax,-0x320(%rbp)
  mov    -0x490(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rax
  shr    $0x20,%rax
  mov    %rax,-0x318(%rbp)
  mov    -0x328(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x478(%rbp),%rax
  mov    %rax,-0x348(%rbp)
  mov    -0x318(%rbp),%rax
  imul   -0x28(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  imul   -0x320(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x320(%rbp),%rax
  imul   -0x348(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x348(%rbp),%rax
  imul   -0x318(%rbp),%rax
  mov    %rax,-0x348(%rbp)
  mov    -0x18(%rbp),%rax
  add    %rax,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jae    L78
  movabs $0x100000000,%rax
  add    %rax,-0x348(%rbp)
L78:
  mov    -0x20(%rbp),%rax
  shr    $0x20,%rax
  add    %rax,-0x348(%rbp)
  mov    -0x20(%rbp),%rax
  shl    $0x20,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  add    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jae    L1775
  addq   $0x1,-0x348(%rbp)
L1775:
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x348(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x478(%rbp),%rax
  test   %rax,%rax
  jns    L1362
  addq   $0x1,-0x470(%rbp)
L1362:
  shlq   -0x478(%rbp)
  mov    -0x328(%rbp),%rax
  test   %rax,%rax
  jns    L141
  addq   $0x1,-0x478(%rbp)
L141:
  shlq   -0x328(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x468(%rbp)
  mov    -0x468(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L285
  addq   $0x1,-0x478(%rbp)
  cmpq   $0x0,-0x478(%rbp)
  jne    L285
  addq   $0x1,-0x470(%rbp)
L285:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L719
  addq   $0x1,-0x470(%rbp)
L719:
  mov    -0x488(%rbp),%rax
  lea    0x68(%rax),%rdx
  mov    -0x468(%rbp),%rax
  mov    %rax,(%rdx)
  movq   $0x0,-0x468(%rbp)
  mov    -0x490(%rbp),%rax
  mov    0x38(%rax),%rax
  mov    %rax,-0x340(%rbp)
  mov    -0x340(%rbp),%rax
  mov    %eax,%eax
  mov    %rax,-0x10(%rbp)
  shrq   $0x20,-0x340(%rbp)
  mov    -0x10(%rbp),%rax
  imul   -0x340(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x340(%rbp),%rax
  imul   %rax,%rax
  mov    %rax,-0x340(%rbp)
  mov    -0x8(%rbp),%rax
  shr    $0x1f,%rax
  add    %rax,-0x340(%rbp)
  shlq   $0x21,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  add    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L8
  addq   $0x1,-0x340(%rbp)
L8:
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x328(%rbp)
  mov    -0x340(%rbp),%rax
  mov    %rax,-0x478(%rbp)
  mov    -0x328(%rbp),%rax
  add    %rax,-0x460(%rbp)
  mov    -0x460(%rbp),%rax
  cmp    -0x328(%rbp),%rax
  jae    L864
  addq   $0x1,-0x478(%rbp)
L864:
  mov    -0x478(%rbp),%rax
  add    %rax,-0x470(%rbp)
  mov    -0x470(%rbp),%rax
  cmp    -0x478(%rbp),%rax
  jae    L1949
  addq   $0x1,-0x468(%rbp)
L1949:
  mov    -0x488(%rbp),%rax
  lea    0x70(%rax),%rdx
  mov    -0x460(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x488(%rbp),%rax
  lea    0x78(%rax),%rdx
  mov    -0x470(%rbp),%rax
  mov    %rax,(%rdx)
  nop
  leave
  ret
```

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