// File: /workspace/github_cpp_makefile_star2_O1/marxn[P]pupp/3rdparty/gmp/mpn/toom_interpolate_12pts.c
// Function: _gmpn_toom_interpolate_12pts
void
mpn_toom_interpolate_12pts (mp_ptr pp, mp_ptr r1, mp_ptr r3, mp_ptr r5,
			mp_size_t n, mp_size_t spt, int half, mp_ptr wsi)
{
  mp_limb_t cy;
  mp_size_t n3;
  mp_size_t n3p1;
  n3 = 3 * n;
  n3p1 = n3 + 1;

#define   r4    (pp + n3)			/* 3n+1 */
#define   r2    (pp + 7 * n)			/* 3n+1 */
#define   r0    (pp +11 * n)			/* s+t <= 2*n */

  /******************************* interpolation *****************************/
  if (half != 0) {
    cy = mpn_sub_n (r3, r3, r0, spt);
    MPN_DECR_U (r3 + spt, n3p1 - spt, cy);

    cy = DO_mpn_sublsh_n (r2, r0, spt, 10, wsi);
    MPN_DECR_U (r2 + spt, n3p1 - spt, cy);
    DO_mpn_subrsh(r5, n3p1, r0, spt, 2, wsi);

    cy = DO_mpn_sublsh_n (r1, r0, spt, 20, wsi);
    MPN_DECR_U (r1 + spt, n3p1 - spt, cy);
    DO_mpn_subrsh(r4, n3p1, r0, spt, 4, wsi);
  };

  r4[n3] -= DO_mpn_sublsh_n (r4 + n, pp, 2 * n, 20, wsi);
  DO_mpn_subrsh(r1 + n, 2 * n + 1, pp, 2 * n, 4, wsi);

#if HAVE_NATIVE_mpn_add_n_sub_n
  mpn_add_n_sub_n (r1, r4, r4, r1, n3p1);
#else
  ASSERT_NOCARRY(mpn_add_n (wsi, r1, r4, n3p1));
  mpn_sub_n (r4, r4, r1, n3p1); /* can be negative */
  MP_PTR_SWAP(r1, wsi);
#endif

  r5[n3] -= DO_mpn_sublsh_n (r5 + n, pp, 2 * n, 10, wsi);
  DO_mpn_subrsh(r2 + n, 2 * n + 1, pp, 2 * n, 2, wsi);

#if HAVE_NATIVE_mpn_add_n_sub_n
  mpn_add_n_sub_n (r2, r5, r5, r2, n3p1);
#else
  mpn_sub_n (wsi, r5, r2, n3p1); /* can be negative */
  ASSERT_NOCARRY(mpn_add_n (r2, r2, r5, n3p1));
  MP_PTR_SWAP(r5, wsi);
#endif

  r3[n3] -= mpn_sub_n (r3+n, r3+n, pp, 2 * n);

#if AORSMUL_FASTER_AORS_AORSLSH
  mpn_submul_1 (r4, r5, n3p1, 257); /* can be negative */
#else
  mpn_sub_n (r4, r4, r5, n3p1); /* can be negative */
  DO_mpn_sublsh_n (r4, r5, n3p1, 8, wsi); /* can be negative */
#endif
  /* A division by 2835x4 follows. Warning: the operand can be negative! */
  mpn_divexact_by2835x4(r4, r4, n3p1);
  if ((r4[n3] & (GMP_NUMB_MAX << (GMP_NUMB_BITS-3))) != 0)
    r4[n3] |= (GMP_NUMB_MAX << (GMP_NUMB_BITS-2));

#if AORSMUL_FASTER_2AORSLSH
  mpn_addmul_1 (r5, r4, n3p1, 60); /* can be negative */
#else
  DO_mpn_sublsh_n (r5, r4, n3p1, 2, wsi); /* can be negative */
  DO_mpn_addlsh_n (r5, r4, n3p1, 6, wsi); /* can give a carry */
#endif
  mpn_divexact_by255(r5, r5, n3p1);

  ASSERT_NOCARRY(DO_mpn_sublsh_n (r2, r3, n3p1, 5, wsi));

#if AORSMUL_FASTER_3AORSLSH
  ASSERT_NOCARRY(mpn_submul_1 (r1, r2, n3p1, 100));
#else
  ASSERT_NOCARRY(DO_mpn_sublsh_n (r1, r2, n3p1, 6, wsi));
  ASSERT_NOCARRY(DO_mpn_sublsh_n (r1, r2, n3p1, 5, wsi));
  ASSERT_NOCARRY(DO_mpn_sublsh_n (r1, r2, n3p1, 2, wsi));
#endif
  ASSERT_NOCARRY(DO_mpn_sublsh_n (r1, r3, n3p1, 9, wsi));
  mpn_divexact_by42525(r1, r1, n3p1);

#if AORSMUL_FASTER_AORS_2AORSLSH
  ASSERT_NOCARRY(mpn_submul_1 (r2, r1, n3p1, 225));
#else
  ASSERT_NOCARRY(mpn_sub_n (r2, r2, r1, n3p1));
  ASSERT_NOCARRY(DO_mpn_addlsh_n (r2, r1, n3p1, 5, wsi));
  ASSERT_NOCARRY(DO_mpn_sublsh_n (r2, r1, n3p1, 8, wsi));
#endif
  mpn_divexact_by9x4(r2, r2, n3p1);

  ASSERT_NOCARRY(mpn_sub_n (r3, r3, r2, n3p1));

  mpn_sub_n (r4, r2, r4, n3p1);
  ASSERT_NOCARRY(mpn_rshift(r4, r4, n3p1, 1));
  ASSERT_NOCARRY(mpn_sub_n (r2, r2, r4, n3p1));

  mpn_add_n (r5, r5, r1, n3p1);
  ASSERT_NOCARRY(mpn_rshift(r5, r5, n3p1, 1));

  /* last interpolation steps... */
  ASSERT_NOCARRY(mpn_sub_n (r3, r3, r1, n3p1));
  ASSERT_NOCARRY(mpn_sub_n (r1, r1, r5, n3p1));
  /* ... could be mixed with recomposition
	||H-r5|M-r5|L-r5|   ||H-r1|M-r1|L-r1|
  */

  /***************************** recomposition *******************************/
  /*
    pp[] prior to operations:
    |M r0|L r0|___||H r2|M r2|L r2|___||H r4|M r4|L r4|____|H_r6|L r6|pp

    summation scheme for remaining operations:
    |__12|n_11|n_10|n__9|n__8|n__7|n__6|n__5|n__4|n__3|n__2|n___|n___|pp
    |M r0|L r0|___||H r2|M r2|L r2|___||H r4|M r4|L r4|____|H_r6|L r6|pp
	||H r1|M r1|L r1|   ||H r3|M r3|L r3|   ||H_r5|M_r5|L_r5|
  */

  cy = mpn_add_n (pp + n, pp + n, r5, n);
  cy = mpn_add_1 (pp + 2 * n, r5 + n, n, cy);
#if HAVE_NATIVE_mpn_add_nc
  cy = r5[n3] + mpn_add_nc(pp + n3, pp + n3, r5 + 2 * n, n, cy);
#else
  MPN_INCR_U (r5 + 2 * n, n + 1, cy);
  cy = r5[n3] + mpn_add_n (pp + n3, pp + n3, r5 + 2 * n, n);
#endif
  MPN_INCR_U (pp + n3 + n, 2 * n + 1, cy);

  pp[2 * n3]+= mpn_add_n (pp + 5 * n, pp + 5 * n, r3, n);
  cy = mpn_add_1 (pp + 2 * n3, r3 + n, n, pp[2 * n3]);
#if HAVE_NATIVE_mpn_add_nc
  cy = r3[n3] + mpn_add_nc(pp + 7 * n, pp + 7 * n, r3 + 2 * n, n, cy);
#else
  MPN_INCR_U (r3 + 2 * n, n + 1, cy);
  cy = r3[n3] + mpn_add_n (pp + 7 * n, pp + 7 * n, r3 + 2 * n, n);
#endif
  MPN_INCR_U (pp + 8 * n, 2 * n + 1, cy);

  pp[10*n]+=mpn_add_n (pp + 9 * n, pp + 9 * n, r1, n);
  if (half) {
    cy = mpn_add_1 (pp + 10 * n, r1 + n, n, pp[10 * n]);
#if HAVE_NATIVE_mpn_add_nc
    if (LIKELY (spt > n)) {
      cy = r1[n3] + mpn_add_nc(pp + 11 * n, pp + 11 * n, r1 + 2 * n, n, cy);
      MPN_INCR_U (pp + 4 * n3, spt - n, cy);
    } else {
      ASSERT_NOCARRY(mpn_add_nc(pp + 11 * n, pp + 11 * n, r1 + 2 * n, spt, cy));
    }
#else
    MPN_INCR_U (r1 + 2 * n, n + 1, cy);
    if (LIKELY (spt > n)) {
      cy = r1[n3] + mpn_add_n (pp + 11 * n, pp + 11 * n, r1 + 2 * n, n);
      MPN_INCR_U (pp + 4 * n3, spt - n, cy);
    } else {
      ASSERT_NOCARRY(mpn_add_n (pp + 11 * n, pp + 11 * n, r1 + 2 * n, spt));
    }
#endif
  } else {
    ASSERT_NOCARRY(mpn_add_1 (pp + 10 * n, r1 + n, spt, pp[10 * n]));
  }

#undef   r0
#undef   r2
#undef   r4
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %r9, %r13
movq %r8, %r15
movq %rcx, 0x50(%rsp)
movq %rdx, 0x38(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdi, 0x8(%rsp)
movq 0xc8(%rsp), %rbx
movl 0xc0(%rsp), %eax
leaq (%r8,%r8,2), %r12
leaq (%r8,%r8,2), %rcx
incq %rcx
movq %rcx, 0x58(%rsp)
movl %eax, 0x64(%rsp)
testl %eax, %eax
movq %r12, 0x30(%rsp)
movq %rbx, (%rsp)
je 0x290eb
imulq $0x58, %r15, %rcx
movq %rcx, 0x10(%rsp)
movq 0x8(%rsp), %rax
leaq (%rax,%rcx), %r14
movq %rax, %rbp
movq 0x38(%rsp), %rbx
movq %rbx, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r14, 0x18(%rsp)
movq %r13, %rcx
callq 0x1c1c0
leaq (%rbx,%r13,8), %rcx
subq %rax, (%rcx)
jae 0x28f6f
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x28f64
imulq $0x38, %r15, %r12
movq %rbp, %rbx
addq %rbp, %r12
movq (%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
movl $0xa, %ecx
callq 0x1c4a0
movq %rax, %rbp
movq %r12, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
movq %r13, %rcx
callq 0x1c1c0
addq %rbp, %rax
leaq (%r12,%r13,8), %rcx
subq %rax, (%rcx)
jae 0x28fb9
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x28fae
movq 0x10(%rsp), %rax
leaq (%rbx,%rax), %rbp
addq $0x8, %rbp
movq -0x8(%rbp), %rax
shrq $0x2, %rax
movq 0x50(%rsp), %rbx
movq %rbx, %rcx
subq %rax, (%rcx)
jae 0x28fe6
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x28fdb
leaq -0x1(%r13), %r12
movq (%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
movl $0x3e, %ecx
callq 0x1c4a0
movq %rax, %r14
movq %rbx, %rdi
movq %rbx, %rsi
movq (%rsp), %rdx
movq %r12, %rcx
callq 0x1c1c0
addq %r14, %rax
leaq (%rbx,%r13,8), %rcx
addq $-0x8, %rcx
subq %rax, (%rcx)
jae 0x2902e
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x29023
movq (%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %r13, %rdx
movl $0x14, %ecx
callq 0x1c4a0
movq %rax, %r14
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %rbx, %rsi
movq (%rsp), %rdx
movq %r13, %rcx
callq 0x1c1c0
addq %r14, %rax
leaq (%rbx,%r13,8), %rcx
subq %rax, (%rcx)
jae 0x29075
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x2906a
movq -0x8(%rbp), %rax
shrq $0x4, %rax
movq 0x30(%rsp), %rcx
movq 0x8(%rsp), %rdx
leaq (%rdx,%rcx,8), %r14
movq %r14, %rcx
subq %rax, (%rcx)
jae 0x2909e
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x29093
movq (%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
movl $0x3c, %ecx
callq 0x1c4a0
movq %rax, %rbp
movq %r14, %rdi
movq %r14, %rsi
movq (%rsp), %rdx
movq %r12, %rcx
callq 0x1c1c0
addq %rbp, %rax
movq 0x30(%rsp), %r12
leaq (%r14,%r13,8), %rcx
addq $-0x8, %rcx
movq (%rsp), %rbx
subq %rax, (%rcx)
jae 0x290eb
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x290e0
movq %r13, 0x48(%rsp)
movq 0x8(%rsp), %rsi
leaq (%rsi,%r12,8), %r14
leaq (%r14,%r15,8), %r13
movq %r14, 0x18(%rsp)
leaq (%r15,%r15), %rbp
movq %rbx, %rdi
movq %rbp, %rdx
movq %rbp, 0x10(%rsp)
movl $0x14, %ecx
callq 0x1c4a0
movq %rax, 0x28(%rsp)
movq %r13, %rdi
movq %r13, 0x80(%rsp)
movq %r13, %rsi
movq %rbx, %rdx
movq %rbp, %rcx
callq 0x1c1c0
addq 0x28(%rsp), %rax
subq %rax, (%r14,%r12,8)
movq 0x8(%rsp), %rdx
movq (%rdx), %rax
shrq $0x4, %rax
movq 0x20(%rsp), %rbp
leaq (,%r15,8), %r14
addq %rbp, %r14
movq %r14, %rcx
subq %rax, (%rcx)
jae 0x29171
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x29166
leaq 0x8(%rdx), %rsi
movq %rsi, 0x28(%rsp)
leaq -0x1(,%r15,2), %r12
movq %r12, 0x78(%rsp)
movq %rbx, %rdi
movq %r12, %rdx
movl $0x3c, %ecx
callq 0x1c4a0
movq %rax, %r13
movq %r14, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x1c1c0
addq %r13, %rax
movq %r15, %rcx
shlq $0x4, %rcx
movq %rcx, 0x40(%rsp)
movq %r14, 0x68(%rsp)
addq %r14, %rcx
addq $-0x8, %rcx
subq %rax, (%rcx)
jae 0x291d6
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x291cb
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x58(%rsp), %r14
movq %r14, %rcx
callq 0x1bfa0
movq %rbx, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
movq %r14, %rcx
callq 0x1c1c0
movq 0x50(%rsp), %r12
leaq (%r12,%r15,8), %r13
movq %rbp, %rdi
movq 0x8(%rsp), %rbx
movq %rbx, %rsi
movq 0x10(%rsp), %r14
movq %r14, %rdx
movl $0xa, %ecx
callq 0x1c4a0
movq %rax, 0x70(%rsp)
movq %r13, %rdi
movq %r13, %rsi
movq %rbp, %rdx
movq %r14, %rcx
callq 0x1c1c0
addq 0x70(%rsp), %rax
movq 0x30(%rsp), %rcx
subq %rax, (%r12,%rcx,8)
movq (%rbx), %rax
shrq $0x2, %rax
imulq $0x38, %r15, %r14
addq %rbx, %r14
leaq (%r14,%r15,8), %r12
movq %r12, %rcx
subq %rax, (%rcx)
jae 0x29271
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x29266
movq %rbp, %rdi
movq 0x28(%rsp), %rsi
movq 0x78(%rsp), %rbx
movq %rbx, %rdx
movl $0x3e, %ecx
callq 0x1c4a0
movq %rax, %r13
movq %r12, %rdi
movq %r12, %rsi
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x1c1c0
addq %r13, %rax
movq 0x40(%rsp), %rcx
addq %r12, %rcx
addq $-0x8, %rcx
subq %rax, (%rcx)
jae 0x292be
subq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x292b3
movq %rbp, %rdi
movq 0x50(%rsp), %r12
movq %r12, %rsi
movq %r14, %rdx
movq 0x58(%rsp), %rbx
movq %rbx, %rcx
callq 0x1c1c0
movq %r14, %rdi
movq %r14, 0x28(%rsp)
movq %r14, %rsi
movq 0x18(%rsp), %r14
movq %r12, %rdx
movq %rbx, %rcx
callq 0x1bfa0
movq 0x38(%rsp), %r12
leaq (%r12,%r15,8), %rdi
movq %rdi, 0x40(%rsp)
movq %rdi, %rsi
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rcx
callq 0x1c1c0
movq 0x30(%rsp), %r13
subq %rax, (%r12,%r13,8)
movl $0x101, %ecx            # imm = 0x101
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x30370
movabsq $-0x6c7338faac1c88e5, %r8 # imm = 0x938CC70553E3771B
movl $0xb13, %ecx            # imm = 0xB13
movq %r14, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl $0x2, %r9d
callq 0x2f388
movq (%r14,%r13,8), %rax
movq %rax, %rcx
shrq $0x3d, %rcx
movq 0x50(%rsp), %r12
je 0x2937b
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
orq %rcx, %rax
movq 0x30(%rsp), %rcx
movq %rax, (%r14,%rcx,8)
movl $0x3c, %ecx
movq %rbp, %rdi
movq %r14, %rsi
movq 0x58(%rsp), %rbx
movq %rbx, %rdx
callq 0x30260
movabsq $0x101010101010101, %rcx # imm = 0x101010101010101
movq %rbp, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
xorl %r8d, %r8d
callq 0x2f410
movq %r12, %rdi
movq 0x38(%rsp), %rbp
movq %rbp, %rsi
movq %rbx, %rdx
movl $0x5, %ecx
callq 0x1c4a0
movq 0x28(%rsp), %r14
movq %r14, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movl $0x64, %ecx
movq %r12, %r13
movq (%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x30370
movq %r13, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movl $0x9, %ecx
callq 0x1c4a0
movq %r12, %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movabsq $-0x184bf2bb60ceb3cb, %r8 # imm = 0xE7B40D449F314C35
movl $0xa61d, %ecx           # imm = 0xA61D
movq %r12, %rdi
movq %r12, %rsi
movq %rbx, %rdx
xorl %r9d, %r9d
callq 0x2f388
movl $0xe1, %ecx
movq %r14, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x30370
movabsq $-0x71c71c71c71c71c7, %r8 # imm = 0x8E38E38E38E38E39
movl $0x9, %ecx
movq %r14, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl $0x2, %r9d
callq 0x2f388
movq %rbp, %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movq 0x18(%rsp), %rdi
movq %r14, %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rcx
callq 0x1c1c0
movq 0x18(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %rbx, %rdx
movl $0x1, %ecx
callq 0x30480
movq %r14, %rdi
movq %r14, %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x1bfa0
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rbx, %rdx
movl $0x1, %ecx
callq 0x30480
movq %rbp, %rdi
movq %rbp, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movq %r12, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %r13
movq %r13, %rdx
movq %rbx, %rcx
callq 0x1c1c0
movq 0x8(%rsp), %r12
leaq (%r12,%r15,8), %rdi
movq %rdi, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x1bfa0
movq 0x10(%rsp), %rcx
leaq (%r12,%rcx,8), %rcx
addq (%r13,%r15,8), %rax
movq %rax, (%rcx)
jae 0x295a1
cmpq $0x2, %r15
movl $0x1, %r8d
movl $0x1, %edx
cmovgeq %r15, %rdx
movl $0x1, %esi
movq 0x68(%rsp), %r10
cmpq %rsi, %rdx
je 0x295d4
movq (%r10,%rsi,8), %rdi
leaq 0x1(%rsi), %rax
incq %rdi
movq %rdi, (%rcx,%rsi,8)
movq %rax, %rsi
je 0x2955d
cmpq %rcx, %r10
setne %dl
cmpq %r15, %rax
setl %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x295d1
xorl %r8d, %r8d
movq (%r10,%rax,8), %rdx
movq %rdx, (%rcx,%rax,8)
incq %rax
cmpq %r15, %rax
jl 0x2958f
jmp 0x295d4
movq 0x68(%rsp), %rdi
cmpq %rcx, %rdi
sete %al
cmpq $0x2, %r15
setl %dl
orb %al, %dl
jne 0x295d1
movl $0x1, %eax
xorl %r8d, %r8d
movq (%rdi,%rax,8), %rdx
movq %rdx, (%rcx,%rax,8)
incq %rax
cmpq %rax, %r15
jne 0x295bf
jmp 0x295d4
xorl %r8d, %r8d
movq 0x30(%rsp), %rbp
movq (%r13,%rbp,8), %rbx
movq 0x10(%rsp), %rax
leaq (,%rax,8), %rdx
addq %r13, %rdx
movq %r14, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x1bf80
addq %rbx, %rax
movq 0x80(%rsp), %rcx
addq %rax, (%rcx)
jae 0x29617
addq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x2960c
leaq (%r15,%r15,4), %rbx
leaq (%r12,%rbx,8), %rdi
movq %rdi, %rsi
movq 0x38(%rsp), %r12
movq %r12, %rdx
movq %r15, %rcx
callq 0x1bfa0
movq %rbp, %rdx
shlq $0x4, %rdx
movq 0x8(%rsp), %rcx
addq %rdx, %rcx
movq 0x8(%rsp), %rsi
addq (%rsi,%rdx), %rax
movq 0x8(%rsp), %rsi
movq %rax, (%rsi,%rdx)
addq (%r12,%r15,8), %rax
movq 0x8(%rsp), %r12
movq %rax, (%r12,%rdx)
jae 0x296c3
cmpq $0x2, %r15
movl $0x1, %r8d
movl $0x1, %edx
cmovgeq %r15, %rdx
movl $0x1, %esi
movq 0x40(%rsp), %r9
cmpq %rsi, %rdx
je 0x296f6
movq (%r9,%rsi,8), %rdi
leaq 0x1(%rsi), %rax
incq %rdi
movq %rdi, (%rcx,%rsi,8)
movq %rax, %rsi
je 0x2967f
cmpq %rcx, %r9
setne %dl
cmpq %r15, %rax
setl %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x296f3
xorl %r8d, %r8d
movq (%r9,%rax,8), %rdx
movq %rdx, (%rcx,%rax,8)
incq %rax
cmpq %r15, %rax
jl 0x296b1
jmp 0x296f6
movq 0x40(%rsp), %rsi
cmpq %rcx, %rsi
sete %al
cmpq $0x2, %r15
setl %dl
orb %al, %dl
jne 0x296f3
movl $0x1, %eax
xorl %r8d, %r8d
movq (%rsi,%rax,8), %rdx
movq %rdx, (%rcx,%rax,8)
incq %rax
cmpq %rax, %r15
jne 0x296e1
jmp 0x296f6
xorl %r8d, %r8d
movq 0x38(%rsp), %rcx
movq (%rcx,%rbp,8), %r14
movq 0x10(%rsp), %rax
leaq (%rcx,%rax,8), %rdx
movq 0x28(%rsp), %rdi
movq %rdi, %rsi
movq %r15, %rcx
callq 0x1bf80
addq %r14, %rax
movq %r15, %rcx
shlq $0x6, %rcx
addq %r12, %rcx
addq %rax, (%rcx)
jae 0x29735
addq $0x1, 0x8(%rcx)
leaq 0x8(%rcx), %rcx
jb 0x2972a
leaq (%r15,%r15,8), %rax
leaq (%r12,%rax,8), %rdi
movq %rdi, %rsi
movq (%rsp), %r14
movq %r14, %rdx
movq %r15, %rcx
callq 0x1bfa0
shlq $0x4, %rbx
leaq (%r12,%rbx), %r10
addq (%r12,%rbx), %rax
movq %rax, (%r12,%rbx)
leaq (%r14,%r15,8), %rdx
movq (%rdx), %rsi
addq %rax, %rsi
movq %rsi, (%r12,%rbx)
cmpl $0x0, 0x64(%rsp)
je 0x297ea
cmpq %rax, %rsi
jae 0x29857
cmpq $0x2, %r15
movl $0x1, %r8d
movl $0x1, %esi
cmovgeq %r15, %rsi
movl $0x1, %edi
cmpq %rdi, %rsi
je 0x298b8
movq (%rdx,%rdi,8), %r9
leaq 0x1(%rdi), %rax
incq %r9
movq %r9, (%r10,%rdi,8)
movq %rax, %rdi
je 0x29795
cmpq %r10, %rdx
setne %sil
cmpq %r15, %rax
setl %dil
andb %sil, %dil
cmpb $0x1, %dil
movq 0x48(%rsp), %rcx
jne 0x29889
xorl %r8d, %r8d
movq (%rdx,%rax,8), %rsi
movq %rsi, (%r10,%rax,8)
incq %rax
cmpq %r15, %rax
jl 0x297d5
jmp 0x298bd
cmpq %rax, %rsi
movq 0x48(%rsp), %rcx
jae 0x2988e
cmpq $0x2, %rcx
movl $0x1, %edi
movl $0x1, %esi
cmovgeq %rcx, %rsi
cmpq %rdi, %rsi
je 0x298fc
movq (%rdx,%rdi,8), %r8
leaq 0x1(%rdi), %rax
incq %r8
movq %r8, (%r10,%rdi,8)
movq %rax, %rdi
je 0x2980a
cmpq %r10, %rdx
setne %sil
cmpq %rcx, %rax
setl %dil
andb %sil, %dil
cmpb $0x1, %dil
jne 0x298fc
movq (%rdx,%rax,8), %rsi
movq %rsi, (%r10,%rax,8)
incq %rax
cmpq %rcx, %rax
jl 0x29842
jmp 0x298fc
cmpq %r10, %rdx
sete %al
cmpq $0x2, %r15
setl %sil
orb %al, %sil
movq 0x48(%rsp), %rcx
jne 0x29889
movl $0x1, %eax
xorl %r8d, %r8d
movq (%rdx,%rax,8), %rsi
movq %rsi, (%r10,%rax,8)
incq %rax
cmpq %rax, %r15
jne 0x29877
jmp 0x298bd
xorl %r8d, %r8d
jmp 0x298bd
cmpq %r10, %rdx
sete %al
cmpq $0x2, %rcx
setl %sil
orb %al, %sil
jne 0x298fc
movl $0x1, %eax
movq (%rdx,%rax,8), %rsi
movq %rsi, (%r10,%rax,8)
incq %rax
cmpq %rax, %rcx
jne 0x298a6
jmp 0x298fc
movq 0x48(%rsp), %rcx
cmpq %r15, %rcx
jle 0x2990e
movq (%r14,%rbp,8), %rbx
imulq $0x58, %r15, %rdi
addq %r12, %rdi
movq 0x10(%rsp), %rax
leaq (%r14,%rax,8), %rdx
movq %rdi, %rsi
movq %r15, %rcx
callq 0x1bf80
addq %rbx, %rax
shlq $0x5, %rbp
addq %r12, %rbp
addq %rax, (%rbp)
jae 0x298fc
addq $0x1, 0x8(%rbp)
leaq 0x8(%rbp), %rbp
jb 0x298f1
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
imulq $0x58, %r15, %rax
addq %rax, %r12
movq 0x10(%rsp), %rax
leaq (%r14,%rax,8), %rdx
movq %r12, %rdi
movq %r12, %rsi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1bf80
nop