// File: /workspace/github_cpp_makefile_star2_O2/marxn[P]pupp/3rdparty/gmp/mpn/toom8_sqr.c
// Function: _gmpn_toom8_sqr
void
mpn_toom8_sqr  (mp_ptr pp, mp_srcptr ap, mp_size_t an, mp_ptr scratch)
{
  mp_size_t n, s;

  /***************************** decomposition *******************************/

  ASSERT ( an >= 40 );

  n = 1 + ((an - 1)>>3);

  s = an - 7 * n;

  ASSERT (0 < s && s <= n);
  ASSERT ( s + s > 3 );

#define   r6    (pp + 3 * n)			/* 3n+1 */
#define   r4    (pp + 7 * n)			/* 3n+1 */
#define   r2    (pp +11 * n)			/* 3n+1 */
#define   r0    (pp +15 * n)			/* s+t <= 2*n */
#define   r7    (scratch)			/* 3n+1 */
#define   r5    (scratch + 3 * n + 1)		/* 3n+1 */
#define   r3    (scratch + 6 * n + 2)		/* 3n+1 */
#define   r1    (scratch + 9 * n + 3)		/* 3n+1 */
#define   v0    (pp +11 * n)			/* n+1 */
#define   v2    (pp +13 * n+2)			/* n+1 */
#define   wse   (scratch +12 * n + 4)		/* 3n+1 */

  /* Alloc also 3n+1 limbs for ws... toom_interpolate_16pts may
     need all of them, when DO_mpn_sublsh_n usea a scratch  */
/*   if (scratch == NULL) */
/*     scratch = TMP_SALLOC_LIMBS (30 * n + 6); */

  /********************** evaluation and recursive calls *********************/
  /* $\pm1/8$ */
  mpn_toom_eval_pm2rexp (v2, v0, 7, ap, n, s, 3, pp);
  /* A(-1/8)*B(-1/8)*8^. */ /* A(+1/8)*B(+1/8)*8^. */
  TOOM8_SQR_REC(pp, v0, 2, r7, v2, n + 1, wse);
  mpn_toom_couple_handling (r7, 2 * n + 1 + BIT_CORRECTION, pp, 0, n, 3, 0);

  /* $\pm1/4$ */
  mpn_toom_eval_pm2rexp (v2, v0, 7, ap, n, s, 2, pp);
  /* A(-1/4)*B(-1/4)*4^. */ /* A(+1/4)*B(+1/4)*4^. */
  TOOM8_SQR_REC(pp, v0, 2, r5, v2, n + 1, wse);
  mpn_toom_couple_handling (r5, 2 * n + 1, pp, 0, n, 2, 0);

  /* $\pm2$ */
  mpn_toom_eval_pm2 (v2, v0, 7, ap, n, s, pp);
  /* A(-2)*B(-2) */ /* A(+2)*B(+2) */
  TOOM8_SQR_REC(pp, v0, 2, r3, v2, n + 1, wse);
  mpn_toom_couple_handling (r3, 2 * n + 1, pp, 0, n, 1, 2);

  /* $\pm8$ */
  mpn_toom_eval_pm2exp (v2, v0, 7, ap, n, s, 3, pp);
  /* A(-8)*B(-8) */ /* A(+8)*B(+8) */
  TOOM8_SQR_REC(pp, v0, 2, r1, v2, n + 1, wse);
  mpn_toom_couple_handling (r1, 2 * n + 1 + BIT_CORRECTION, pp, 0, n, 3, 6);

  /* $\pm1/2$ */
  mpn_toom_eval_pm2rexp (v2, v0, 7, ap, n, s, 1, pp);
  /* A(-1/2)*B(-1/2)*2^. */ /* A(+1/2)*B(+1/2)*2^. */
  TOOM8_SQR_REC(pp, v0, 2, r6, v2, n + 1, wse);
  mpn_toom_couple_handling (r6, 2 * n + 1, pp, 0, n, 1, 0);

  /* $\pm1$ */
  mpn_toom_eval_pm1 (v2, v0, 7, ap, n, s,    pp);
  /* A(-1)*B(-1) */ /* A(1)*B(1) */
  TOOM8_SQR_REC(pp, v0, 2, r4, v2, n + 1, wse);
  mpn_toom_couple_handling (r4, 2 * n + 1, pp, 0, n, 0, 0);

  /* $\pm4$ */
  mpn_toom_eval_pm2exp (v2, v0, 7, ap, n, s, 2, pp);
  /* A(-4)*B(-4) */ /* A(+4)*B(+4) */
  TOOM8_SQR_REC(pp, v0, 2, r2, v2, n + 1, wse);
  mpn_toom_couple_handling (r2, 2 * n + 1, pp, 0, n, 2, 4);

#undef v0
#undef v2

  /* A(0)*B(0) */
  TOOM8_SQR_REC(pp, ap, 0, pp, ap, n, wse);

  mpn_toom_interpolate_16pts (pp, r1, r3, r5, r7, n, 2 * s, 0, wse);

#undef r0
#undef r1
#undef r2
#undef r3
#undef r4
#undef r5
#undef r6
#undef wse

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rcx, %r14
movq %rdx, %r9
movq %rsi, %rcx
movq %rdi, %r12
leaq -0x1(%rdx), %r13
sarq $0x3, %r13
leaq 0x1(%r13), %r8
imulq $0x7, %r8, %rax
movq %rax, 0x70(%rsp)
subq %rax, %r9
imulq $0x68, %r13, %rax
leaq (%rax,%rdi), %rbx
addq $0x78, %rbx
imulq $0x58, %r8, %rbp
addq %rdi, %rbp
movq %rdi, 0x8(%rsp)
movl $0x3, (%rsp)
pushq $0x7
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
movq %rcx, 0x68(%rsp)
movq %r8, 0x40(%rsp)
movq %r9, 0x78(%rsp)
callq 0x22c90
leaq 0x2(%r13), %r15
cmpq $0x1f, %r13
movq %rbx, 0x28(%rsp)
movq %r15, 0x20(%rsp)
movq %r12, 0x30(%rsp)
movq %rbp, 0x60(%rsp)
movq %r14, 0x48(%rsp)
jle 0x21149
movq %rbx, %rbp
movq %r14, %rbx
cmpq $0x7e, %r13
jbe 0x21172
cmpq $0x20c, %r13            # imm = 0x20C
jbe 0x211c4
imulq $0x60, 0x40(%rsp), %rax
addq %rbx, %rax
addq $0x20, %rax
cmpq $0x22f, %r13            # imm = 0x22F
movq %rbx, %r14
movq %rax, 0x58(%rsp)
jbe 0x21213
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq 0x60(%rsp), %rbx
movq %rbx, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x21038
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rbp
movq %r15, %rdx
movq %rsi, %r15
movq 0x58(%rsp), %rcx
callq 0x21038
jmp 0x2124c
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x19c70
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x19c70
movq 0x40(%rsp), %r14
movq %rbx, %r15
jmp 0x21251
movq 0x40(%rsp), %r14
imulq $0x60, %r14, %rax
leaq (%rbx,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x58(%rsp)
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq 0x60(%rsp), %rbp
movq %rbp, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x21e84
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq 0x58(%rsp), %rcx
movq 0x28(%rsp), %r15
callq 0x21e84
jmp 0x21251
movq 0x40(%rsp), %r14
imulq $0x60, %r14, %rax
leaq (%rbx,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x58(%rsp)
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq 0x60(%rsp), %rbp
movq %rbp, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x220b0
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq 0x58(%rsp), %rcx
movq 0x28(%rsp), %r15
callq 0x220b0
jmp 0x21251
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq 0x60(%rsp), %rbx
movq %rbx, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x223d0
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rbp
movq %r15, %rdx
movq %rsi, %r15
movq 0x58(%rsp), %rcx
callq 0x223d0
movq 0x40(%rsp), %r14
leaq 0x1(,%r14,2), %rsi
andl $0x0, (%rsp)
pushq $0x3
popq %r9
movq 0x48(%rsp), %rbx
movq %rbx, %rdi
movq %rsi, 0x58(%rsp)
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
movq %r12, 0x8(%rsp)
movl $0x2, (%rsp)
pushq $0x7
popq %rdx
movq %r15, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x22c90
cmpq $0x1f, %r13
movq %rbx, %rdx
jle 0x21322
cmpq $0x7e, %r13
jbe 0x2135f
movq 0x40(%rsp), %r14
imulq $0x18, %r14, %rax
leaq (%rdx,%rax), %rbx
addq $0x8, %rbx
cmpq $0x20c, %r13            # imm = 0x20C
movq 0x30(%rsp), %r12
jbe 0x213b8
imulq $0x60, %r14, %rax
leaq (%rdx,%rax), %r14
addq $0x20, %r14
movq %r12, %rdi
movq %rbp, %rsi
cmpq $0x22f, %r13            # imm = 0x22F
jbe 0x21408
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %r14, %rcx
callq 0x21038
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq %rsi, %r15
movq %r14, %rcx
callq 0x21038
jmp 0x2142e
movq %r12, %rdi
movq %rbp, %rsi
movq %rdx, %rbx
movq %r15, %rbp
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x19c70
imulq $0x18, %r14, %rax
leaq (%rbx,%rax), %rdi
addq $0x8, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %rbp, %r15
movq 0x60(%rsp), %rbp
callq 0x19c70
jmp 0x21438
movq 0x40(%rsp), %r14
imulq $0x60, %r14, %rax
leaq (%rdx,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x50(%rsp)
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movq %rdx, %rbx
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x21e84
imulq $0x18, %r14, %rax
leaq (%rbx,%rax), %rdi
addq $0x8, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq 0x50(%rsp), %rcx
movq 0x28(%rsp), %r15
callq 0x21e84
jmp 0x21438
imulq $0x60, %r14, %rax
leaq (%rdx,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x88(%rsp)
movq %rbx, 0x50(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
movq %rdx, %rbx
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x220b0
movq 0x50(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq 0x88(%rsp), %rcx
movq 0x28(%rsp), %r15
callq 0x220b0
jmp 0x21438
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %r14, %rcx
callq 0x223d0
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq %rsi, %r15
movq %r14, %rcx
callq 0x223d0
movq 0x48(%rsp), %rbx
movq 0x40(%rsp), %r14
leaq (%r14,%r14,2), %rax
movq %rax, 0x50(%rsp)
leaq (%rbx,%rax,8), %rdi
addq $0x8, %rdi
andl $0x0, (%rsp)
pushq $0x2
popq %r9
movq %rdi, 0x88(%rsp)
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
movq %r12, (%rsp)
pushq $0x7
popq %rdx
movq %r15, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x22924
cmpq $0x1f, %r13
movq %r13, 0x90(%rsp)
movq %rbx, %rax
movq %r15, %rbx
movq %rax, %r15
jle 0x21528
cmpq $0x7e, %r13
jbe 0x2155a
movq %r13, %rdx
movq 0x60(%rsp), %rbp
movq 0x40(%rsp), %r14
imulq $0x30, %r14, %r13
leaq (%r15,%r13), %rbx
addq $0x10, %rbx
cmpq $0x20c, %rdx            # imm = 0x20C
movq 0x30(%rsp), %r12
jbe 0x215b3
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
cmpq $0x22f, %rdx            # imm = 0x22F
movq %rcx, 0x38(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
jbe 0x21601
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x21038
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq 0x38(%rsp), %rcx
callq 0x21038
jmp 0x21626
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x19c70
imulq $0x30, %r14, %rax
leaq (%r15,%rax), %rdi
addq $0x10, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %r13
callq 0x19c70
jmp 0x2162b
movq 0x40(%rsp), %r14
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x38(%rsp)
movq 0x30(%rsp), %r12
movq %r12, %rdi
movq 0x60(%rsp), %rbp
movq %rbp, %rsi
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x21e84
imulq $0x30, %r14, %rax
leaq (%r15,%rax), %rdi
addq $0x10, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %r13
movq 0x38(%rsp), %rcx
callq 0x21e84
jmp 0x2162b
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x80(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
movq %r13, 0x38(%rsp)
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x220b0
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
movq 0x38(%rsp), %r13
movq 0x80(%rsp), %rcx
callq 0x220b0
jmp 0x2162b
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x223d0
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq 0x38(%rsp), %rcx
callq 0x223d0
movq 0x48(%rsp), %r15
leaq (%r15,%r13), %rdi
addq $0x10, %rdi
movl $0x2, (%rsp)
pushq $0x1
popq %r9
movq %rdi, 0x40(%rsp)
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
movq %r12, 0x8(%rsp)
movl $0x3, (%rsp)
pushq $0x7
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x22abc
movq 0x90(%rsp), %rcx
cmpq $0x1f, %rcx
jle 0x216fd
cmpq $0x7e, %rcx
jbe 0x2172f
imulq $0x48, %r14, %r13
leaq (%r15,%r13), %rbx
addq $0x18, %rbx
imulq $0x60, %r14, %rax
cmpq $0x20c, %rcx            # imm = 0x20C
jbe 0x21779
addq %r15, %rax
addq $0x20, %rax
cmpq $0x22f, %rcx            # imm = 0x22F
movq %rax, 0x30(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
jbe 0x217bd
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x21038
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq 0x30(%rsp), %rcx
callq 0x21038
jmp 0x217e5
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x19c70
imulq $0x48, %r14, %rax
leaq (%r15,%rax), %rdi
addq $0x18, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %r13
callq 0x19c70
jmp 0x217ea
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x30(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x21e84
imulq $0x48, %r14, %rax
leaq (%r15,%rax), %rdi
addq $0x18, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %r13
movq 0x30(%rsp), %rcx
callq 0x21e84
jmp 0x217ea
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
movq %rcx, 0x38(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
movq %r13, 0x30(%rsp)
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x220b0
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
movq 0x30(%rsp), %r13
movq 0x38(%rsp), %rcx
callq 0x220b0
jmp 0x217ea
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x223d0
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
movq 0x30(%rsp), %rcx
callq 0x223d0
movq 0x48(%rsp), %r15
leaq (%r15,%r13), %rdi
addq $0x18, %rdi
movl $0x6, (%rsp)
pushq $0x3
popq %r9
movq %rdi, 0x30(%rsp)
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
movq %r12, 0x8(%rsp)
movl $0x1, (%rsp)
pushq $0x7
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x22c90
movq 0x90(%rsp), %rcx
cmpq $0x1f, %rcx
jle 0x218c7
cmpq $0x7e, %rcx
movq 0x20(%rsp), %r13
jbe 0x218f8
movq %rcx, %rsi
movq 0x50(%rsp), %r13
leaq (%r12,%r13,8), %rdx
cmpq $0x20c, %rcx            # imm = 0x20C
movq %rdx, 0x38(%rsp)
jbe 0x21935
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rcx
addq $0x20, %rcx
cmpq $0x22f, %rsi            # imm = 0x22F
movq %rcx, 0x80(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
jbe 0x21978
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x21038
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq 0x80(%rsp), %rcx
callq 0x21038
jmp 0x2199d
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %rbp
movq %rbp, %rdx
callq 0x19c70
movq 0x50(%rsp), %r13
leaq (%r12,%r13,8), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
movq 0x60(%rsp), %rbp
callq 0x19c70
jmp 0x219a2
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x21e84
movq %r13, %rdx
movq 0x50(%rsp), %r13
leaq (%r12,%r13,8), %rdi
movq 0x28(%rsp), %rsi
movq %rbx, %rcx
movq 0x28(%rsp), %rbx
callq 0x21e84
jmp 0x219a2
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %rbp
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x220b0
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq %rbp, %rdx
movq 0x60(%rsp), %rbp
movq %rbx, %rcx
movq 0x28(%rsp), %rbx
callq 0x220b0
jmp 0x219a2
movq 0x20(%rsp), %r13
movq %r13, %rdx
callq 0x223d0
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq 0x80(%rsp), %rcx
callq 0x223d0
movq 0x50(%rsp), %r13
leaq (%r12,%r13,8), %rdi
andl $0x0, (%rsp)
pushq $0x1
popq %r9
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
movq %r12, (%rsp)
pushq $0x7
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x227d0
movq 0x90(%rsp), %r13
cmpq $0x1f, %r13
jle 0x21a64
cmpq $0x7e, %r13
jbe 0x21a95
movq 0x70(%rsp), %r15
leaq (%r12,%r15,8), %rdx
cmpq $0x20c, %r13            # imm = 0x20C
movq %rdx, 0x50(%rsp)
jbe 0x21adc
imulq $0x60, %r14, %rax
movq 0x48(%rsp), %rcx
addq %rcx, %rax
addq $0x20, %rax
cmpq $0x22f, %r13            # imm = 0x22F
movq %rax, 0x38(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
jbe 0x21b24
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x21038
movq 0x50(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq 0x38(%rsp), %rcx
callq 0x21038
jmp 0x21b49
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %rbp
movq %rbp, %rdx
callq 0x19c70
movq 0x70(%rsp), %r15
leaq (%r12,%r15,8), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
movq 0x60(%rsp), %rbp
callq 0x19c70
jmp 0x21b4e
imulq $0x60, %r14, %rax
leaq (%r15,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %rbp
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x21e84
movq 0x70(%rsp), %r15
leaq (%r12,%r15,8), %rdi
movq 0x28(%rsp), %rsi
movq %rbp, %rdx
movq 0x60(%rsp), %rbp
movq %rbx, %rcx
movq 0x28(%rsp), %rbx
callq 0x21e84
jmp 0x21b4e
imulq $0x60, %r14, %rax
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %rbp
movq %rbp, %rdx
movq %rbx, %rcx
callq 0x220b0
movq 0x50(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq %rbp, %rdx
movq 0x60(%rsp), %rbp
movq %rbx, %rcx
movq 0x28(%rsp), %rbx
callq 0x220b0
jmp 0x21b4e
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x223d0
movq 0x50(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq 0x38(%rsp), %rcx
callq 0x223d0
movq 0x70(%rsp), %r15
leaq (%r12,%r15,8), %rdi
andl $0x0, (%rsp)
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x21dbc
movq %r12, 0x8(%rsp)
movl $0x2, (%rsp)
pushq $0x7
popq %rdx
movq %rbx, %rdi
movq %rbp, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x22abc
cmpq $0x1f, %r13
jle 0x21bfb
imulq $0x60, %r14, %rax
cmpq $0x7e, %r13
jbe 0x21c21
cmpq $0x20c, %r13            # imm = 0x20C
jbe 0x21c59
movq 0x48(%rsp), %rcx
addq %rcx, %rax
addq $0x20, %rax
cmpq $0x22f, %r13            # imm = 0x22F
movq %rax, 0x70(%rsp)
movq %r12, %rdi
movq %rbp, %rsi
jbe 0x21c91
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x21038
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq 0x70(%rsp), %rcx
callq 0x21038
jmp 0x21cb4
movq %r12, %rdi
movq %rbp, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rdx
callq 0x19c70
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x19c70
jmp 0x21cb4
movq 0x20(%rsp), %r15
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x21e84
movq %rbp, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x21e84
jmp 0x21cb4
movq 0x20(%rsp), %r15
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax), %rbx
addq $0x20, %rbx
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x220b0
movq %rbp, %rdi
movq 0x28(%rsp), %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x220b0
jmp 0x21cb4
movq 0x20(%rsp), %r15
movq %r15, %rdx
movq %rax, %rcx
callq 0x223d0
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq 0x70(%rsp), %rcx
callq 0x223d0
movl $0x4, (%rsp)
pushq $0x2
popq %r9
movq %rbp, %rdi
movq 0x58(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movq %r14, %r8
callq 0x21dbc
cmpq $0x20, %r13
jle 0x21d15
cmpq $0x7f, %r13
movq 0x48(%rsp), %r15
jbe 0x21d30
imulq $0x60, %r14, %rbx
leaq (%r15,%rbx), %rcx
addq $0x20, %rcx
movq %r12, %rdi
cmpq $0x20d, %r13            # imm = 0x20D
jbe 0x21d4e
cmpq $0x230, %r13            # imm = 0x230
jbe 0x21d5d
movq 0x68(%rsp), %rsi
movq %r14, %rdx
callq 0x21038
jmp 0x21d6a
movq %r12, %rdi
movq 0x68(%rsp), %rsi
movq %r14, %rdx
callq 0x19c70
imulq $0x60, %r14, %rbx
movq 0x48(%rsp), %r15
jmp 0x21d6a
imulq $0x60, %r14, %rbx
leaq (%r15,%rbx), %rcx
addq $0x20, %rcx
movq %r12, %rdi
movq 0x68(%rsp), %rsi
movq %r14, %rdx
callq 0x21e84
jmp 0x21d6a
movq 0x68(%rsp), %rsi
movq %r14, %rdx
callq 0x220b0
jmp 0x21d6a
movq 0x68(%rsp), %rsi
movq %r14, %rdx
callq 0x223d0
movq 0x78(%rsp), %rcx
addq %rcx, %rcx
leaq (%r15,%rbx), %rax
addq $0x20, %rax
andl $0x0, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq %rcx, (%rsp)
movq %r12, %rdi
movq 0x30(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq 0x88(%rsp), %rcx
movq %r15, %r8
movq %r14, %r9
callq 0x24450
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop