user: Converte this assembly snippet into its equivalent C code:

```asm
<mult_scalar>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x718,%rsp
  mov    %edi,-0x2a4(%rbp)
  mov    %rsi,-0x2b0(%rbp)
  mov    %rdx,-0x2b8(%rbp)
  mov    %rcx,-0x2c0(%rbp)
  mov    %r8,-0x2c8(%rbp)
  mov    %r9,-0x2d0(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x2d8(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x2e0(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x2e8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  mov    -0x2a4(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  add    $0x1,%eax
  mov    %eax,-0x284(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x278(%rbp)
  movslq %edx,%rax
  mov    %rax,%r10
  mov    $0x0,%r11d
  movslq %edx,%rax
  mov    %rax,%r12
  mov    $0x0,%r13d
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L944:
  cmp    %rcx,%rsp
  je     L61
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L944
L61:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L109
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L109:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x270(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x268(%rbp)
  movslq %edx,%rax
  mov    %rax,%r14
  mov    $0x0,%r15d
  movslq %edx,%rax
  mov    %rax,-0x300(%rbp)
  movq   $0x0,-0x2f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L726:
  cmp    %rcx,%rsp
  je     L734
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L726
L734:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L701
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L701:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x260(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x258(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x310(%rbp)
  movq   $0x0,-0x308(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x320(%rbp)
  movq   $0x0,-0x318(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L653:
  cmp    %rcx,%rsp
  je     L1086
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L653
L1086:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L732
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L732:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x250(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x248(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x330(%rbp)
  movq   $0x0,-0x328(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x340(%rbp)
  movq   $0x0,-0x338(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L463:
  cmp    %rcx,%rsp
  je     L272
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L463
L272:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L5
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L5:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x240(%rbp)
  movl   $0x0,-0x298(%rbp)
  jmp    L1128
L97:
  mov    -0x260(%rbp),%rdx
  mov    -0x298(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x240(%rbp),%rdx
  mov    -0x298(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x270(%rbp),%rdx
  mov    -0x298(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x298(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x2d0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x250(%rbp),%rdx
  mov    -0x298(%rbp),%eax
  cltq
  mov    %ecx,(%rdx,%rax,4)
  addl   $0x1,-0x298(%rbp)
L1128:
  mov    -0x298(%rbp),%eax
  cmp    -0x284(%rbp),%eax
  jl     L97
  mov    -0x240(%rbp),%rax
  movl   $0x1,(%rax)
  mov    -0x270(%rbp),%rax
  movl   $0x1,(%rax)
  mov    -0x284(%rbp),%eax
  add    %eax,%eax
  mov    %eax,-0x280(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x238(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x350(%rbp)
  movq   $0x0,-0x348(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x360(%rbp)
  movq   $0x0,-0x358(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L188:
  cmp    %rcx,%rsp
  je     L196
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L188
L196:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L1048
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L1048:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x230(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x228(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x370(%rbp)
  movq   $0x0,-0x368(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x380(%rbp)
  movq   $0x0,-0x378(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L932:
  cmp    %rcx,%rsp
  je     L424
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L932
L424:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L856
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L856:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x220(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x218(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x390(%rbp)
  movq   $0x0,-0x388(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3a0(%rbp)
  movq   $0x0,-0x398(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L612:
  cmp    %rcx,%rsp
  je     L112
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L612
L112:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L1003
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L1003:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x210(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x208(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3b0(%rbp)
  movq   $0x0,-0x3a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3c0(%rbp)
  movq   $0x0,-0x3b8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L354:
  cmp    %rcx,%rsp
  je     L602
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L354
L602:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L775
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L775:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x200(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1f8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3d0(%rbp)
  movq   $0x0,-0x3c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3e0(%rbp)
  movq   $0x0,-0x3d8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L103:
  cmp    %rcx,%rsp
  je     L1018
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L103
L1018:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L254
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L254:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1f0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x3f0(%rbp)
  movq   $0x0,-0x3e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x400(%rbp)
  movq   $0x0,-0x3f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L340:
  cmp    %rcx,%rsp
  je     L528
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L340
L528:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L350
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L350:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1e0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1d8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x410(%rbp)
  movq   $0x0,-0x408(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x420(%rbp)
  movq   $0x0,-0x418(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L838:
  cmp    %rcx,%rsp
  je     L154
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L838
L154:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L60
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L60:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1d0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x430(%rbp)
  movq   $0x0,-0x428(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x440(%rbp)
  movq   $0x0,-0x438(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1088:
  cmp    %rcx,%rsp
  je     L419
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1088
L419:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L529
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L529:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1c0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1b8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x450(%rbp)
  movq   $0x0,-0x448(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x460(%rbp)
  movq   $0x0,-0x458(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L774:
  cmp    %rcx,%rsp
  je     L1014
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L774
L1014:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L723
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L723:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1b0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x1a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x470(%rbp)
  movq   $0x0,-0x468(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x480(%rbp)
  movq   $0x0,-0x478(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1093:
  cmp    %rcx,%rsp
  je     L874
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1093
L874:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L826
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L826:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x1a0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x198(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x490(%rbp)
  movq   $0x0,-0x488(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4a0(%rbp)
  movq   $0x0,-0x498(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1139:
  cmp    %rcx,%rsp
  je     L1064
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1139
L1064:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L903
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L903:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x190(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x188(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4b0(%rbp)
  movq   $0x0,-0x4a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4c0(%rbp)
  movq   $0x0,-0x4b8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L580:
  cmp    %rcx,%rsp
  je     L163
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L580
L163:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L19
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L19:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x180(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x178(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4d0(%rbp)
  movq   $0x0,-0x4c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4e0(%rbp)
  movq   $0x0,-0x4d8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L139:
  cmp    %rcx,%rsp
  je     L781
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L139
L781:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L233
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L233:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x170(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x168(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x4f0(%rbp)
  movq   $0x0,-0x4e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x500(%rbp)
  movq   $0x0,-0x4f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L203:
  cmp    %rcx,%rsp
  je     L762
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L203
L762:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L505
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L505:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x160(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x158(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x510(%rbp)
  movq   $0x0,-0x508(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x520(%rbp)
  movq   $0x0,-0x518(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L617:
  cmp    %rcx,%rsp
  je     L919
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L617
L919:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L107
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L107:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x150(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x148(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x530(%rbp)
  movq   $0x0,-0x528(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x540(%rbp)
  movq   $0x0,-0x538(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L689:
  cmp    %rcx,%rsp
  je     L1219
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L689
L1219:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L907
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L907:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x140(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x138(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x550(%rbp)
  movq   $0x0,-0x548(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x560(%rbp)
  movq   $0x0,-0x558(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L472:
  cmp    %rcx,%rsp
  je     L899
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L472
L899:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L332
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L332:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x130(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x128(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x570(%rbp)
  movq   $0x0,-0x568(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x580(%rbp)
  movq   $0x0,-0x578(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L965:
  cmp    %rcx,%rsp
  je     L1011
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L965
L1011:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L58
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L58:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x120(%rbp)
  mov    -0x284(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x294(%rbp)
  jmp    L136
L235:
  movl   $0x80000000,-0x290(%rbp)
  movl   $0x1f,-0x28c(%rbp)
  jmp    L1165
L538:
  mov    -0x284(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x294(%rbp)
  jne    L346
  cmpl   $0x1f,-0x28c(%rbp)
  jne    L346
  mov    -0x2c8(%rbp),%rdx
  mov    -0x284(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <getDegree@plt>
  mov    %eax,-0x27c(%rbp)
  mov    -0x27c(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  mov    %eax,-0x294(%rbp)
  mov    -0x294(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x27c(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,-0x28c(%rbp)
L346:
  movl   $0x0,-0x288(%rbp)
  jmp    L1225
L722:
  mov    -0x220(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x210(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x200(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x1e0(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x1b0(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x180(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x150(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  mov    -0x120(%rbp),%rdx
  mov    -0x288(%rbp),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
  addl   $0x1,-0x288(%rbp)
L1225:
  mov    -0x288(%rbp),%eax
  cmp    -0x280(%rbp),%eax
  jl     L722
  mov    -0x294(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  and    -0x290(%rbp),%eax
  test   %eax,%eax
  je     L1021
  mov    -0x220(%rbp),%rcx
  mov    -0x240(%rbp),%rdx
  mov    -0x270(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x210(%rbp),%rcx
  mov    -0x260(%rbp),%rdx
  mov    -0x250(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x220(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x210(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x200(%rbp),%rcx
  mov    -0x210(%rbp),%rdx
  mov    -0x220(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x200(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x230(%rbp),%rcx
  mov    -0x210(%rbp),%rdx
  mov    -0x220(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x1f0(%rbp),%rdx
  mov    -0x230(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x260(%rbp),%rdx
  mov    -0x1f0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    -0x1e0(%rbp),%rcx
  mov    -0x1f0(%rbp),%rdx
  mov    -0x2d0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x270(%rbp),%rcx
  mov    -0x200(%rbp),%rdx
  mov    -0x1e0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x1d0(%rbp),%rdx
  mov    -0x250(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x1d0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x1c0(%rbp),%rdx
  mov    -0x240(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x1c0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x1b0(%rbp),%rcx
  mov    -0x1c0(%rbp),%rdx
  mov    -0x1d0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x1b0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x240(%rbp),%rdx
  mov    -0x1b0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    -0x1a0(%rbp),%rdx
  mov    -0x1d0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x1a0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x190(%rbp),%rdx
  mov    -0x1c0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x190(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x180(%rbp),%rcx
  mov    -0x190(%rbp),%rdx
  mov    -0x2c0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x180(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x250(%rbp),%rcx
  mov    -0x180(%rbp),%rdx
  mov    -0x1a0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  jmp    L801
L1021:
  mov    -0x210(%rbp),%rcx
  mov    -0x260(%rbp),%rdx
  mov    -0x250(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x210(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x220(%rbp),%rcx
  mov    -0x240(%rbp),%rdx
  mov    -0x270(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x220(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x200(%rbp),%rcx
  mov    -0x210(%rbp),%rdx
  mov    -0x220(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x200(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x230(%rbp),%rcx
  mov    -0x210(%rbp),%rdx
  mov    -0x220(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x1f0(%rbp),%rdx
  mov    -0x230(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x240(%rbp),%rdx
  mov    -0x1f0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    -0x1e0(%rbp),%rcx
  mov    -0x1f0(%rbp),%rdx
  mov    -0x2d0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x250(%rbp),%rcx
  mov    -0x200(%rbp),%rdx
  mov    -0x1e0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x170(%rbp),%rdx
  mov    -0x270(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x170(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x160(%rbp),%rdx
  mov    -0x260(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x150(%rbp),%rcx
  mov    -0x160(%rbp),%rdx
  mov    -0x170(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x150(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x260(%rbp),%rdx
  mov    -0x150(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    -0x140(%rbp),%rdx
  mov    -0x170(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x140(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x130(%rbp),%rdx
  mov    -0x160(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x130(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x120(%rbp),%rcx
  mov    -0x130(%rbp),%rdx
  mov    -0x2c0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x270(%rbp),%rcx
  mov    -0x120(%rbp),%rdx
  mov    -0x140(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
L801:
  sarl   -0x290(%rbp)
  subl   $0x1,-0x28c(%rbp)
L1165:
  cmpl   $0x0,-0x28c(%rbp)
  jns    L538
  subl   $0x1,-0x294(%rbp)
L136:
  cmpl   $0x0,-0x294(%rbp)
  jns    L235
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x118(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x590(%rbp)
  movq   $0x0,-0x588(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5a0(%rbp)
  movq   $0x0,-0x598(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L498:
  cmp    %rcx,%rsp
  je     L201
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L498
L201:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L355
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L355:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x110(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x108(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5b0(%rbp)
  movq   $0x0,-0x5a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5c0(%rbp)
  movq   $0x0,-0x5b8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L0:
  cmp    %rcx,%rsp
  je     L1043
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L0
L1043:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L391
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L391:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x100(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xf8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5d0(%rbp)
  movq   $0x0,-0x5c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5e0(%rbp)
  movq   $0x0,-0x5d8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L224:
  cmp    %rcx,%rsp
  je     L961
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L224
L961:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L245
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L245:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xf0(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xe8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x5f0(%rbp)
  movq   $0x0,-0x5e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x600(%rbp)
  movq   $0x0,-0x5f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L675:
  cmp    %rcx,%rsp
  je     L122
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L675
L122:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L905
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L905:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xe0(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xd8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x610(%rbp)
  movq   $0x0,-0x608(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x620(%rbp)
  movq   $0x0,-0x618(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1030:
  cmp    %rcx,%rsp
  je     L147
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1030
L147:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L645
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L645:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xd0(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xc8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x630(%rbp)
  movq   $0x0,-0x628(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x640(%rbp)
  movq   $0x0,-0x638(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L491:
  cmp    %rcx,%rsp
  je     L482
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L491
L482:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L1133
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L1133:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xc0(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xb8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x650(%rbp)
  movq   $0x0,-0x648(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x660(%rbp)
  movq   $0x0,-0x658(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1132:
  cmp    %rcx,%rsp
  je     L367
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1132
L367:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L199
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L199:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0x284(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xa8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x670(%rbp)
  movq   $0x0,-0x668(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x680(%rbp)
  movq   $0x0,-0x678(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1054:
  cmp    %rcx,%rsp
  je     L509
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1054
L509:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L379
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L379:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x98(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x690(%rbp)
  movq   $0x0,-0x688(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6a0(%rbp)
  movq   $0x0,-0x698(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1121:
  cmp    %rcx,%rsp
  je     L447
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1121
L447:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L713
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L713:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x90(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x88(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6b0(%rbp)
  movq   $0x0,-0x6a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6c0(%rbp)
  movq   $0x0,-0x6b8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L869:
  cmp    %rcx,%rsp
  je     L213
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L869
L213:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L916
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L916:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x78(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6d0(%rbp)
  movq   $0x0,-0x6c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6e0(%rbp)
  movq   $0x0,-0x6d8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L1229:
  cmp    %rcx,%rsp
  je     L1041
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1229
L1041:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L14
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L14:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x280(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x68(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x6f0(%rbp)
  movq   $0x0,-0x6e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x700(%rbp)
  movq   $0x0,-0x6f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L89:
  cmp    %rdx,%rsp
  je     L1154
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L89
L1154:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L816
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L816:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x280(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x58(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x710(%rbp)
  movq   $0x0,-0x708(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x720(%rbp)
  movq   $0x0,-0x718(%rbp)
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L133:
  cmp    %rdx,%rsp
  je     L1216
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L133
L1216:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L12
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L12:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x280(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x48(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x730(%rbp)
  movq   $0x0,-0x728(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x740(%rbp)
  movq   $0x0,-0x738(%rbp)
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%esi
  mov    $0x0,%edx
  div    %rsi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L1040:
  cmp    %rdx,%rsp
  je     L1185
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L1040
L1185:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L1083
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L1083:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x40(%rbp)
  movl   $0x0,-0x298(%rbp)
  jmp    L364
L654:
  mov    -0x90(%rbp),%rax
  mov    -0x298(%rbp),%edx
  movslq %edx,%rdx
  movl   $0x0,(%rax,%rdx,4)
  mov    -0x80(%rbp),%rax
  mov    -0x298(%rbp),%edx
  movslq %edx,%rdx
  movl   $0x0,(%rax,%rdx,4)
  mov    -0x60(%rbp),%rax
  mov    -0x298(%rbp),%edx
  movslq %edx,%rdx
  movl   $0x0,(%rax,%rdx,4)
  mov    -0x50(%rbp),%rax
  mov    -0x298(%rbp),%edx
  movslq %edx,%rdx
  movl   $0x0,(%rax,%rdx,4)
  mov    -0x40(%rbp),%rax
  mov    -0x298(%rbp),%edx
  movslq %edx,%rdx
  movl   $0x0,(%rax,%rdx,4)
  addl   $0x1,-0x298(%rbp)
L364:
  mov    -0x298(%rbp),%eax
  cmp    -0x280(%rbp),%eax
  jl     L654
  mov    -0x110(%rbp),%rcx
  mov    -0x2b0(%rbp),%rdx
  mov    -0x260(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_calculateInverse@plt>
  mov    -0x90(%rbp),%rcx
  mov    -0x110(%rbp),%rdx
  mov    -0x270(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x2e0(%rbp),%rdx
  mov    -0x90(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    -0xf0(%rbp),%rcx
  mov    -0x2d0(%rbp),%rdx
  mov    -0x90(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x100(%rbp),%rcx
  mov    -0x2b0(%rbp),%rdx
  mov    -0x240(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_calculateInverse@plt>
  mov    -0x80(%rbp),%rcx
  mov    -0x100(%rbp),%rdx
  mov    -0x250(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0xe0(%rbp),%rcx
  mov    -0x2d0(%rbp),%rdx
  mov    -0x80(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x70(%rbp),%rdx
  mov    -0x2d0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <f2m_square@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0x60(%rbp),%rcx
  mov    -0xf0(%rbp),%rdx
  mov    -0xe0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0xd0(%rbp),%rcx
  mov    -0x70(%rbp),%rdx
  mov    -0x60(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0xc0(%rbp),%rcx
  mov    -0x2d8(%rbp),%rdx
  mov    -0xd0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x50(%rbp),%rcx
  mov    -0xc0(%rbp),%rdx
  mov    -0xf0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0xb0(%rbp),%rcx
  mov    -0x2b0(%rbp),%rdx
  mov    -0x2d0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_calculateInverse@plt>
  mov    -0x40(%rbp),%rcx
  mov    -0x50(%rbp),%rdx
  mov    -0xb0(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_mult@plt>
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <f2m_reduce@plt>
  mov    -0xa0(%rbp),%rcx
  mov    -0x2d8(%rbp),%rdx
  mov    -0x40(%rbp),%rsi
  mov    -0x284(%rbp),%eax
  mov    %eax,%edi
  call   <f2m_Add@plt>
  mov    -0x2e8(%rbp),%rdx
  mov    -0xa0(%rbp),%rcx
  mov    -0x284(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <copy@plt>
  mov    %rbx,%rsp
  nop
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1037
  call   <__stack_chk_fail@plt>
L1037:
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

assistant: ```c
void mult_scalar(uint32_t m, uint32_t *F, uint32_t *a, uint32_t *b, uint32_t *d, uint32_t *xP, uint32_t *yP, uint32_t *xQ, uint32_t *yQ) {
  uint32_t t = (m / 32) + 1;
  uint32_t Xq[t], Zq[t], Xr[t], Zr[t];
  uint32_t y;
  for (y = 0; y < t; y++) {
    Zq[y] = 0x0;
    Zr[y] = 0x0;
    Xq[y] = 0x0;
    Xr[y] = xP[y];
  }
  Zr[0] = 0x1;
  Xq[0] = 0x1;
  uint32_t t2 = t * 2;
  uint32_t XrZqPLUSXqZr[t];
  uint32_t XqZr[t2], XrZq[t2], XqZrXrZq[t2], XrZqPLUSXqZrSquared[t2], xpXrZqPLUSXqZrSquared[t2];
  uint32_t XrSquard[t2], ZrSquard[t2], XrSquardZrSquard[t2], XrPow4[t2], ZrPow4[t2], bZrPow4[t2];
  uint32_t XqSquard[t2], ZqSquard[t2], XqSquardZqSquard[t2], XqPow4[t2], ZqPow4[t2], bZqPow4[t2];
  int i;
  for (i = t - 1; i >= 0; i--) {
    uint32_t bitMask = 0x80000000;
    int y;
    for (y = 31; y >= 0; y--) {
      if ((i == t - 1) && (y == 31)) {
        int deg = getDegree(t, d);
        i = deg / 32;
        y = deg - (i * 32);
      }
      uint32_t z;
      for (z = 0; z < t2; z++) {
        XqZr[z] = 0x0;
        XrZq[z] = 0x0;
        XqZrXrZq[z] = 0x0;
        xpXrZqPLUSXqZrSquared[z] = 0x0;
        XrSquardZrSquard[z] = 0x0;
        bZrPow4[z] = 0x0;
        XqSquardZqSquard[z] = 0x0;
        bZqPow4[z] = 0x0;
      }
      if ((d[i] & bitMask) != 0) {
        f2m_mult(t, Xq, Zr, XqZr);
        f2m_mult(t, Xr, Zq, XrZq);
        f2m_reduce(XqZr);
        f2m_reduce(XrZq);
        f2m_mult(t, XqZr, XrZq, XqZrXrZq);
        f2m_reduce(XqZrXrZq);
        f2m_Add(t, XqZr, XrZq, XrZqPLUSXqZr);
        f2m_square(t, XrZqPLUSXqZr, XrZqPLUSXqZrSquared);
        f2m_reduce(XrZqPLUSXqZrSquared);
        copy(t, XrZqPLUSXqZrSquared, Zq);
        f2m_mult(t, xP, XrZqPLUSXqZrSquared, xpXrZqPLUSXqZrSquared);
        f2m_reduce(xpXrZqPLUSXqZrSquared);
        f2m_Add(t, xpXrZqPLUSXqZrSquared, XqZrXrZq, Xq);
        f2m_square(t, Xr, XrSquard);
        f2m_reduce(XrSquard);
        f2m_square(t, Zr, ZrSquard);
        f2m_reduce(ZrSquard);
        f2m_mult(t, XrSquard, ZrSquard, XrSquardZrSquard);
        f2m_reduce(XrSquardZrSquard);
        copy(t, XrSquardZrSquard, Zr);
        f2m_square(t, XrSquard, XrPow4);
        f2m_reduce(XrPow4);
        f2m_square(t, ZrSquard, ZrPow4);
        f2m_reduce(ZrPow4);
        f2m_mult(t, b, ZrPow4, bZrPow4);
        f2m_reduce(bZrPow4);
        f2m_Add(t, XrPow4, bZrPow4, Xr);
      } else {
        f2m_mult(t, Xr, Zq, XrZq);
        f2m_reduce(XrZq);
        f2m_mult(t, Xq, Zr, XqZr);
        f2m_reduce(XqZr);
        f2m_mult(t, XqZr, XrZq, XqZrXrZq);
        f2m_reduce(XqZrXrZq);
        f2m_Add(t, XqZr, XrZq, XrZqPLUSXqZr);
        f2m_square(t, XrZqPLUSXqZr, XrZqPLUSXqZrSquared);
        f2m_reduce(XrZqPLUSXqZrSquared);
        copy(t, XrZqPLUSXqZrSquared, Zr);
        f2m_mult(t, xP, XrZqPLUSXqZrSquared, xpXrZqPLUSXqZrSquared);
        f2m_reduce(xpXrZqPLUSXqZrSquared);
        f2m_Add(t, xpXrZqPLUSXqZrSquared, XqZrXrZq, Xr);
        f2m_square(t, Xq, XqSquard);
        f2m_reduce(XqSquard);
        f2m_square(t, Zq, ZqSquard);
        f2m_reduce(ZqSquard);
        f2m_mult(t, XqSquard, ZqSquard, XqSquardZqSquard);
        f2m_reduce(XqSquardZqSquard);
        copy(t, XqSquardZqSquard, Zq);
        f2m_square(t, XqSquard, XqPow4);
        f2m_reduce(XqPow4);
        f2m_square(t, ZqSquard, ZqPow4);
        f2m_reduce(ZqPow4);
        f2m_mult(t, b, ZqPow4, bZqPow4);
        f2m_reduce(bZqPow4);
        f2m_Add(t, XqPow4, bZqPow4, Xq);
      }
      bitMask >>= 1;
    }
  }
  uint32_t ZqInverse[t], ZrInverse[t], Xq_ZqInverse_PLUS_xP[t], Xr_ZrInverse_PLUS_xP[t], term2[t], term3[t], xPInverse[t], result[t];
  uint32_t Xq_ZqInverse[t2], Xr_ZrInverse[t2], xPSquared[t2], term1[t2], term4[t2], term5[t2];
  for (y = 0; y < t2; y++) {
    Xq_ZqInverse[y] = 0x0;
    Xr_ZrInverse[y] = 0x0;
    term1[y] = 0x0;
    term4[y] = 0x0;
    term5[y] = 0x0;
  }
  f2m_calculateInverse(t, Zq, F, ZqInverse);
  f2m_mult(t, Xq, ZqInverse, Xq_ZqInverse);
  f2m_reduce(Xq_ZqInverse);
  copy(t, Xq_ZqInverse, xQ);
  f2m_Add(t, Xq_ZqInverse, xP, Xq_ZqInverse_PLUS_xP);
  f2m_calculateInverse(t, Zr, F, ZrInverse);
  f2m_mult(t, Xr, ZrInverse, Xr_ZrInverse);
  f2m_reduce(Xr_ZrInverse);
  f2m_Add(t, Xr_ZrInverse, xP, Xr_ZrInverse_PLUS_xP);
  f2m_square(t, xP, xPSquared);
  f2m_reduce(xPSquared);
  f2m_mult(t, Xr_ZrInverse_PLUS_xP, Xq_ZqInverse_PLUS_xP, term1);
  f2m_reduce(term1);
  f2m_Add(t, term1, xPSquared, term2);
  f2m_Add(t, term2, yP, term3);
  f2m_mult(t, Xq_ZqInverse_PLUS_xP, term3, term4);
  f2m_reduce(term4);
  f2m_calculateInverse(t, xP, F, xPInverse);
  f2m_mult(t, xPInverse, term4, term5);
  f2m_reduce(term5);
  f2m_Add(t, term5, yP, result);
  copy(t, result, yQ);
}
```