user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<test>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  imul   $0xffffffca,%edi,%ebx
  sub    $0x68,%rsp
  add    $0x4,%ebx
  mov    %edi,0x50(%rsp)
  cmp    $0x4,%ebx
  jle    L706
  jmp    L3673
  nopl   0x0(%rax,%rax,1)
L689:
  add    $0x1,%ebx
  cmp    $0x5,%ebx
  je     L3673
L706:
  test   $0x1,%bl
  jne    L689
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbx),%eax
  add    $0x1,%ebx
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  cmp    $0x5,%ebx
  jne    L706
L3673:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    $0x1,%edi
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    $0x5,%edi
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    $0x3,%edi
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  mov    $0x5,%edi
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x50(%rsp),%eax
  movl   $0xe,0x4(%rsp)
  add    $0x1,%eax
  mov    %eax,0x18(%rsp)
  add    %eax,%eax
  lea    0x1(%rax),%esi
  mov    %eax,0x38(%rsp)
  mov    %esi,0x14(%rsp)
  cmp    $0xd,%eax
  jle    L485
  nopl   (%rax)
L3203:
  mov    0x4(%rsp),%eax
  mov    %eax,%r13d
  lea    -0x3(%rax),%ecx
  lea    -0x2(%rax),%esi
  sub    $0x6,%r13d
  lea    0x1(%rax),%edx
  mov    %esi,0xc(%rsp)
  cmovs  %ecx,%r13d
  mov    %ecx,0x10(%rsp)
  mov    %edx,0x8(%rsp)
  sar    $0x2,%r13d
  neg    %r13d
  mov    %r13d,%r15d
  neg    %r15d
  and    $0x1,%eax
  mov    %eax,%r14d
  je     L2296
L1146:
  mov    0xc(%rsp),%eax
  mov    $0x1,%r12d
  sub    %r13d,%r12d
  lea    (%rax,%r13,2),%eax
  mov    $0x1,%r13d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L1708
  nopw   0x0(%rax,%rax,1)
L2409:
  add    $0x1,%r13d
  cmp    %r15d,%r13d
  jg     L3107
L1708:
  test   %r14d,%r14d
  jne    L2409
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  add    $0x1,%r13d
  call   <hash@plt>
  cmp    %r15d,%r13d
  jle    L1708
L3107:
  mov    0x4(%rsp),%esi
  mov    0xc(%rsp),%ecx
  lea    -0x7(%rsi),%eax
  sub    $0xa,%esi
  cmovns %esi,%eax
  sar    $0x2,%eax
  neg    %eax
  mov    %eax,%r15d
  lea    (%rcx,%rax,2),%ebx
  neg    %r15d
  nop
L1559:
  lea    0x2(%rbx),%r12d
  test   %r14d,%r14d
  je     L3868
L1833:
  mov    %ebx,%ebp
  lea    0x1(%r15),%r13d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L2422
  nopl   0x0(%rax)
L142:
  add    $0x1,%ebx
  cmp    %r15d,%ebx
  jg     L622
L2422:
  test   %r14d,%r14d
  jne    L142
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r15d,%ebx
  jle    L2422
L622:
  mov    %r12d,%ebx
  sub    $0x1,%r15d
  jne    L1559
  mov    0x4(%rsp),%eax
  lea    0x3(%rax),%ebx
  and    $0x3,%ebx
  test   %r14d,%r14d
  je     L2094
  test   %ebx,%ebx
  je     L499
L1876:
  mov    0x8(%rsp),%r13d
  and    $0x1,%r13d
  je     L3526
L3609:
  mov    0x10(%rsp),%r12d
  mov    0x4(%rsp),%ebp
  mov    $0x2,%ebx
  sar    $0x2,%r12d
  sub    $0x5,%ebp
  add    $0x1,%r12d
  jmp    L3911
  nopl   0x0(%rax,%rax,1)
L2884:
  add    $0x1,%ebx
  sub    $0x2,%ebp
  cmp    %r12d,%ebx
  je     L544
L3911:
  test   %r13d,%r13d
  jne    L2884
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sub    $0x2,%ebp
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r12d,%ebx
  jne    L3911
L544:
  mov    0x14(%rsp),%esi
  cmp    %esi,0x8(%rsp)
  je     L485
  mov    0x8(%rsp),%eax
  mov    %eax,0x4(%rsp)
  jmp    L3203
  nopl   0x0(%rax,%rax,1)
L3868:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r12d,%edi
  sar    %edi
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x2(%r15),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbx),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1833
L3526:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x10(%rsp),%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L3609
L2094:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x4(%rax),%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  test   %ebx,%ebx
  je     L2850
L1058:
  mov    0xc(%rsp),%r15d
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  sar    %r15d
  mov    %r15d,%edi
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L1876
L2296:
  test   %esi,%esi
  mov    %esi,%ebx
  mov    $0x4,%edi
  cmovs  %edx,%ebx
  xor    %eax,%eax
  call   <hash@plt>
  xor    %eax,%eax
  sar    $0x2,%ebx
  neg    %ebx
  mov    %ebx,%edi
  neg    %edi
  call   <hash@plt>
  mov    0x4(%rsp),%ebp
  lea    0x0(%rbp,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x0(%rbp,%r13,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1146
L499:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x1(%rax),%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L1876
L485:
  mov    0x38(%rsp),%eax
  sub    $0x2,%eax
  mov    %eax,0x10(%rsp)
  testb  $0x1,0x18(%rsp)
  je     L1119
L2399:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x50(%rsp),%ebx
  xor    %eax,%eax
  mov    %ebx,%edi
  call   <hash@plt>
  xor    %eax,%eax
  mov    $0x1,%edi
  call   <hash@plt>
  mov    $0x1,%edx
  mov    %ebx,%esi
  mov    0x18(%rsp),%r12d
  sub    %ebx,%edx
  sar    %esi
  mov    %edx,%eax
  mov    %esi,%ebp
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  test   %ebx,%ebx
  mov    $0x2,%ebx
  cmovs  %eax,%ebp
  jmp    L3516
  nop
L3008:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
L3516:
  cmp    %ebp,%ebx
  jle    L3008
  mov    0x50(%rsp),%edx
  mov    %edx,%eax
  not    %eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  test   %edx,%edx
  js     L2489
  mov    %ebp,%ebx
L405:
  mov    0x10(%rsp),%ecx
  mov    $0x1,%eax
  sub    %ecx,%eax
  sar    $0x2,%eax
  cmp    $0x1,%ecx
  cmovle %eax,%ebp
  mov    0x50(%rsp),%eax
  lea    0x2(%rax),%r12d
  jmp    L3486
  nopl   0x0(%rax)
L164:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  lea    (%r12,%rbx,1),%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
L3486:
  cmp    %ebp,%ebx
  jle    L164
  mov    0x50(%rsp),%eax
  mov    $0x1,%edx
  lea    -0x1(%rax),%esi
  mov    %esi,0x58(%rsp)
  sub    %eax,%edx
  js     L2544
  mov    $0x2,%eax
  sub    0x50(%rsp),%eax
  sar    %eax
L3404:
  mov    0x10(%rsp),%esi
  mov    %edx,%ecx
  mov    $0x5,%r14d
  mov    %eax,%ebx
  shr    $0x1f,%ecx
  sub    %esi,%r14d
  add    %ecx,%edx
  sar    $0x2,%r14d
  sar    %edx
  cmp    $0x5,%esi
  mov    0x50(%rsp),%esi
  cmovle %r14d,%edx
  neg    %ebx
  mov    %ebx,%r15d
  lea    0x2(%rax,%rsi,1),%r13d
  mov    %edx,0x4(%rsp)
  neg    %r15d
  cmp    %r15d,0x4(%rsp)
  jl     L3652
  nopw   0x0(%rax,%rax,1)
L348:
  mov    $0x4,%edi
  xor    %eax,%eax
  lea    0x1(%rbx),%r14d
  mov    $0x1,%ebp
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  lea    -0x1(%r13),%r12d
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  test   %r15d,%r15d
  jns    L1168
  nopl   0x0(%rax)
L2345:
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  add    $0x1,%ebp
  call   <hash@plt>
  cmp    %ebp,%ebx
  jge    L2345
L1168:
  sub    $0x1,%ebx
  add    $0x1,%r13d
  mov    %ebx,%r15d
  neg    %r15d
  cmp    %r15d,0x4(%rsp)
  jge    L348
L3652:
  mov    0x50(%rsp),%eax
  cmp    $0x3,%eax
  jg     L2050
  mov    $0x4,%eax
  sub    0x50(%rsp),%eax
  sar    %eax
L2349:
  cmp    $0xffffffff,%eax
  jge    L2865
  mov    0x50(%rsp),%ecx
  mov    $0x1,%r12d
  sub    %eax,%r12d
  lea    0x2(%rax,%rcx,1),%r13d
  nop
L1095:
  mov    $0x4,%edi
  mov    %r12d,%ebp
  xor    %eax,%eax
  sub    $0x1,%r12d
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  lea    -0x1(%r13),%r14d
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  mov    $0x1,%ebx
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x1(%rbp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%r13),%edi
  xor    %eax,%eax
  call   <hash@plt>
  nopl   0x0(%rax)
L902:
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %ebp,%ebx
  jne    L902
  add    $0x1,%r13d
  cmp    $0x2,%r12d
  jne    L1095
L2865:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x58(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x50(%rsp),%ebx
  xor    %eax,%eax
  mov    %ebx,%edi
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x18(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x38(%rsp),%edx
  movl   $0xfffffffb,0xc(%rsp)
  movl   $0x2,0x1c(%rsp)
  lea    0x3(%rdx),%eax
  lea    0x38(%rdx),%ecx
  mov    %eax,0x4(%rsp)
  lea    0x0(,%rbx,4),%eax
  lea    -0x9(%rax),%esi
  mov    %eax,0x54(%rsp)
  sub    $0xa,%eax
  cmp    %ecx,%esi
  mov    %esi,0x3c(%rsp)
  cmovg  %ecx,%eax
  mov    %ecx,0x40(%rsp)
  mov    %eax,0x2c(%rsp)
  mov    0x10(%rsp),%eax
  mov    0x2c(%rsp),%edx
  neg    %eax
  mov    %eax,0x18(%rsp)
  cmp    %edx,0x4(%rsp)
  jg     L1751
  nopl   0x0(%rax)
L173:
  mov    0x18(%rsp),%r9d
  test   %r9d,%r9d
  js     L3304
  mov    0x4(%rsp),%eax
  mov    0x18(%rsp),%ebx
  lea    -0x2(%rax),%edx
  add    $0x1,%eax
  sar    $0x2,%ebx
  mov    %edx,0x14(%rsp)
  mov    %eax,0x24(%rsp)
L1471:
  mov    0x4(%rsp),%r13d
  and    $0x1,%r13d
  je     L1568
  mov    $0x9,%r12d
  sub    0x4(%rsp),%r12d
  jns    L794
  mov    0x4(%rsp),%eax
  lea    -0x3(%rax),%edx
  sub    $0x6,%eax
  mov    %eax,%r15d
  mov    %edx,0x28(%rsp)
  cmovs  %edx,%r15d
  sar    $0x2,%r15d
  mov    %r15d,%r12d
  neg    %r12d
L3019:
  test   %r12d,%r12d
  jns    L908
  mov    0x14(%rsp),%eax
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L3199
  nopl   0x0(%rax)
L3051:
  add    $0x1,%r12d
  cmp    %r12d,%r15d
  jl     L908
L3199:
  test   %r13d,%r13d
  jne    L3051
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r12d,%r15d
  jge    L3199
L908:
  mov    $0xa,%eax
  cmp    0x4(%rsp),%eax
  js     L2497
  mov    $0xd,%edx
  sub    0x4(%rsp),%edx
  sar    $0x2,%edx
L2071:
  mov    0xc(%rsp),%esi
  mov    $0x1,%ecx
  mov    %esi,%eax
  sub    %esi,%ecx
  mov    %esi,%r15d
  neg    %eax
  sar    %r15d
  mov    %eax,0x20(%rsp)
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  test   %esi,%esi
  cmovns %r15d,%eax
  mov    %edx,%r15d
  neg    %r15d
  mov    %eax,0x8(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r15d,%ebp
  neg    %ebp
  lea    (%rax,%rdx,2),%ebx
  cmp    %ebp,0x8(%rsp)
  jl     L1988
L249:
  lea    0x2(%rbx),%r14d
  test   %r13d,%r13d
  je     L2917
L3608:
  test   %ebp,%ebp
  jns    L49
  mov    %ebx,%ebp
  lea    0x1(%r15),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L70
  nopl   (%rax)
L3236:
  add    $0x1,%ebx
  cmp    %r15d,%ebx
  jg     L49
L70:
  test   %r13d,%r13d
  jne    L3236
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r15d,%ebx
  jle    L70
L49:
  sub    $0x1,%r15d
  mov    %r14d,%ebx
  mov    %r15d,%ebp
  neg    %ebp
  cmp    %ebp,0x8(%rsp)
  jge    L249
L1988:
  mov    0xc(%rsp),%eax
  cmp    $0xfffffffe,%eax
  jge    L2948
  not    %eax
  mov    %eax,%r12d
  shr    $0x1f,%r12d
  add    %eax,%r12d
  sar    %r12d
  neg    %r12d
  test   %r13d,%r13d
  je     L2883
L1261:
  mov    0x14(%rsp),%eax
  mov    %r12d,%r15d
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  neg    %r15d
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L1538
  cs nopw 0x0(%rax,%rax,1)
L2299:
  add    $0x1,%r12d
  cmp    %r15d,%r12d
  jg     L253
L1538:
  test   %r13d,%r13d
  jne    L2299
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r15d,%r12d
  jle    L1538
L253:
  cmpl   $0xfffffffd,0xc(%rsp)
  jge    L1796
  mov    0x1c(%rsp),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L3876:
  mov    0x1c(%rsp),%r14d
  mov    0x4(%rsp),%eax
  mov    0xc(%rsp),%r15d
  mov    %r14d,%r12d
  lea    -0x4(%rax,%rbx,2),%ebp
  shr    $0x1f,%r12d
  add    %r14d,%r12d
  sar    %r12d
  neg    %r12d
  jmp    L2541
  nopl   (%rax)
L1907:
  add    $0x1,%ebx
  add    $0x2,%ebp
L2541:
  mov    $0xffffffff,%eax
  cmp    $0xfffffffc,%r15d
  jge    L2963
  cmp    $0x3,%r14d
  cmovg  %r12d,%eax
L2963:
  cmp    %eax,%ebx
  jg     L491
  test   %r13d,%r13d
  jne    L1907
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L1907
  nopw   0x0(%rax,%rax,1)
L2917:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r14d,%edi
  sar    %edi
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x2(%r15),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbx),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L3608
  nop
L491:
  mov    0x4(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L166
L1881:
  test   %r13d,%r13d
  je     L145
L3655:
  mov    0x20(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L3649
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L3649:
  mov    0x4(%rsp),%esi
  mov    0x28(%rsp),%r12d
  mov    $0x6,%edx
  mov    $0x4,%ebp
  mov    0x24(%rsp),%ecx
  sar    $0x2,%r12d
  sub    %esi,%edx
  lea    0x3(%rdx),%eax
  mov    %ecx,0x4(%rsp)
  cmovns %edx,%eax
  sar    $0x2,%eax
  neg    %eax
  cmp    $0x2,%esi
  cmovle %eax,%r12d
  sub    0x18(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%ecx
  sub    %eax,%ebp
  mov    %ecx,%r15d
  jmp    L198
  nopw   0x0(%rax,%rax,1)
L3502:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L198:
  cmp    %r12d,%ebx
  jg     L3916
  test   %r15d,%r15d
  jne    L3502
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L3502
  nopw   0x0(%rax,%rax,1)
L3916:
  subl   $0x1,0x18(%rsp)
  mov    0x2c(%rsp),%edx
  addl   $0x1,0x1c(%rsp)
  subl   $0x1,0xc(%rsp)
  cmp    %edx,0x4(%rsp)
  jle    L173
L1751:
  mov    0x54(%rsp),%eax
  lea    -0x8(%rax),%edx
  mov    0x40(%rsp),%eax
  mov    %edx,0x5c(%rsp)
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,0x2c(%rsp)
  cmp    0x3c(%rsp),%eax
  jl     L39
  mov    $0xe,%eax
  sub    0x54(%rsp),%eax
  mov    0x3c(%rsp),%ecx
  mov    %eax,0x14(%rsp)
  mov    0x10(%rsp),%eax
  mov    %ecx,0x8(%rsp)
  sub    %ecx,%eax
  mov    %eax,0xc(%rsp)
  xchg   %ax,%ax
L838:
  mov    0x14(%rsp),%r8d
  test   %r8d,%r8d
  js     L2129
  mov    0x8(%rsp),%eax
  mov    0x14(%rsp),%ebx
  mov    0x8(%rsp),%r15d
  lea    -0x2(%rax),%edx
  add    $0x1,%eax
  sar    $0x2,%ebx
  mov    %edx,0x18(%rsp)
  mov    %eax,0x1c(%rsp)
  and    $0x1,%r15d
  je     L3136
L3621:
  mov    0x8(%rsp),%eax
  mov    $0x6,%edx
  sub    %eax,%edx
  mov    %edx,0x20(%rsp)
  js     L2944
  mov    0x8(%rsp),%eax
  mov    $0x9,%edx
  sub    %eax,%edx
  sub    $0x3,%eax
  mov    %eax,0x28(%rsp)
  sar    $0x2,%edx
L2254:
  mov    0xc(%rsp),%esi
  mov    $0x1,%ecx
  mov    %esi,%eax
  sub    %esi,%ecx
  mov    %esi,%r14d
  neg    %eax
  sar    %r14d
  mov    %eax,0x24(%rsp)
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  test   %esi,%esi
  cmovns %r14d,%eax
  mov    %edx,%r14d
  neg    %r14d
  mov    %eax,0x4(%rsp)
  mov    0x18(%rsp),%eax
  mov    %r14d,%ebp
  neg    %ebp
  lea    (%rax,%rdx,2),%ebx
  cmp    %ebp,0x4(%rsp)
  jl     L1427
  nopw   0x0(%rax,%rax,1)
L2118:
  lea    0x2(%rbx),%r13d
  test   %r15d,%r15d
  je     L321
L3079:
  test   %ebp,%ebp
  jns    L803
  mov    %ebx,%ebp
  lea    0x1(%r14),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L3782
  nopl   (%rax)
L3015:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L803
L3782:
  test   %r15d,%r15d
  jne    L3015
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L3782
L803:
  sub    $0x1,%r14d
  mov    %r13d,%ebx
  mov    %r14d,%ebp
  neg    %ebp
  cmp    %ebp,0x4(%rsp)
  jge    L2118
L1427:
  mov    0xc(%rsp),%eax
  cmp    $0xfffffffe,%eax
  jge    L3165
  not    %eax
  mov    %eax,%r12d
  shr    $0x1f,%r12d
  add    %eax,%r12d
  sar    %r12d
  neg    %r12d
  test   %r15d,%r15d
  je     L806
L2284:
  mov    0x18(%rsp),%eax
  mov    %r12d,%r14d
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  neg    %r14d
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L2088
  cs nopw 0x0(%rax,%rax,1)
L0:
  add    $0x1,%r12d
  cmp    %r14d,%r12d
  jg     L759
L2088:
  test   %r15d,%r15d
  jne    L0
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r14d,%r12d
  jle    L2088
L759:
  cmpl   $0xfffffffc,0xc(%rsp)
  jge    L3836
  mov    $0xfffffffd,%eax
  sub    0xc(%rsp),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  mov    0x8(%rsp),%eax
  sar    %ebx
  lea    0x3(%rax),%ebp
  neg    %ebx
  and    $0x3,%ebp
  test   %r15d,%r15d
  je     L2293
L2635:
  test   %ebp,%ebp
  je     L1421
L3172:
  mov    0x24(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L2821
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L2821:
  mov    0x20(%rsp),%esi
  mov    0x28(%rsp),%r12d
  mov    $0x4,%ebp
  mov    0x1c(%rsp),%ecx
  sar    $0x2,%r12d
  lea    0x3(%rsi),%eax
  test   %esi,%esi
  cmovns %esi,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x8(%rsp)
  mov    %ecx,0x8(%rsp)
  cmovle %eax,%r12d
  sub    0x14(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%ecx
  sub    %eax,%ebp
  mov    %ecx,%r14d
  jmp    L2700
  nopl   0x0(%rax,%rax,1)
L3823:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L2700:
  cmp    %r12d,%ebx
  jg     L3229
  test   %r14d,%r14d
  jne    L3823
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L3823
L1568:
  mov    $0x4,%edi
  xor    %eax,%eax
  mov    $0x9,%r12d
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x4(%rsp),%r15d
  lea    (%r15,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  sub    %r15d,%r12d
  js     L666
L794:
  sar    $0x2,%r12d
  mov    %r12d,%r15d
  neg    %r15d
  test   %r13d,%r13d
  jne    L3551
L1732:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%ebx
  lea    (%rbx,%r12,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  lea    -0x3(%rbx),%eax
  mov    %eax,0x28(%rsp)
  jmp    L3019
L1796:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  sar    %ebx
  jmp    L3876
L2948:
  mov    0xc(%rsp),%eax
  add    $0x2,%eax
  sar    %eax
  mov    %eax,%ebx
  test   %r13d,%r13d
  jne    L1796
  mov    $0x2,%ebp
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  cltd
  idiv   %ebp
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L253
  nopw   0x0(%rax,%rax,1)
L2497:
  mov    0x4(%rsp),%eax
  lea    -0x7(%rax),%edx
  sub    $0xa,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L2071
L3304:
  mov    0x4(%rsp),%eax
  lea    0x1(%rax),%esi
  sub    $0x2,%eax
  mov    %eax,%ebx
  mov    %esi,0x24(%rsp)
  cmovs  %esi,%ebx
  mov    %eax,0x14(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  jmp    L1471
L145:
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x14(%rsp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L3655
L166:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L1881
  nopl   (%rax)
L321:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r13d,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L3079
  nopl   (%rax)
L3229:
  subl   $0x1,0x14(%rsp)
  mov    0x1c(%rsp),%esi
  subl   $0x1,0xc(%rsp)
  cmp    %esi,0x2c(%rsp)
  jge    L838
L39:
  mov    0x54(%rsp),%eax
  mov    0x40(%rsp),%edx
  lea    -0x5(%rax),%ecx
  lea    -0x7(%rax),%esi
  sub    $0x6,%eax
  cmp    %ecx,%edx
  mov    %ecx,0x44(%rsp)
  cmovl  %edx,%eax
  mov    %esi,0x4c(%rsp)
  mov    %esi,0x4(%rsp)
  mov    %eax,0x48(%rsp)
  mov    0x10(%rsp),%eax
  mov    0x48(%rsp),%ecx
  sub    %esi,%eax
  mov    %eax,0xc(%rsp)
  cmp    %ecx,0x4(%rsp)
  jg     L1963
  xchg   %ax,%ax
L3559:
  mov    0x4(%rsp),%eax
  mov    $0x5,%ebx
  sub    %eax,%ebx
  js     L2179
  mov    0x4(%rsp),%eax
  mov    0x4(%rsp),%r15d
  sar    $0x2,%ebx
  lea    -0x2(%rax),%ecx
  add    $0x1,%eax
  mov    %ecx,0x14(%rsp)
  mov    %eax,0x34(%rsp)
  and    $0x1,%r15d
  je     L3337
L1697:
  mov    0x4(%rsp),%ecx
  mov    $0x9,%edx
  mov    $0x6,%eax
  sub    %ecx,%edx
  mov    %edx,0x24(%rsp)
  sar    $0x2,%edx
  sub    %ecx,%eax
  mov    %edx,0x1c(%rsp)
  mov    %eax,0x20(%rsp)
  js     L3089
  mov    0x4(%rsp),%eax
  mov    0x1c(%rsp),%edi
  lea    -0x6(%rax),%edx
  sub    $0x3,%eax
  mov    %edx,0x30(%rsp)
  mov    %eax,0x18(%rsp)
L1632:
  mov    0xc(%rsp),%ecx
  mov    $0x1,%edx
  mov    %ecx,%eax
  sub    %ecx,%edx
  mov    %ecx,%r14d
  neg    %eax
  sar    %r14d
  mov    %eax,0x28(%rsp)
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  test   %ecx,%ecx
  cmovns %r14d,%eax
  mov    %edi,%r14d
  neg    %r14d
  mov    %eax,0x8(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r14d,%ebp
  neg    %ebp
  lea    (%rax,%rdi,2),%ebx
  cmp    %ebp,0x8(%rsp)
  jl     L1070
  nopl   0x0(%rax,%rax,1)
L2355:
  lea    0x2(%rbx),%r13d
  test   %r15d,%r15d
  je     L3060
L2680:
  test   %ebp,%ebp
  jns    L1149
  mov    %ebx,%ebp
  lea    0x1(%r14),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L693
  nopl   (%rax)
L1581:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L1149
L693:
  test   %r15d,%r15d
  jne    L1581
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L693
L1149:
  sub    $0x1,%r14d
  mov    %r13d,%ebx
  mov    %r14d,%ebp
  neg    %ebp
  cmp    %ebp,0x8(%rsp)
  jge    L2355
L1070:
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jl     L1930
  mov    0xc(%rsp),%edx
  mov    0x38(%rsp),%eax
  sub    0x4(%rsp),%eax
  not    %edx
  sar    %eax
  mov    %edx,0x2c(%rsp)
L1103:
  mov    0x30(%rsp),%esi
  mov    0x24(%rsp),%edi
  mov    0x14(%rsp),%edx
  test   %esi,%esi
  mov    %esi,%r14d
  cmovs  0x18(%rsp),%r14d
  lea    (%rdx,%rax,2),%ebp
  sar    $0x2,%r14d
  neg    %r14d
  test   %edi,%edi
  cmovns 0x1c(%rsp),%r14d
  mov    %r14d,0x8(%rsp)
  mov    %eax,%r14d
  neg    %r14d
  mov    %r14d,%eax
  neg    %eax
  cmp    %eax,0x8(%rsp)
  jl     L1387
  nopw   0x0(%rax,%rax,1)
L3027:
  test   %eax,%eax
  jns    L2166
  mov    %ebp,%r12d
  lea    0x1(%r14),%r13d
  mov    $0x1,%ebx
  shr    $0x1f,%r12d
  add    %ebp,%r12d
  sar    %r12d
  jmp    L1948
  nopl   0x0(%rax)
L694:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L2166
L1948:
  test   %r15d,%r15d
  jne    L694
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L1948
L2166:
  sub    $0x1,%r14d
  add    $0x2,%ebp
  mov    %r14d,%eax
  neg    %eax
  cmp    %eax,0x8(%rsp)
  jge    L3027
L1387:
  mov    0x4(%rsp),%esi
  mov    $0xa,%eax
  cmp    %esi,%eax
  js     L472
  mov    $0xd,%edx
  sub    0x4(%rsp),%edx
  sar    $0x2,%edx
L1872:
  mov    0x2c(%rsp),%ecx
  mov    0x38(%rsp),%r14d
  sub    0x4(%rsp),%r14d
  mov    %ecx,%eax
  sar    %r14d
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  cmpl   $0xfffffffe,0xc(%rsp)
  cmovge %r14d,%eax
  mov    %edx,%r14d
  neg    %r14d
  mov    %eax,0x8(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r14d,%ebx
  neg    %ebx
  lea    (%rax,%rdx,2),%ebp
  cmp    %ebx,0x8(%rsp)
  jl     L252
  xchg   %ax,%ax
L2746:
  test   %r15d,%r15d
  je     L2471
L1132:
  test   %ebx,%ebx
  jns    L1825
  mov    %ebp,%r12d
  lea    0x1(%r14),%r13d
  mov    $0x1,%ebx
  shr    $0x1f,%r12d
  add    %ebp,%r12d
  sar    %r12d
  jmp    L3312
  nopl   (%rax)
L1089:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L1825
L3312:
  test   %r15d,%r15d
  jne    L1089
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L3312
L1825:
  sub    $0x1,%r14d
  add    $0x2,%ebp
  mov    %r14d,%ebx
  neg    %ebx
  cmp    %ebx,0x8(%rsp)
  jge    L2746
L252:
  mov    0xc(%rsp),%edx
  cmp    $0xfffffffc,%edx
  jge    L2041
  mov    $0xfffffffd,%eax
  sub    %edx,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  mov    0x4(%rsp),%eax
  sar    %ebx
  lea    0x3(%rax),%ebp
  neg    %ebx
  and    $0x3,%ebp
  test   %r15d,%r15d
  je     L3632
L755:
  test   %ebp,%ebp
  je     L2187
L3812:
  mov    0x28(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L423
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L423:
  mov    0x20(%rsp),%ecx
  mov    0x18(%rsp),%r13d
  mov    0x34(%rsp),%esi
  mov    0x10(%rsp),%ebp
  sar    $0x2,%r13d
  lea    0x3(%rcx),%eax
  test   %ecx,%ecx
  cmovns %ecx,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x4(%rsp)
  mov    %esi,0x4(%rsp)
  cmovle %eax,%r13d
  sub    0xc(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%esi
  sub    $0x1,%ebp
  mov    %esi,%r14d
  sub    %eax,%ebp
  jmp    L489
  nopl   0x0(%rax,%rax,1)
L1156:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L489:
  cmp    %r13d,%ebx
  jg     L1354
  test   %r14d,%r14d
  jne    L1156
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L1156
  nopl   0x0(%rax,%rax,1)
L3060:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r13d,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L2680
  nopl   (%rax)
L2471:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x2(%r14),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1132
  nopw   0x0(%rax,%rax,1)
L1354:
  subl   $0x1,0xc(%rsp)
  mov    0x48(%rsp),%ecx
  cmp    %ecx,0x4(%rsp)
  jle    L3559
L1963:
  mov    0x44(%rsp),%eax
  mov    0x10(%rsp),%ecx
  mov    %eax,%edx
  mov    %eax,0x8(%rsp)
  sub    %ecx,%edx
  sub    %eax,%ecx
  mov    %edx,0x14(%rsp)
  mov    %ecx,0xc(%rsp)
  cmp    %eax,0x40(%rsp)
  jl     L1773
  nopw   0x0(%rax,%rax,1)
L2143:
  mov    0x8(%rsp),%eax
  mov    $0x2,%edx
  cmp    %eax,%edx
  js     L885
  mov    0x8(%rsp),%eax
  mov    $0x5,%ebx
  sub    %eax,%ebx
  lea    -0x2(%rax),%ecx
  add    $0x1,%eax
  mov    %ecx,0x1c(%rsp)
  sar    $0x2,%ebx
  mov    %eax,0x18(%rsp)
L2838:
  mov    0xc(%rsp),%ecx
  mov    $0x1,%edx
  sub    %ecx,%edx
  mov    %ecx,%r12d
  mov    %edx,%eax
  sar    %r12d
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  test   %ecx,%ecx
  cmovs  %eax,%r12d
  mov    0x8(%rsp),%eax
  mov    %eax,%r15d
  lea    (%rax,%rbx,2),%ebp
  and    $0x1,%r15d
  jmp    L1312
  nop
L111:
  add    $0x1,%ebx
  add    $0x2,%ebp
L1312:
  cmp    %r12d,%ebx
  jg     L2868
  test   %r15d,%r15d
  jne    L111
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L111
L2041:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  mov    0x4(%rsp),%eax
  sar    %ebx
  lea    0x3(%rax),%ebp
  and    $0x3,%ebp
  test   %r15d,%r15d
  jne    L755
L3632:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  test   %ebp,%ebp
  je     L264
L325:
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x14(%rsp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L3812
L3836:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  mov    0x8(%rsp),%eax
  sar    %ebx
  lea    0x3(%rax),%ebp
  and    $0x3,%ebp
  test   %r15d,%r15d
  jne    L2635
L2293:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  test   %ebp,%ebp
  je     L746
L3592:
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x18(%rsp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L3172
L3165:
  mov    0xc(%rsp),%eax
  add    $0x2,%eax
  sar    %eax
  mov    %eax,%ebx
  test   %r15d,%r15d
  jne    L3836
  mov    $0x2,%ebp
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  cltd
  idiv   %ebp
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L759
  nopl   0x0(%rax)
L2129:
  mov    0x8(%rsp),%eax
  mov    0x8(%rsp),%r15d
  lea    0x1(%rax),%edx
  sub    $0x2,%eax
  mov    %eax,%ebx
  mov    %edx,0x1c(%rsp)
  cmovs  %edx,%ebx
  mov    %eax,0x18(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  and    $0x1,%r15d
  jne    L3621
L3136:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    (%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L3621
L2944:
  lea    -0x3(%rax),%ecx
  sub    $0x6,%eax
  mov    %eax,%edx
  mov    %ecx,0x28(%rsp)
  cmovs  %ecx,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L2254
L472:
  mov    %esi,%eax
  lea    -0x7(%rsi),%edx
  sub    $0xa,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L1872
L1930:
  not    %ecx
  mov    %ecx,%eax
  mov    %ecx,0x2c(%rsp)
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  jmp    L1103
L3089:
  lea    -0x3(%rcx),%eax
  sub    $0x6,%ecx
  mov    %ecx,%edi
  mov    %eax,0x18(%rsp)
  cmovs  %eax,%edi
  mov    %ecx,0x30(%rsp)
  sar    $0x2,%edi
  neg    %edi
  jmp    L1632
L2179:
  lea    0x1(%rax),%esi
  sub    $0x2,%eax
  mov    0x4(%rsp),%r15d
  mov    %eax,%ebx
  mov    %esi,0x34(%rsp)
  cmovs  %esi,%ebx
  mov    %eax,0x14(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  and    $0x1,%r15d
  jne    L1697
L3337:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1697
L1421:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3172
L2187:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3812
  nopl   0x0(%rax)
L2868:
  mov    0x8(%rsp),%edx
  mov    $0x6,%eax
  sub    %edx,%eax
  mov    %eax,0x20(%rsp)
  js     L2501
  mov    0x8(%rsp),%ecx
  mov    $0x9,%eax
  lea    -0x3(%rcx),%esi
  sub    %ecx,%eax
  mov    %esi,0x24(%rsp)
  sar    $0x2,%eax
L3276:
  mov    0xc(%rsp),%esi
  cmp    $0xffffffff,%esi
  jl     L2636
  mov    0xc(%rsp),%ecx
  mov    $0x2,%edx
  sub    0x14(%rsp),%edx
  sar    %edx
  not    %ecx
L1862:
  cmp    %edx,%eax
  mov    $0x2,%r14d
  mov    0x1c(%rsp),%esi
  cmovl  %edx,%eax
  mov    %ecx,%edx
  sub    0x14(%rsp),%r14d
  shr    $0x1f,%edx
  add    %ecx,%edx
  sar    %r14d
  lea    (%rsi,%rax,2),%ebp
  sar    %edx
  neg    %edx
  cmpl   $0xfffffffe,0xc(%rsp)
  cmovge %r14d,%edx
  mov    %eax,%r14d
  neg    %r14d
  mov    %r14d,%eax
  mov    %edx,0x4(%rsp)
  neg    %eax
  cmp    0x4(%rsp),%eax
  jg     L311
  nopl   0x0(%rax,%rax,1)
L1117:
  test   %eax,%eax
  jns    L1981
  mov    %ebp,%r12d
  lea    0x1(%r14),%r13d
  mov    $0x1,%ebx
  shr    $0x1f,%r12d
  add    %ebp,%r12d
  sar    %r12d
  jmp    L3917
  nopl   0x0(%rax)
L1612:
  add    $0x1,%ebx
  cmp    %ebx,%r14d
  jl     L1981
L3917:
  test   %r15d,%r15d
  jne    L1612
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %ebx,%r14d
  jge    L3917
L1981:
  sub    $0x1,%r14d
  add    $0x2,%ebp
  mov    %r14d,%eax
  neg    %eax
  cmp    0x4(%rsp),%eax
  jle    L1117
L311:
  mov    0x8(%rsp),%esi
  mov    $0xa,%eax
  cmp    %esi,%eax
  js     L3101
  mov    $0xd,%ebx
  sub    0x8(%rsp),%ebx
  sar    $0x2,%ebx
L837:
  mov    0xc(%rsp),%esi
  cmp    $0xfffffffd,%esi
  jge    L479
  mov    0x14(%rsp),%eax
  lea    0x4(%rsi),%r12d
  lea    -0x3(%rax),%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
L1592:
  cmp    %eax,%ebx
  cmovl  %eax,%ebx
  mov    %edx,%eax
  sar    %r12d
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  cmpl   $0xfffffffc,0xc(%rsp)
  cmovl  %eax,%r12d
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%ebp
  jmp    L3639
  cs nopw 0x0(%rax,%rax,1)
L1870:
  add    $0x1,%ebx
  add    $0x2,%ebp
L3639:
  cmp    %r12d,%ebx
  jg     L1013
  test   %r15d,%r15d
  jne    L1870
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L1870
  nopl   0x0(%rax)
L1013:
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L1801
L3817:
  test   %r15d,%r15d
  je     L3834
L1920:
  mov    0x14(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L2885
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L2885:
  mov    0x20(%rsp),%esi
  mov    0x24(%rsp),%r12d
  mov    0x18(%rsp),%ecx
  mov    0x10(%rsp),%ebp
  sar    $0x2,%r12d
  lea    0x3(%rsi),%eax
  test   %esi,%esi
  cmovns %esi,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x8(%rsp)
  mov    %ecx,0x8(%rsp)
  cmovle %eax,%r12d
  sub    0xc(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%ecx
  sub    $0x1,%ebp
  mov    %ecx,%r14d
  sub    %eax,%ebp
  jmp    L1114
  nopl   0x0(%rax)
L2146:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L1114:
  cmp    %r12d,%ebx
  jg     L853
  test   %r14d,%r14d
  jne    L2146
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L2146
  nopw   0x0(%rax,%rax,1)
L853:
  addl   $0x1,0x14(%rsp)
  mov    0x18(%rsp),%esi
  subl   $0x1,0xc(%rsp)
  cmp    %esi,0x40(%rsp)
  jge    L2143
L1773:
  mov    0x38(%rsp),%eax
  add    $0x39,%eax
  mov    %eax,0x40(%rsp)
  cmp    %eax,0x3c(%rsp)
  jle    L16
  mov    $0xffffffca,%eax
  sub    0x10(%rsp),%eax
  movl   $0xffffffc5,0xc(%rsp)
  mov    %eax,0x18(%rsp)
  mov    0x40(%rsp),%eax
  mov    %eax,0x8(%rsp)
  nopw   0x0(%rax,%rax,1)
L2152:
  mov    0x18(%rsp),%esi
  test   %esi,%esi
  js     L2847
  mov    0x8(%rsp),%eax
  mov    0x18(%rsp),%ebx
  lea    -0x2(%rax),%edx
  add    $0x1,%eax
  sar    $0x2,%ebx
  mov    %edx,0x14(%rsp)
  mov    %eax,0x1c(%rsp)
L1122:
  mov    0x8(%rsp),%r15d
  and    $0x1,%r15d
  je     L2996
  mov    $0x9,%eax
  sub    0x8(%rsp),%eax
  jns    L3059
  mov    0x8(%rsp),%eax
  lea    -0x3(%rax),%esi
  sub    $0x6,%eax
  mov    %eax,%r14d
  mov    %esi,0x24(%rsp)
  cmovs  %esi,%r14d
  sar    $0x2,%r14d
  mov    %r14d,%r12d
  neg    %r12d
L3903:
  test   %r12d,%r12d
  jns    L3853
  mov    0x14(%rsp),%eax
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L1767
  nopl   0x0(%rax,%rax,1)
L1461:
  add    $0x1,%r12d
  cmp    %r12d,%r14d
  jl     L3853
L1767:
  test   %r15d,%r15d
  jne    L1461
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r12d,%r14d
  jge    L1767
L3853:
  mov    $0xa,%eax
  cmp    0x8(%rsp),%eax
  js     L3046
  mov    $0xd,%edx
  sub    0x8(%rsp),%edx
  sar    $0x2,%edx
L1976:
  mov    0xc(%rsp),%esi
  mov    $0x1,%ecx
  mov    %esi,%eax
  sub    %esi,%ecx
  mov    %esi,%r14d
  neg    %eax
  sar    %r14d
  mov    %eax,0x20(%rsp)
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  test   %esi,%esi
  cmovns %r14d,%eax
  mov    %edx,%r14d
  neg    %r14d
  mov    %eax,0x4(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r14d,%ebp
  neg    %ebp
  lea    (%rax,%rdx,2),%ebx
  cmp    %ebp,0x4(%rsp)
  jl     L214
L3837:
  lea    0x2(%rbx),%r13d
  test   %r15d,%r15d
  je     L322
L2640:
  test   %ebp,%ebp
  jns    L1967
  mov    %ebx,%ebp
  lea    0x1(%r14),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L2387
  nopl   (%rax)
L912:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L1967
L2387:
  test   %r15d,%r15d
  jne    L912
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L2387
L1967:
  sub    $0x1,%r14d
  mov    %r13d,%ebx
  mov    %r14d,%ebp
  neg    %ebp
  cmp    %ebp,0x4(%rsp)
  jge    L3837
L214:
  mov    0xc(%rsp),%eax
  cmp    $0xfffffffe,%eax
  jge    L2455
  not    %eax
  mov    %eax,%r12d
  shr    $0x1f,%r12d
  add    %eax,%r12d
  sar    %r12d
  neg    %r12d
  test   %r15d,%r15d
  je     L464
L3612:
  mov    0x14(%rsp),%eax
  mov    %r12d,%r14d
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  neg    %r14d
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L3443
  cs nopw 0x0(%rax,%rax,1)
L2889:
  add    $0x1,%r12d
  cmp    %r14d,%r12d
  jg     L51
L3443:
  test   %r15d,%r15d
  jne    L2889
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r14d,%r12d
  jle    L3443
L51:
  cmpl   $0xfffffffc,0xc(%rsp)
  jge    L2655
  mov    $0xfffffffd,%eax
  sub    0xc(%rsp),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
  test   %r15d,%r15d
  je     L1617
L971:
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L1448
L1413:
  mov    0x20(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L2537
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L2537:
  mov    0x8(%rsp),%esi
  mov    0x24(%rsp),%r12d
  mov    $0x6,%edx
  mov    $0x4,%ebp
  sar    $0x2,%r12d
  sub    %esi,%edx
  lea    0x3(%rdx),%eax
  cmovns %edx,%eax
  mov    0x1c(%rsp),%edx
  sar    $0x2,%eax
  mov    %edx,0x8(%rsp)
  neg    %eax
  cmp    $0x2,%esi
  cmovle %eax,%r12d
  sub    0x18(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%edx
  sub    %eax,%ebp
  mov    %edx,%r14d
  jmp    L3703
  nopl   0x0(%rax,%rax,1)
L2855:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L3703:
  cmp    %r12d,%ebx
  jg     L3297
  test   %r14d,%r14d
  jne    L2855
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L2855
  nopl   0x0(%rax,%rax,1)
L322:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r13d,%edi
  sar    %edi
  call   <hash@plt>
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x2(%r14),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbx),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L2640
  nopw   0x0(%rax,%rax,1)
L3297:
  subl   $0x1,0x18(%rsp)
  mov    0x1c(%rsp),%ecx
  subl   $0x1,0xc(%rsp)
  cmp    %ecx,0x3c(%rsp)
  jne    L2152
L16:
  mov    0x3c(%rsp),%eax
  mov    0x40(%rsp),%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  mov    %eax,0x8(%rsp)
  cmp    %eax,0x5c(%rsp)
  jl     L3622
  mov    0x8(%rsp),%ecx
  mov    $0x5,%eax
  sub    %ecx,%eax
  mov    %eax,0x14(%rsp)
  mov    0x10(%rsp),%eax
  sub    %ecx,%eax
  mov    %eax,0xc(%rsp)
  nopl   0x0(%rax)
L2887:
  mov    0x14(%rsp),%ecx
  test   %ecx,%ecx
  js     L465
  mov    0x8(%rsp),%eax
  mov    0x14(%rsp),%ebx
  mov    0x8(%rsp),%r15d
  lea    -0x2(%rax),%ecx
  add    $0x1,%eax
  sar    $0x2,%ebx
  mov    %ecx,0x1c(%rsp)
  mov    %eax,0x18(%rsp)
  and    $0x1,%r15d
  je     L2686
L1205:
  mov    0x8(%rsp),%eax
  mov    $0x6,%esi
  sub    %eax,%esi
  mov    %esi,0x24(%rsp)
  js     L2953
  mov    0x8(%rsp),%eax
  mov    $0x9,%edx
  sub    %eax,%edx
  sub    $0x3,%eax
  mov    %eax,0x28(%rsp)
  sar    $0x2,%edx
L419:
  mov    0xc(%rsp),%esi
  mov    $0x1,%ecx
  mov    %esi,%eax
  sub    %esi,%ecx
  mov    %esi,%r14d
  neg    %eax
  sar    %r14d
  mov    %eax,0x20(%rsp)
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  sar    %eax
  neg    %eax
  test   %esi,%esi
  cmovns %r14d,%eax
  mov    %edx,%r14d
  neg    %r14d
  mov    %eax,0x4(%rsp)
  mov    0x1c(%rsp),%eax
  mov    %r14d,%ebp
  neg    %ebp
  lea    (%rax,%rdx,2),%ebx
  cmp    %ebp,0x4(%rsp)
  jl     L3571
  nopl   0x0(%rax)
L1781:
  lea    0x2(%rbx),%r13d
  test   %r15d,%r15d
  je     L3323
L2792:
  test   %ebp,%ebp
  jns    L3665
  mov    %ebx,%ebp
  lea    0x1(%r14),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L213
  nopl   (%rax)
L3003:
  add    $0x1,%ebx
  cmp    %r14d,%ebx
  jg     L3665
L213:
  test   %r15d,%r15d
  jne    L3003
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r14d,%ebx
  jle    L213
L3665:
  sub    $0x1,%r14d
  mov    %r13d,%ebx
  mov    %r14d,%ebp
  neg    %ebp
  cmp    %ebp,0x4(%rsp)
  jge    L1781
L3571:
  mov    0xc(%rsp),%eax
  cmp    $0xfffffffe,%eax
  jge    L3577
  not    %eax
  mov    %eax,%r12d
  shr    $0x1f,%r12d
  add    %eax,%r12d
  sar    %r12d
  neg    %r12d
  test   %r15d,%r15d
  je     L1153
L812:
  mov    0x1c(%rsp),%eax
  mov    %r12d,%r14d
  mov    $0x1,%ebp
  sub    %r12d,%ebp
  neg    %r14d
  lea    (%rax,%r12,2),%eax
  mov    $0x1,%r12d
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  jmp    L3675
  xchg   %ax,%ax
L750:
  add    $0x1,%r12d
  cmp    %r14d,%r12d
  jg     L100
L3675:
  test   %r15d,%r15d
  jne    L750
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  add    $0x1,%r12d
  call   <hash@plt>
  cmp    %r14d,%r12d
  jle    L3675
L100:
  cmpl   $0xfffffffc,0xc(%rsp)
  jge    L1682
  mov    $0xfffffffd,%eax
  sub    0xc(%rsp),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
  test   %r15d,%r15d
  je     L1018
L3620:
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L94
L3292:
  mov    0x20(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L767
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L767:
  mov    0x24(%rsp),%ecx
  mov    0x28(%rsp),%r12d
  mov    $0x4,%ebp
  mov    0x18(%rsp),%esi
  sar    $0x2,%r12d
  lea    0x3(%rcx),%eax
  test   %ecx,%ecx
  cmovns %ecx,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x8(%rsp)
  mov    %esi,0x8(%rsp)
  cmovle %eax,%r12d
  sub    0x14(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%esi
  sub    %eax,%ebp
  mov    %esi,%r14d
  jmp    L3549
  nopl   (%rax)
L1635:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L3549:
  cmp    %r12d,%ebx
  jg     L1251
  test   %r14d,%r14d
  jne    L1635
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L1635
  nop
L3323:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r13d,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L2792
  nopl   (%rax)
L1251:
  subl   $0x1,0x14(%rsp)
  mov    0x18(%rsp),%edx
  subl   $0x1,0xc(%rsp)
  cmp    %edx,0x4c(%rsp)
  jne    L2887
L3622:
  mov    0x40(%rsp),%eax
  mov    0x4c(%rsp),%edx
  mov    0x10(%rsp),%esi
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    %edx,%eax
  mov    %edx,0x8(%rsp)
  sub    %esi,%eax
  sub    %edx,%esi
  sub    $0x1,%eax
  mov    %esi,0xc(%rsp)
  mov    %eax,0x24(%rsp)
  cmp    %edx,0x44(%rsp)
  jle    L1763
  nopl   0x0(%rax,%rax,1)
L3569:
  mov    0x8(%rsp),%eax
  mov    $0x5,%ebx
  sub    %eax,%ebx
  js     L2979
  mov    0x8(%rsp),%eax
  mov    0x8(%rsp),%r14d
  sar    $0x2,%ebx
  lea    -0x2(%rax),%esi
  add    $0x1,%eax
  mov    %esi,0x14(%rsp)
  mov    %eax,0x1c(%rsp)
  and    $0x1,%r14d
  je     L2373
L450:
  mov    0x8(%rsp),%ecx
  mov    $0x9,%edx
  mov    $0x6,%eax
  sub    %ecx,%edx
  mov    %edx,0x2c(%rsp)
  sar    $0x2,%edx
  sub    %ecx,%eax
  mov    %edx,0x20(%rsp)
  mov    %eax,0x30(%rsp)
  js     L950
  mov    0x8(%rsp),%eax
  mov    0x20(%rsp),%edi
  lea    -0x6(%rax),%edx
  sub    $0x3,%eax
  mov    %edx,0x34(%rsp)
  mov    %eax,0x18(%rsp)
L290:
  mov    0xc(%rsp),%ecx
  mov    $0x1,%edx
  mov    %ecx,%eax
  sub    %ecx,%edx
  mov    %ecx,%r15d
  neg    %eax
  sar    %r15d
  mov    %eax,0x28(%rsp)
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  test   %ecx,%ecx
  cmovns %r15d,%eax
  mov    %edi,%r15d
  neg    %r15d
  mov    %eax,0x4(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r15d,%ebp
  neg    %ebp
  lea    (%rax,%rdi,2),%ebx
  cmp    %ebp,0x4(%rsp)
  jl     L1768
  nopl   0x0(%rax,%rax,1)
L2510:
  lea    0x2(%rbx),%r13d
  test   %r14d,%r14d
  je     L3056
L1550:
  test   %ebp,%ebp
  jns    L659
  mov    %ebx,%ebp
  lea    0x1(%r15),%r12d
  shr    $0x1f,%ebp
  add    %ebx,%ebp
  mov    $0x1,%ebx
  sar    %ebp
  jmp    L3043
  nopl   (%rax)
L3629:
  add    $0x1,%ebx
  cmp    %r15d,%ebx
  jg     L659
L3043:
  test   %r14d,%r14d
  jne    L3629
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r15d,%ebx
  jle    L3043
L659:
  sub    $0x1,%r15d
  mov    %r13d,%ebx
  mov    %r15d,%ebp
  neg    %ebp
  cmp    %ebp,0x4(%rsp)
  jge    L2510
L1768:
  mov    0xc(%rsp),%ecx
  lea    0x2(%rcx),%eax
  mov    %eax,0x38(%rsp)
  sar    %eax
  cmp    $0xffffffff,%ecx
  jge    L2992
  mov    0x24(%rsp),%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
L2992:
  mov    0x34(%rsp),%edx
  mov    0x14(%rsp),%ecx
  test   %edx,%edx
  mov    %edx,%r15d
  cmovs  0x18(%rsp),%r15d
  mov    0x2c(%rsp),%edx
  lea    (%rcx,%rax,2),%ebp
  sar    $0x2,%r15d
  neg    %r15d
  test   %edx,%edx
  cmovns 0x20(%rsp),%r15d
  mov    %r15d,0x4(%rsp)
  mov    %eax,%r15d
  neg    %r15d
  mov    %r15d,%eax
  neg    %eax
  cmp    %eax,0x4(%rsp)
  jl     L565
  nopw   0x0(%rax,%rax,1)
L3875:
  test   %eax,%eax
  jns    L477
  mov    %ebp,%r12d
  lea    0x1(%r15),%r13d
  mov    $0x1,%ebx
  shr    $0x1f,%r12d
  add    %ebp,%r12d
  sar    %r12d
  jmp    L250
  nopl   0x0(%rax)
L3915:
  add    $0x1,%ebx
  cmp    %r15d,%ebx
  jg     L477
L250:
  test   %r14d,%r14d
  jne    L3915
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r15d,%ebx
  jle    L250
L477:
  sub    $0x1,%r15d
  add    $0x2,%ebp
  mov    %r15d,%eax
  neg    %eax
  cmp    %eax,0x4(%rsp)
  jge    L3875
L565:
  mov    0x8(%rsp),%edx
  mov    $0xa,%eax
  cmp    %edx,%eax
  js     L3659
  mov    $0xd,%edx
  sub    0x8(%rsp),%edx
  sar    $0x2,%edx
L279:
  mov    0x24(%rsp),%esi
  mov    0x38(%rsp),%r12d
  mov    %esi,%eax
  sar    %r12d
  shr    $0x1f,%eax
  add    %esi,%eax
  sar    %eax
  neg    %eax
  cmpl   $0xfffffffe,0xc(%rsp)
  cmovge %r12d,%eax
  mov    %edx,%r12d
  neg    %r12d
  mov    %eax,0x4(%rsp)
  mov    0x14(%rsp),%eax
  mov    %r12d,%ebx
  neg    %ebx
  lea    (%rax,%rdx,2),%ebp
  cmp    %ebx,0x4(%rsp)
  jl     L11
  nopl   (%rax)
L3197:
  test   %r14d,%r14d
  je     L1684
L2308:
  test   %ebx,%ebx
  jns    L2065
  mov    %ebp,%r13d
  lea    0x1(%r12),%r15d
  mov    $0x1,%ebx
  shr    $0x1f,%r13d
  add    %ebp,%r13d
  sar    %r13d
  jmp    L2517
  cs nopw 0x0(%rax,%rax,1)
L1142:
  add    $0x1,%ebx
  cmp    %r12d,%ebx
  jg     L2065
L2517:
  test   %r14d,%r14d
  jne    L1142
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %r12d,%ebx
  jle    L2517
L2065:
  sub    $0x1,%r12d
  add    $0x2,%ebp
  mov    %r12d,%ebx
  neg    %ebx
  cmp    %ebx,0x4(%rsp)
  jge    L3197
L11:
  mov    0xc(%rsp),%ecx
  cmp    $0xfffffffc,%ecx
  jge    L1262
  mov    $0xfffffffd,%eax
  sub    %ecx,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
  test   %r14d,%r14d
  je     L3367
L1515:
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L1990
L1306:
  mov    0x28(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L1765
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L1765:
  mov    0x30(%rsp),%ecx
  mov    0x18(%rsp),%r12d
  mov    0x1c(%rsp),%edx
  mov    0x10(%rsp),%ebp
  sar    $0x2,%r12d
  lea    0x3(%rcx),%eax
  test   %ecx,%ecx
  cmovns %ecx,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x8(%rsp)
  mov    %edx,0x8(%rsp)
  cmovle %eax,%r12d
  sub    0xc(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%edx
  sub    $0x1,%ebp
  mov    %edx,%r15d
  sub    %eax,%ebp
  jmp    L75
  nopl   0x0(%rax,%rax,1)
L445:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L75:
  cmp    %r12d,%ebx
  jg     L589
  test   %r15d,%r15d
  jne    L445
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L445
  nopl   0x0(%rax,%rax,1)
L3056:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r15d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r13d,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L1550
  nopl   (%rax)
L1684:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    0x2(%r12),%edi
  xor    %eax,%eax
  call   <hash@plt>
  lea    -0x2(%rbp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L2308
L589:
  subl   $0x1,0xc(%rsp)
  mov    0x1c(%rsp),%ecx
  addl   $0x1,0x24(%rsp)
  cmp    %ecx,0x44(%rsp)
  jne    L3569
L1763:
  mov    0x44(%rsp),%eax
  mov    0x40(%rsp),%ecx
  mov    0x10(%rsp),%esi
  mov    0x54(%rsp),%edx
  cmp    %ecx,%eax
  cmovge %eax,%ecx
  sub    $0x1,%edx
  mov    %edx,0x28(%rsp)
  mov    %ecx,%eax
  mov    %ecx,0x4(%rsp)
  sub    %esi,%eax
  sub    %ecx,%esi
  sub    $0x1,%eax
  mov    %esi,0xc(%rsp)
  mov    %eax,0x14(%rsp)
  cmp    %edx,%ecx
  jge    L1887
  nopl   0x0(%rax)
L2901:
  mov    0x4(%rsp),%ecx
  mov    $0x2,%eax
  cmp    %ecx,%eax
  js     L2842
  mov    0x4(%rsp),%eax
  mov    $0x5,%ebp
  sub    %eax,%ebp
  lea    -0x2(%rax),%ebx
  add    $0x1,%eax
  mov    %eax,0x18(%rsp)
  sar    $0x2,%ebp
L3120:
  mov    0xc(%rsp),%ecx
  mov    $0x1,%edx
  mov    %ecx,%eax
  sub    %ecx,%edx
  mov    %ecx,%r14d
  neg    %eax
  sar    %r14d
  mov    %eax,0x1c(%rsp)
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  test   %ecx,%ecx
  cmovs  %eax,%r14d
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbp,2),%r12d
  and    $0x1,%eax
  mov    %eax,%r15d
  jmp    L2946
  nopl   0x0(%rax,%rax,1)
L3862:
  add    $0x1,%ebp
  add    $0x2,%r12d
L2946:
  cmp    %r14d,%ebp
  jg     L1107
  test   %r15d,%r15d
  jne    L3862
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %r12d,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L3862
  nopl   0x0(%rax)
L1107:
  mov    0x4(%rsp),%esi
  mov    $0x6,%eax
  sub    %esi,%eax
  mov    %eax,0x20(%rsp)
  js     L1165
  mov    0x4(%rsp),%esi
  mov    $0x9,%eax
  lea    -0x3(%rsi),%ecx
  sub    %esi,%eax
  mov    %ecx,0x24(%rsp)
  sar    $0x2,%eax
L1945:
  mov    0x14(%rsp),%esi
  mov    $0x1,%edx
  sub    %esi,%edx
  sar    %edx
  cmpl   $0xffffffff,0xc(%rsp)
  jge    L3799
  mov    %esi,%edx
  shr    $0x1f,%edx
  add    %esi,%edx
  sar    %edx
  neg    %edx
L3799:
  mov    0x14(%rsp),%ecx
  cmp    %edx,%eax
  mov    $0x1,%r14d
  cmovl  %edx,%eax
  mov    %ecx,%edx
  sub    %ecx,%r14d
  shr    $0x1f,%edx
  sar    %r14d
  mov    %eax,%r15d
  lea    (%rbx,%rax,2),%ebp
  add    %ecx,%edx
  sar    %edx
  neg    %edx
  cmpl   $0xfffffffe,0xc(%rsp)
  cmovge %r14d,%edx
  mov    0x4(%rsp),%r14d
  neg    %r15d
  mov    %r15d,%eax
  mov    %edx,0x8(%rsp)
  and    $0x1,%r14d
  neg    %eax
  cmp    0x8(%rsp),%eax
  jg     L1924
  nopl   0x0(%rax,%rax,1)
L3859:
  test   %eax,%eax
  jns    L3237
  mov    %ebp,%r12d
  lea    0x1(%r15),%r13d
  mov    $0x1,%ebx
  shr    $0x1f,%r12d
  add    %ebp,%r12d
  sar    %r12d
  jmp    L2808
  nopl   0x0(%rax)
L675:
  add    $0x1,%ebx
  cmp    %ebx,%r15d
  jl     L3237
L2808:
  test   %r14d,%r14d
  jne    L675
  mov    $0x5,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r13d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <hash@plt>
  cmp    %ebx,%r15d
  jge    L2808
L3237:
  sub    $0x1,%r15d
  add    $0x2,%ebp
  mov    %r15d,%eax
  neg    %eax
  cmp    0x8(%rsp),%eax
  jle    L3859
L1924:
  mov    0xc(%rsp),%ecx
  cmp    $0xfffffffd,%ecx
  jge    L1373
  mov    $0xfffffffd,%eax
  mov    0x4(%rsp),%edx
  lea    0x4(%rcx),%r12d
  sub    %ecx,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  mov    $0xa,%eax
  sar    %ebx
  neg    %ebx
  cmp    %edx,%eax
  js     L298
L2786:
  mov    $0xd,%eax
  sub    0x4(%rsp),%eax
  sar    $0x2,%eax
L2173:
  mov    0xc(%rsp),%esi
  cmp    %eax,%ebx
  mov    $0xfffffffd,%edx
  cmovl  %eax,%ebx
  sar    %r12d
  sub    %esi,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  cmp    $0xfffffffc,%esi
  cmovl  %eax,%r12d
  mov    0x4(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%ebp
  and    $0x1,%eax
  mov    %eax,%r14d
  jmp    L356
  nopl   (%rax)
L2069:
  add    $0x1,%ebx
  add    $0x2,%ebp
L356:
  cmp    %r12d,%ebx
  jg     L2590
  test   %r14d,%r14d
  jne    L2069
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  jmp    L2069
  nopl   0x0(%rax)
L2590:
  mov    0x4(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  je     L1780
L3732:
  mov    0x1c(%rsp),%eax
  mov    %eax,%ebx
  sar    %ebx
  test   %eax,%eax
  jg     L1200
  mov    0xc(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
L1200:
  mov    0x20(%rsp),%esi
  mov    0x24(%rsp),%r12d
  mov    0x18(%rsp),%edx
  mov    0x10(%rsp),%ebp
  sar    $0x2,%r12d
  lea    0x3(%rsi),%eax
  test   %esi,%esi
  cmovns %esi,%eax
  sar    $0x2,%eax
  neg    %eax
  cmpl   $0x2,0x4(%rsp)
  mov    %edx,0x4(%rsp)
  cmovle %eax,%r12d
  sub    0xc(%rsp),%ebp
  lea    (%rbx,%rbx,1),%eax
  and    $0x1,%edx
  sub    $0x1,%ebp
  mov    %edx,%r14d
  sub    %eax,%ebp
  jmp    L916
L3587:
  add    $0x1,%ebx
  sub    $0x2,%ebp
L916:
  cmp    %r12d,%ebx
  jg     L1815
  test   %r14d,%r14d
  jne    L3587
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  shr    $0x1f,%edi
  add    %ebp,%edi
  sar    %edi
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L3587
  nopw   0x0(%rax,%rax,1)
L1815:
  subl   $0x1,0xc(%rsp)
  mov    0x28(%rsp),%esi
  addl   $0x1,0x14(%rsp)
  cmp    %esi,0x18(%rsp)
  jne    L2901
L1887:
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x50(%rsp),%ebx
  xor    %eax,%eax
  mov    %ebx,%edi
  call   <hash@plt>
  mov    0x58(%rsp),%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  add    $0x68,%rsp
  mov    %ebx,%edi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <hash@plt>
L2996:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%r14d
  lea    (%r14,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    $0x9,%eax
  sub    %r14d,%eax
  js     L1665
L3059:
  sar    $0x2,%eax
  mov    %eax,%r14d
  mov    %eax,%r12d
  neg    %r14d
  test   %r15d,%r15d
  jne    L1139
L2223:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %r14d,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%ebx
  lea    (%rbx,%r12,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  lea    -0x3(%rbx),%eax
  mov    %eax,0x24(%rsp)
  jmp    L3903
L1262:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  sar    %ebx
  test   %r14d,%r14d
  jne    L1515
L3367:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  jne    L1306
L1990:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L1306
L1373:
  mov    0xc(%rsp),%eax
  mov    0x4(%rsp),%edx
  lea    0x4(%rax),%r12d
  mov    $0xa,%eax
  mov    %r12d,%ebx
  sar    %ebx
  cmp    %edx,%eax
  jns    L2786
L298:
  lea    -0x7(%rdx),%eax
  sub    $0xa,%edx
  cmovns %edx,%eax
  sar    $0x2,%eax
  neg    %eax
  jmp    L2173
L479:
  mov    0xc(%rsp),%eax
  mov    0x14(%rsp),%ecx
  lea    0x4(%rax),%r12d
  lea    -0x3(%rcx),%edx
  mov    %r12d,%eax
  sar    %eax
  jmp    L1592
L1682:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  sar    %ebx
  test   %r15d,%r15d
  jne    L3620
L1018:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  jne    L3292
L94:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3292
L3577:
  mov    0xc(%rsp),%eax
  add    $0x2,%eax
  sar    %eax
  mov    %eax,%ebx
  test   %r15d,%r15d
  jne    L1682
  mov    $0x2,%ebp
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  cltd
  idiv   %ebp
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L100
  nopl   (%rax)
L2655:
  mov    0xc(%rsp),%eax
  lea    0x4(%rax),%ebx
  sar    %ebx
  test   %r15d,%r15d
  jne    L971
L1617:
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  add    $0x3,%eax
  test   $0x3,%al
  jne    L1413
L1448:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L1413
L2455:
  mov    0xc(%rsp),%eax
  add    $0x2,%eax
  sar    %eax
  mov    %eax,%ebx
  test   %r15d,%r15d
  jne    L2655
  mov    $0x2,%ebp
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  sub    %ebx,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%rbx,2),%eax
  cltd
  idiv   %ebp
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L51
  nopl   0x0(%rax)
L3046:
  mov    0x8(%rsp),%eax
  lea    -0x7(%rax),%edx
  sub    $0xa,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L1976
L2953:
  lea    -0x3(%rax),%esi
  sub    $0x6,%eax
  mov    %eax,%edx
  mov    %esi,0x28(%rsp)
  cmovs  %esi,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L419
L2847:
  mov    0x8(%rsp),%eax
  lea    0x1(%rax),%esi
  sub    $0x2,%eax
  mov    %eax,%ebx
  mov    %esi,0x1c(%rsp)
  cmovs  %esi,%ebx
  mov    %eax,0x14(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  jmp    L1122
L465:
  mov    0x8(%rsp),%eax
  mov    0x8(%rsp),%r15d
  lea    0x1(%rax),%ecx
  sub    $0x2,%eax
  mov    %eax,%ebx
  mov    %ecx,0x18(%rsp)
  cmovs  %ecx,%ebx
  mov    %eax,0x1c(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  and    $0x1,%r15d
  jne    L1205
L2686:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    (%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1205
L3101:
  mov    %esi,%eax
  lea    -0x7(%rsi),%ebx
  sub    $0xa,%eax
  cmovns %eax,%ebx
  sar    $0x2,%ebx
  neg    %ebx
  jmp    L837
L2979:
  lea    0x1(%rax),%edx
  sub    $0x2,%eax
  mov    0x8(%rsp),%r14d
  mov    %eax,%ebx
  mov    %edx,0x1c(%rsp)
  cmovs  %edx,%ebx
  mov    %eax,0x14(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  and    $0x1,%r14d
  jne    L450
L2373:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  neg    %edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    (%rax,%rbx,2),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L450
L1165:
  mov    %esi,%eax
  lea    -0x3(%rsi),%ecx
  sub    $0x6,%eax
  mov    %ecx,0x24(%rsp)
  cmovs  %ecx,%eax
  sar    $0x2,%eax
  neg    %eax
  jmp    L1945
L2842:
  mov    %ecx,%eax
  lea    0x1(%rcx),%esi
  sub    $0x2,%eax
  mov    %esi,0x18(%rsp)
  cmovns %eax,%esi
  mov    %eax,%ebx
  mov    %esi,%ebp
  sar    $0x2,%ebp
  neg    %ebp
  jmp    L3120
L3659:
  mov    %edx,%eax
  lea    -0x7(%rdx),%edx
  sub    $0xa,%eax
  cmovns %eax,%edx
  sar    $0x2,%edx
  neg    %edx
  jmp    L279
L950:
  lea    -0x3(%rcx),%eax
  sub    $0x6,%ecx
  mov    %ecx,%edi
  mov    %eax,0x18(%rsp)
  cmovs  %eax,%edi
  mov    %ecx,0x34(%rsp)
  sar    $0x2,%edi
  neg    %edi
  jmp    L290
L2636:
  not    %esi
  mov    %esi,%edx
  mov    %esi,%ecx
  shr    $0x1f,%edx
  add    %esi,%edx
  sar    %edx
  neg    %edx
  jmp    L1862
L885:
  lea    0x1(%rax),%edx
  sub    $0x2,%eax
  mov    %eax,%ebx
  mov    %edx,0x18(%rsp)
  cmovs  %edx,%ebx
  mov    %eax,0x1c(%rsp)
  sar    $0x2,%ebx
  neg    %ebx
  jmp    L2838
L2501:
  mov    %edx,%eax
  lea    -0x3(%rdx),%ecx
  sub    $0x6,%eax
  mov    %ecx,0x24(%rsp)
  cmovs  %ecx,%eax
  sar    $0x2,%eax
  neg    %eax
  jmp    L3276
L1780:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3732
L3834:
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x1c(%rsp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L1920
L1801:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3817
L1139:
  mov    0x8(%rsp),%eax
  sub    $0x3,%eax
  mov    %eax,0x24(%rsp)
  jmp    L3853
L746:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L3592
L264:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    0x2(%rax),%edi
  sub    $0x1,%eax
  cmovns %eax,%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L325
L3551:
  mov    0x4(%rsp),%eax
  sub    $0x3,%eax
  mov    %eax,0x28(%rsp)
  jmp    L908
L2850:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x1(%rax),%edi
  xor    %eax,%eax
  sar    $0x2,%edi
  call   <hash@plt>
  jmp    L1058
L2489:
  mov    0x50(%rsp),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  neg    %ebx
  jmp    L405
L2050:
  lea    -0x3(%rax),%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  neg    %eax
  jmp    L2349
L2544:
  mov    %esi,%eax
  shr    $0x1f,%eax
  add    %esi,%eax
  sar    %eax
  neg    %eax
  jmp    L3404
L1119:
  mov    $0x3,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    0x18(%rsp),%eax
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  xor    %eax,%eax
  sar    %edi
  call   <hash@plt>
  jmp    L2399
L666:
  mov    0x4(%rsp),%eax
  mov    $0x4,%ecx
  sub    $0x6,%eax
  cltd
  idiv   %ecx
  mov    %eax,%r12d
  mov    %eax,%r15d
  neg    %r12d
  jmp    L1732
L2883:
  mov    $0x2,%ebx
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  sub    %r12d,%edi
  call   <hash@plt>
  mov    0x4(%rsp),%eax
  lea    -0x4(%rax,%r12,2),%eax
  cltd
  idiv   %ebx
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L1261
L1665:
  mov    0x8(%rsp),%eax
  mov    $0x4,%ecx
  sub    $0x6,%eax
  cltd
  idiv   %ecx
  mov    %eax,%r12d
  mov    %eax,%r14d
  neg    %r12d
  jmp    L2223
L1153:
  mov    $0x2,%ebx
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  sub    %r12d,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%r12,2),%eax
  cltd
  idiv   %ebx
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L812
L464:
  mov    $0x2,%ebx
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  sub    %r12d,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%r12,2),%eax
  cltd
  idiv   %ebx
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L3612
L806:
  mov    $0x2,%ebx
  mov    $0x6,%edi
  xor    %eax,%eax
  call   <hash@plt>
  mov    %ebx,%edi
  xor    %eax,%eax
  sub    %r12d,%edi
  call   <hash@plt>
  mov    0x8(%rsp),%eax
  lea    -0x4(%rax,%r12,2),%eax
  cltd
  idiv   %ebx
  mov    %eax,%edi
  xor    %eax,%eax
  call   <hash@plt>
  jmp    L2284
```

assistant: ```c
void test(int n) {
  int p1, p2, p3;
  int i, j, k;
  for (p1 = -54 * n + 4; p1 <= 4; p1++) {
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
  }
  {
    hash(3);
    hash(1);
  };
  {
    hash(4);
    hash(1);
    hash(2);
  };
  {
    hash(1);
    hash(2);
  };
  {
    hash(6);
    hash(1);
    hash(2);
  };
  for (p1 = 7; p1 <= 9; p1++) {
    for (p2 = (((-p1 + 2) < 0) ? -((-(-p1 + 2)) / (4)) : ((-p1 + 2) + (4) - 1) / (4)); p2 <= -1; p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if (p1 % 2 == 0) {
      j = (p1 - 2) / 2;
      {
        hash(6);
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if ((p1 + 1) % 2 == 0) {
      i = (p1 - 3) / 2;
      {
        hash(2);
        hash((p1 - 3) / 2);
        hash(1);
      };
    }
  }
  {
    hash(4);
    hash(2);
    hash(3);
  };
  {
    hash(4);
    hash(1);
    hash(4);
  };
  {
    hash(5);
    hash(2);
    hash(3);
    hash(1);
  };
  {
    hash(6);
    hash(2);
    hash(3);
  };
  {
    hash(1);
    hash(4);
  };
  {
    hash(6);
    hash(1);
    hash(4);
  };
  for (p1 = 11; p1 <= 12; p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p2 = (((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)); p2 <= -1; p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    if (p1 % 2 == 0) {
      j = (p1 - 4) / 2;
      {
        hash(6);
        hash(2);
        hash((p1 - 4) / 2);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if (p1 % 2 == 0) {
      j = (p1 - 2) / 2;
      {
        hash(6);
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if ((p1 + 1) % 2 == 0) {
      i = (p1 - 3) / 2;
      {
        hash(2);
        hash((p1 - 3) / 2);
        hash(1);
      };
    }
    for (p2 = 2; p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  {
    hash(3);
    hash(3);
  };
  {
    hash(2);
    hash(5);
    hash(1);
  };
  {
    hash(2);
    hash(4);
    hash(2);
  };
  for (p1 = 14; p1 <= 2 * n + 2; p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    p2 = (((-p1 + 9) < 0) ? -((-(-p1 + 9) + (4) - 1) / (4)) : (-p1 + 9) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    for (p2 = (((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)); p2 <= -1; p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    if (p1 % 2 == 0) {
      j = (p1 - 4) / 2;
      {
        hash(6);
        hash(2);
        hash((p1 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if (p1 % 2 == 0) {
      j = (p1 - 2) / 2;
      {
        hash(6);
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    if ((p1 + 1) % 2 == 0) {
      i = (p1 - 3) / 2;
      {
        hash(2);
        hash((p1 - 3) / 2);
        hash(1);
      };
    }
    for (p2 = 2; p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  p1 = 2 * n + 3;
  if ((n + 1) % 2 == 0) {
    i = (n + 1) / 2;
    {
      hash(3);
      hash((n + 1) / 2);
    };
  }
  {
    hash(2);
    hash(n);
    hash(1);
  };
  for (p2 = 2; p2 <= (((n) < 0) ? -((-(n) + (2) - 1) / (2)) : (n) / (2)); p2++) {
    i = -p2 + n + 1;
    {
      hash(2);
      hash(-p2 + n + 1);
      hash(p2);
    };
  }
  p1 = 2 * n + 4;
  for (p2 = (((-n - 1) < 0) ? -((-(-n - 1)) / (2)) : ((-n - 1) + (2) - 1) / (2)); p2 <= (((-2 * n + 1) < 0) ? -((-(-2 * n + 1) + (4) - 1) / (4)) : (-2 * n + 1) / (4)); p2++) {
    j = p2 + n + 2;
    {
      hash(4);
      hash(-p2);
      hash(p2 + n + 2);
    };
  }
  for (p2 = (((-n + 1) < 0) ? -((-(-n + 1)) / (2)) : ((-n + 1) + (2) - 1) / (2)); p2 <= (((-2 * n + 5) < 0) ? -((-(-2 * n + 5) + (4) - 1) / (4)) : (-2 * n + 5) / (4)); p2++) {
    j = p2 + n + 2;
    {
      hash(4);
      hash(-p2);
      hash(p2 + n + 2);
    };
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      j = p2 + n + 1;
      {
        hash(5);
        hash(-p2 + 1);
        hash(p2 + n + 1);
        hash(p3);
      };
    }
  }
  for (p2 = (((-n + 3) < 0) ? -((-(-n + 3)) / (2)) : ((-n + 3) + (2) - 1) / (2)); p2 <= -2; p2++) {
    j = p2 + n + 2;
    {
      hash(4);
      hash(-p2);
      hash(p2 + n + 2);
    };
    i = -p2 + 2;
    j = p2 + n;
    {
      hash(6);
      hash(-p2 + 2);
      hash(p2 + n);
    };
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      j = p2 + n + 1;
      {
        hash(5);
        hash(-p2 + 1);
        hash(p2 + n + 1);
        hash(p3);
      };
    }
  }
  j = n - 1;
  {
    hash(6);
    hash(3);
    hash(n - 1);
  };
  {
    hash(5);
    hash(2);
    hash(n);
    hash(1);
  };
  {
    hash(6);
    hash(2);
    hash(n);
  };
  i = n + 1;
  {
    hash(1);
    hash(n + 1);
  };
  for (p1 = 2 * n + 5; p1 <= ((4 * n - 10) < (2 * n + 58) ? (4 * n - 10) : (2 * n + 58)); p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    p2 = (((-p1 + 9) < 0) ? -((-(-p1 + 9) + (4) - 1) / (4)) : (-p1 + 9) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    for (p2 = (((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    for (p2 = (((-p1 + 2 * n + 3) < 0) ? -((-(-p1 + 2 * n + 3)) / (2)) : ((-p1 + 2 * n + 3) + (2) - 1) / (2)); p2 <= (((((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2))) < (-1) ? ((((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2))) : (-1)); p2++) {
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = 4 * n - 9; p1 <= ((4 * n - 8) < (2 * n + 58) ? (4 * n - 8) : (2 * n + 58)); p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p2 = (((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    p2 = (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = 4 * n - 7; p1 <= ((4 * n - 6) < (2 * n + 58) ? (4 * n - 6) : (2 * n + 58)); p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p2 = (((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2)); p2 <= (((-p1 + 9) < 0) ? -((-(-p1 + 9) + (4) - 1) / (4)) : (-p1 + 9) / (4)); p2++) {
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2)); p2++) {
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = 4 * n - 5; p1 <= 2 * n + 58; p1++) {
    for (p2 = (((-p1 + 2) < 0) ? -((-(-p1 + 2)) / (4)) : ((-p1 + 2) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
    }
    for (p2 = (((((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2))) > ((((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4))) ? ((((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2))) : ((((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)))); p2 <= (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2)); p2++) {
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((((-p1 + 2 * n + 3) < 0) ? -((-(-p1 + 2 * n + 3)) / (2)) : ((-p1 + 2 * n + 3) + (2) - 1) / (2))) > ((((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4))) ? ((((-p1 + 2 * n + 3) < 0) ? -((-(-p1 + 2 * n + 3)) / (2)) : ((-p1 + 2 * n + 3) + (2) - 1) / (2))) : ((((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)))); p2 <= (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2)); p2++) {
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    if (p1 % 2 == 0) {
      i = (p1 - 2) / 2;
      {
        hash(1);
        hash((p1 - 2) / 2);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = 2 * n + 59; p1 <= 4 * n - 10; p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    p2 = (((-p1 + 9) < 0) ? -((-(-p1 + 9) + (4) - 1) / (4)) : (-p1 + 9) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    for (p2 = (((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    p2 = (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = ((4 * n - 9) > (2 * n + 59) ? (4 * n - 9) : (2 * n + 59)); p1 <= 4 * n - 8; p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p2 = (((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    for (p3 = 1; p3 <= -p2; p3++) {
      i = -p2 + 1;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 2) / 2;
        {
          hash(5);
          hash(-p2 + 1);
          hash((p1 + 2 * p2 - 2) / 2);
          hash(p3);
        };
      }
    }
    p2 = (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = ((4 * n - 7) > (2 * n + 59) ? (4 * n - 7) : (2 * n + 59)); p1 <= 4 * n - 6; p1++) {
    p2 = (((-p1 + 5) < 0) ? -((-(-p1 + 5) + (4) - 1) / (4)) : (-p1 + 5) / (4));
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2) / 2;
      {
        hash(4);
        hash(-p2);
        hash((p1 + 2 * p2) / 2);
      };
    }
    for (p2 = (((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2)); p2 <= (((-p1 + 9) < 0) ? -((-(-p1 + 9) + (4) - 1) / (4)) : (-p1 + 9) / (4)); p2++) {
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2)); p2++) {
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    p2 = (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2));
    i = -p2 + 2;
    if (p1 % 2 == 0) {
      j = (p1 + 2 * p2 - 4) / 2;
      {
        hash(6);
        hash(-p2 + 2);
        hash((p1 + 2 * p2 - 4) / 2);
      };
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  for (p1 = ((4 * n - 5) > (2 * n + 59) ? (4 * n - 5) : (2 * n + 59)); p1 <= 4 * n - 2; p1++) {
    for (p2 = (((-p1 + 2) < 0) ? -((-(-p1 + 2)) / (4)) : ((-p1 + 2) + (4) - 1) / (4)); p2 <= (((-p1 + 2 * n) < 0) ? -((-(-p1 + 2 * n) + (2) - 1) / (2)) : (-p1 + 2 * n) / (2)); p2++) {
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2) / 2;
        {
          hash(4);
          hash(-p2);
          hash((p1 + 2 * p2) / 2);
        };
      }
    }
    for (p2 = (((((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2))) > ((((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4))) ? ((((-p1 + 2 * n + 1) < 0) ? -((-(-p1 + 2 * n + 1)) / (2)) : ((-p1 + 2 * n + 1) + (2) - 1) / (2))) : ((((-p1 + 6) < 0) ? -((-(-p1 + 6)) / (4)) : ((-p1 + 6) + (4) - 1) / (4)))); p2 <= (((-p1 + 2 * n + 2) < 0) ? -((-(-p1 + 2 * n + 2) + (2) - 1) / (2)) : (-p1 + 2 * n + 2) / (2)); p2++) {
      for (p3 = 1; p3 <= -p2; p3++) {
        i = -p2 + 1;
        if (p1 % 2 == 0) {
          j = (p1 + 2 * p2 - 2) / 2;
          {
            hash(5);
            hash(-p2 + 1);
            hash((p1 + 2 * p2 - 2) / 2);
            hash(p3);
          };
        }
      }
    }
    for (p2 = (((((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4))) > ((((-p1 + 2 * n + 3) < 0) ? -((-(-p1 + 2 * n + 3)) / (2)) : ((-p1 + 2 * n + 3) + (2) - 1) / (2))) ? ((((-p1 + 10) < 0) ? -((-(-p1 + 10)) / (4)) : ((-p1 + 10) + (4) - 1) / (4))) : ((((-p1 + 2 * n + 3) < 0) ? -((-(-p1 + 2 * n + 3)) / (2)) : ((-p1 + 2 * n + 3) + (2) - 1) / (2)))); p2 <= (((-p1 + 2 * n + 4) < 0) ? -((-(-p1 + 2 * n + 4) + (2) - 1) / (2)) : (-p1 + 2 * n + 4) / (2)); p2++) {
      i = -p2 + 2;
      if (p1 % 2 == 0) {
        j = (p1 + 2 * p2 - 4) / 2;
        {
          hash(6);
          hash(-p2 + 2);
          hash((p1 + 2 * p2 - 4) / 2);
        };
      }
    }
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
    for (p2 = (((p1 - 2 * n - 1) < 0) ? -((-(p1 - 2 * n - 1)) / (2)) : ((p1 - 2 * n - 1) + (2) - 1) / (2)); p2 <= (((p1 - 3) < 0) ? -((-(p1 - 3) + (4) - 1) / (4)) : (p1 - 3) / (4)); p2++) {
      if ((p1 + 1) % 2 == 0) {
        i = (p1 - 2 * p2 - 1) / 2;
        {
          hash(2);
          hash((p1 - 2 * p2 - 1) / 2);
          hash(p2);
        };
      }
    }
  }
  p1 = 4 * n - 1;
  p2 = n - 1;
  j = n - 1;
  {
    hash(2);
    hash(n);
    hash(n - 1);
  };
  for (p1 = 4 * n; p1 <= 4 * n + 1; p1++) {
    if ((p1 + 3) % 4 == 0) {
      i = (p1 - 1) / 4;
      {
        hash(3);
        hash((p1 - 1) / 4);
      };
    }
  }
}
```