// File: /workspace/github_cpp_makefile_star2_O2/marxn[P]pupp/3rdparty/gmp/gen-fac.c
// Function: gen_consts
int
gen_consts (int numb, int nail, int limb)
{
  mpz_t x, mask, y, last;
  unsigned long a, b;
  unsigned long ofl, ofe;

  printf ("/* This file is automatically generated by gen-fac.c */\n\n");
  printf ("#if GMP_NUMB_BITS != %d\n", numb);
  printf ("Error , error this data is for %d GMP_NUMB_BITS only\n", numb);
  printf ("#endif\n");
#if 0
  printf ("#if GMP_LIMB_BITS != %d\n", limb);
  printf ("Error , error this data is for %d GMP_LIMB_BITS only\n", limb);
  printf ("#endif\n");
#endif

  printf
    ("/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1");
  mpz_init_set_ui (x, 1);
  mpz_init (last);
  for (b = 2;; b++)
    {
      mpz_mul_ui (x, x, b);	/* so b!=a       */
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  printf
    ("\n/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */\n");
  printf
    ("/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      mpz_swap (last, x);
      mpz_mul_ui (x, last, a);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  printf
    ("#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x");
  mpz_out_str (stdout, 16, last);
  printf (")\n");

  ofl = b - 1;
  printf
    ("#define ODD_FACTORIAL_TABLE_LIMIT (%lu)\n", ofl);
  mpz_init2 (mask, numb + 1);
  mpz_setbit (mask, numb);
  mpz_sub_ui (mask, mask, 1);
  printf
    ("\n/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x");
  mpz_and (x, x, mask);
  mpz_out_str (stdout, 16, x);
  mpz_init (y);
  mpz_bin_uiui (y, b, b/2);
  b++;
  for (;; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      if (a == b) {
	mpz_divexact_ui (y, y, a/2+1);
	mpz_mul_ui (y, y, a);
      } else
	mpz_mul_2exp (y, y, 1);
      if (mpz_sizeinbase (y, 2) > numb)
	break;
      mpz_mul_ui (x, x, a);
      mpz_and (x, x, mask);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  ofe = b - 1;
  printf
    ("#define ODD_FACTORIAL_EXTTABLE_LIMIT (%lu)\n", ofe);

  printf
    ("\n/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;; b+=2)
    {
      mpz_swap (last, x);
      mpz_mul_ui (x, last, b);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  printf
    ("#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x");
  mpz_out_str (stdout, 16, last);
  printf (")\n");

  printf
    ("#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (%lu)\n", b - 2);

  printf
    ("\n/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK");
  for (b = 2;b <= 8; b++)
    {
      mpz_root (x, mask, b);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  mpz_add_ui (mask, mask, 1);
  printf
    ("\n/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */\n");
  printf
    ("\n/* It begins with (2!/2)^-1=1 */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;b <= ofe - 2; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      mpz_mul_ui (x, x, a);
      mpz_invert (y, x, mask);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, y);
    }
  printf (")\n");

  ofe = (ofe / 16 + 1) * 16;

  printf
    ("\n/* This table contains 2n-popc(2n) for small n */\n");
  printf
    ("\n/* It begins with 2-1=1 (n=1) */\n");
  printf
    ("#define TABLE_2N_MINUS_POPC_2N 1");
  for (b = 4; b <= ofe; b += 2)
    {
      mpz_set_ui (x, b);
      printf (",%lu",b - mpz_popcount (x));
    }
  printf ("\n");
  printf
    ("#define TABLE_LIMIT_2N_MINUS_POPC_2N %lu\n", ofe + 1);


  ofl = (ofl + 1) / 2;
  printf
    ("#define ODD_CENTRAL_BINOMIAL_OFFSET (%lu)\n", ofl);
  printf
    ("\n/* This table contains binomial(2k,k)/2^t */\n");
  printf
    ("\n/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */\n");
  printf
    ("#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE ");
  for (b = ofl;; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      mpz_remove_twos (x);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      if (b != ofl)
	printf ("),");
      printf("CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  ofe = b - 1;
  printf
    ("#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (%lu)\n", ofe);

  printf
    ("\n/* This table contains the inverses of elements in the previous table. */\n");
  printf
    ("#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x");
  for (b = ofl; b <= ofe; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      mpz_remove_twos (x);
      mpz_invert (x, x, mask);
      mpz_out_str (stdout, 16, x);
      if (b != ofe)
	printf ("),CNST_LIMB(0x");
    }
  printf (")\n");

  printf
    ("\n/* This table contains the values t in the formula binomial(2k,k)/2^t */\n");
  printf
    ("#define CENTRAL_BINOMIAL_2FAC_TABLE ");
  for (b = ofl; b <= ofe; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      printf ("%d", mpz_remove_twos (x));
      if (b != ofe)
	printf (",");
    }
  printf ("\n");

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movl %edi, %r14d
leaq 0x2e7a(%rip), %rdi      # 0xa73d
callq 0x1060
leaq 0x2214(%rip), %rdi      # 0x9ae3
movl %r14d, %esi
xorl %eax, %eax
callq 0x1080
leaq 0x221c(%rip), %rdi      # 0x9afc
movl %r14d, %esi
xorl %eax, %eax
callq 0x1080
leaq 0x2e85(%rip), %rdi      # 0xa776
callq 0x1060
leaq 0x2e80(%rip), %rdi      # 0xa77d
callq 0x1060
leaq 0x2229(%rip), %rdi      # 0x9b32
xorl %eax, %eax
callq 0x1080
pushq $0x1
popq %r12
leaq -0x40(%rbp), %rbx
movl %r12d, (%rbx)
pushq $0x8
popq %r15
movq %r15, %rdi
callq *0x7770(%rip)           # 0xf098
movq %rax, 0x8(%rbx)
movq $0x1, (%rax)
movl %r12d, 0x4(%rbx)
movq %r15, %rdi
callq *0x7758(%rip)           # 0xf098
movq %rax, -0x60(%rbp)
movslq %r14d, %rax
movq %rax, -0x48(%rbp)
pushq $0x2
popq %r14
pushq $0x2
popq %r15
pushq $0x10
popq %r13
movq %rbx, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2ec3
movq %rbx, %rdi
movl %r15d, %esi
callq 0x5844
cmpq -0x48(%rbp), %rax
ja 0x799e
leaq 0x21f3(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
movq 0x764d(%rip), %rax      # 0xefd8
movq (%rax), %rdi
movl %r13d, %esi
movq %rbx, %rdx
callq 0x7096
incq %r14
jmp 0x7957
leaq 0x1f9e(%rip), %rdi      # 0x9943
callq 0x1060
leaq 0x2e16(%rip), %rdi      # 0xa7c7
callq 0x1060
leaq 0x2e4f(%rip), %rdi      # 0xa80c
callq 0x1060
leaq 0x21b6(%rip), %rdi      # 0x9b7f
xorl %eax, %eax
callq 0x1080
leaq -0x40(%rbp), %r14
movq 0x8(%r14), %rax
movq $0x1, (%rax)
movl $0x1, 0x4(%r14)
pushq $0x3
popq %rcx
leaq -0x70(%rbp), %r15
pushq $0x2
popq %rbx
xorl %eax, %eax
movq -0x60(%rbp), %rsi
movq %rcx, -0x58(%rbp)
movq %rcx, %rdx
shrq %rcx
testb $0x1, %dl
je 0x79fb
movl -0x40(%rbp), %r13d
movl -0x3c(%rbp), %ecx
movl %ecx, -0x60(%rbp)
movl %ecx, -0x6c(%rbp)
movl %eax, -0x3c(%rbp)
movl %r13d, -0x70(%rbp)
movl %r12d, -0x40(%rbp)
movq -0x38(%rbp), %r12
movq %r12, -0x68(%rbp)
movq %rsi, -0x38(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x2ec3
movq %r14, %rdi
movl %ebx, %esi
callq 0x5844
cmpq -0x48(%rbp), %rax
ja 0x7a7d
leaq 0x2124(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
movq 0x757e(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
movq %r14, %rdx
callq 0x7096
movq -0x58(%rbp), %rcx
incq %rcx
movq %r12, %rsi
movl %r13d, %r12d
movl -0x60(%rbp), %eax
jmp 0x79f7
leaq 0x1ebf(%rip), %rbx      # 0x9943
movq %rbx, %rdi
callq 0x1060
leaq 0x213d(%rip), %rdi      # 0x9bd0
xorl %eax, %eax
callq 0x1080
movq 0x7537(%rip), %r14      # 0xefd8
movq (%r14), %rdi
pushq $0x10
popq %rsi
leaq -0x70(%rbp), %rdx
callq 0x7096
movq %rbx, %rdi
callq 0x1060
movq -0x58(%rbp), %r15
leaq -0x1(%r15), %rsi
leaq 0x2136(%rip), %rdi      # 0x9bfd
xorl %eax, %eax
callq 0x1080
movq -0x48(%rbp), %r14
leal 0x1(%r14), %eax
movslq %eax, %rsi
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x219c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x496f
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rbx, %rsi
callq 0x2bd7
leaq 0x2d4b(%rip), %rdi      # 0xa850
callq 0x1060
leaq 0x2115(%rip), %rdi      # 0x9c26
xorl %eax, %eax
callq 0x1080
leaq -0x40(%rbp), %r14
movq %r14, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x62c5
movq 0x74a7(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
movq %r14, %rdx
callq 0x7096
leaq -0xa0(%rbp), %rbx
movq $0x1, (%rbx)
pushq $0x8
popq %rdi
callq *0x7542(%rip)           # 0xf098
movq %rax, 0x8(%rbx)
movq %r15, %rdx
shrq %rdx
movq %rbx, %rdi
movq %r15, %rsi
movq %rdx, -0x88(%rbp)
callq 0x5c66
movq %r15, %r14
movq %r12, -0x90(%rbp)
movq %r14, -0x50(%rbp)
incq %r14
movq %r14, %rax
movq %rax, %rbx
shrq %rax
testb $0x1, %bl
je 0x7b86
cmpq %r14, %rbx
leaq -0xa0(%rbp), %rdi
jne 0x7bc1
movq %r14, %rdx
shrq %rdx
incq %rdx
movq %rdi, %r15
movq %rdi, %rsi
callq 0x3ec5
movq %r15, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2ec3
jmp 0x7bcf
movq %rdi, %r15
movq %rdi, %rsi
pushq $0x1
popq %rdx
callq 0x304c
movq %r15, %rdi
pushq $0x2
popq %rsi
callq 0x5844
cmpq -0x48(%rbp), %rax
ja 0x7c30
leaq -0x40(%rbp), %r15
movq %r15, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x2ec3
movq %r15, %rdi
movq %r15, %rsi
leaq -0x80(%rbp), %rdx
callq 0x62c5
leaq 0x1f68(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
movq 0x73c2(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
movq %r15, %rdx
movq -0x90(%rbp), %r12
callq 0x7096
jmp 0x7b7c
leaq 0x1d0c(%rip), %rdi      # 0x9943
callq 0x1060
leaq 0x2018(%rip), %rdi      # 0x9c5b
movq -0x50(%rbp), %rsi
xorl %eax, %eax
callq 0x1080
leaq 0x2c3b(%rip), %rdi      # 0xa890
callq 0x1060
leaq 0x2026(%rip), %rdi      # 0x9c87
xorl %eax, %eax
callq 0x1080
leaq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq $0x1, (%rax)
pushq $0x1
popq %rcx
pushq $0x1
popq %r14
movl -0x60(%rbp), %r15d
movl %r13d, %edx
movl %r15d, -0x3c(%rbp)
movl -0x40(%rbp), %r13d
movl %edx, -0x40(%rbp)
movq %r12, -0x38(%rbp)
movq %rax, %r12
leaq 0x2(%r14), %rbx
movl %ecx, -0x60(%rbp)
movl %ecx, -0x6c(%rbp)
movl %r13d, -0x70(%rbp)
movq %rax, -0x68(%rbp)
leaq -0x40(%rbp), %r15
movq %r15, %rdi
leaq -0x70(%rbp), %rsi
movq %rbx, %rdx
callq 0x2ec3
movq %r15, %rdi
pushq $0x2
popq %rsi
callq 0x5844
cmpq -0x48(%rbp), %rax
ja 0x7cfd
leaq 0x1e9c(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
movq 0x72f6(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
leaq -0x40(%rbp), %rdx
callq 0x7096
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %rax
movq %rbx, %r14
jmp 0x7c7e
leaq 0x1c3f(%rip), %rbx      # 0x9943
movq %rbx, %rdi
callq 0x1060
leaq 0x1fad(%rip), %rdi      # 0x9cc0
xorl %eax, %eax
callq 0x1080
movq 0x72b7(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %r15
leaq -0x70(%rbp), %rdx
movl %r15d, %esi
callq 0x7096
movq %rbx, %rdi
callq 0x1060
leaq 0x1fb0(%rip), %rdi      # 0x9cf3
movq %r14, %rsi
movl %r15d, %r14d
xorl %eax, %eax
callq 0x1080
leaq 0x2b8c(%rip), %rdi      # 0xa8e3
callq 0x1060
leaq 0x1fbf(%rip), %rdi      # 0x9d22
xorl %eax, %eax
callq 0x1080
pushq $0x2
popq %rbx
leaq -0x40(%rbp), %r15
leaq -0x80(%rbp), %r12
leaq 0x1df4(%rip), %r13      # 0x9b70
cmpq $0x9, %rbx
je 0x7db4
movq %r15, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x599e
movq %r13, %rdi
xorl %eax, %eax
callq 0x1080
movq 0x7237(%rip), %rax      # 0xefd8
movq (%rax), %rdi
movl %r14d, %esi
movq %r15, %rdx
callq 0x7096
incq %rbx
jmp 0x7d7c
leaq 0x1b88(%rip), %rdi      # 0x9943
callq 0x1060
leaq -0x80(%rbp), %rdi
pushq $0x1
popq %rdx
movq %rdi, %rsi
callq 0x2a8e
leaq 0x2b61(%rip), %rdi      # 0xa937
callq 0x1060
leaq 0x2ba3(%rip), %rdi      # 0xa985
callq 0x1060
leaq 0x1f64(%rip), %rdi      # 0x9d52
xorl %eax, %eax
callq 0x1080
leaq -0x40(%rbp), %r14
movq 0x8(%r14), %rax
movq $0x1, (%rax)
movl $0x1, 0x4(%r14)
movq -0x50(%rbp), %rax
leaq -0x2(%rax), %r15
pushq $0x3
popq %r12
leaq -0xa0(%rbp), %rbx
pushq $0x10
popq %r13
cmpq %r15, %r12
ja 0x7e78
movq %r12, %rax
movq %rax, %rdx
shrq %rax
testb $0x1, %dl
je 0x7e2b
movq %r14, %rdi
movq %r14, %rsi
callq 0x2ec3
movq %rbx, %rdi
movq %r14, %rsi
leaq -0x80(%rbp), %rdx
callq 0x4aa7
leaq 0x1d19(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
movq 0x7173(%rip), %rax      # 0xefd8
movq (%rax), %rdi
movl %r13d, %esi
movq %rbx, %rdx
callq 0x7096
incq %r12
jmp 0x7e23
leaq 0x1ac4(%rip), %rdi      # 0x9943
callq 0x1060
movq -0x50(%rbp), %rax
andq $-0x10, %rax
movq %rax, -0x50(%rbp)
leaq 0x10(%rax), %r15
leaq 0x2b0c(%rip), %rdi      # 0xa9a7
callq 0x1060
leaq 0x2b33(%rip), %rdi      # 0xa9da
callq 0x1060
leaq 0x1edb(%rip), %rdi      # 0x9d8e
xorl %eax, %eax
callq 0x1080
pushq $0x4
popq %r12
leaq -0x40(%rbp), %rbx
leaq 0x1ee6(%rip), %r14      # 0x9daf
pushq $0x1
popq %r13
cmpq %r15, %r12
ja 0x7f06
testq %r12, %r12
je 0x7ee3
movq -0x38(%rbp), %rax
movq %r12, (%rax)
movl %r13d, %eax
jmp 0x7ee5
xorl %eax, %eax
movl %eax, -0x3c(%rbp)
movq %rbx, %rdi
callq 0x6886
movq %r12, %rsi
subq %rax, %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x1080
addq $0x2, %r12
jmp 0x7ecd
pushq $0xa
popq %rdi
callq 0x1040
movq -0x50(%rbp), %rsi
addq $0x11, %rsi
leaq 0x1e97(%rip), %rdi      # 0x9db4
xorl %eax, %eax
callq 0x1080
leaq 0x1eb3(%rip), %rdi      # 0x9dde
movq -0x88(%rbp), %r13
movq %r13, %rsi
xorl %eax, %eax
callq 0x1080
leaq 0x2ab9(%rip), %rdi      # 0xa9fc
callq 0x1060
leaq 0x2adb(%rip), %rdi      # 0xaa2a
callq 0x1060
leaq 0x1eae(%rip), %rdi      # 0x9e09
xorl %eax, %eax
callq 0x1080
movq -0x58(%rbp), %r14
andq $-0x2, %r14
leaq -0x40(%rbp), %r15
pushq $0x2
popq %r12
xorl %ebx, %ebx
movq %r15, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x5c66
movq %r15, %rdi
callq 0x787e
movq %r15, %rdi
movl %r12d, %esi
callq 0x5844
cmpq -0x48(%rbp), %rax
ja 0x7fdb
subq $0x1, %rbx
jb 0x7faf
leaq 0x1e8e(%rip), %rdi      # 0x9e36
xorl %eax, %eax
callq 0x1080
leaq 0x1c98(%rip), %rdi      # 0x9c4e
xorl %eax, %eax
callq 0x1080
movq 0x7014(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
movq %r15, %rdx
callq 0x7096
incq %r13
addq $0x2, %r14
jmp 0x7f74
leaq 0x1961(%rip), %rdi      # 0x9943
callq 0x1060
movq -0x58(%rbp), %r15
movq %r15, %rax
shrq %rax
notq %rbx
movq %rax, -0x48(%rbp)
leaq (%rbx,%rax), %r14
leaq 0x1e36(%rip), %rdi      # 0x9e39
movq %r14, %rsi
xorl %eax, %eax
callq 0x1080
leaq 0x2a4b(%rip), %rdi      # 0xaa5f
callq 0x1060
leaq 0x1e49(%rip), %rdi      # 0x9e69
xorl %eax, %eax
callq 0x1080
andq $-0x2, %r15
leaq -0x40(%rbp), %r12
xorl %r13d, %r13d
movq -0x48(%rbp), %rax
leaq (%rax,%r13), %rdx
cmpq %r14, %rdx
ja 0x8092
movq %r12, %rdi
movq %r15, %rsi
callq 0x5c66
movq %r12, %rdi
callq 0x787e
movq %r12, %rdi
movq %r12, %rsi
leaq -0x80(%rbp), %rdx
callq 0x4aa7
movq 0x6f70(%rip), %rax      # 0xefd8
movq (%rax), %rdi
pushq $0x10
popq %rsi
movq %r12, %rdx
callq 0x7096
cmpq %r13, %rbx
je 0x8089
leaq 0x1aee(%rip), %rdi      # 0x9b70
xorl %eax, %eax
callq 0x1080
addq $0x2, %r15
incq %r13
jmp 0x8032
leaq 0x18aa(%rip), %rdi      # 0x9943
callq 0x1060
leaq 0x2a05(%rip), %rdi      # 0xaaaa
callq 0x1060
leaq 0x1df9(%rip), %rdi      # 0x9eaa
xorl %eax, %eax
callq 0x1080
movq -0x58(%rbp), %rsi
andq $-0x2, %rsi
leaq -0x40(%rbp), %r13
movq -0x88(%rbp), %rdx
cmpq %r14, %rdx
ja 0x8113
movq %r13, %rdi
movq %rsi, %r12
movq %rdx, %r15
callq 0x5c66
movq %r13, %rdi
callq 0x787e
leaq 0x1de2(%rip), %rdi      # 0x9ecf
movl %eax, %esi
xorl %eax, %eax
callq 0x1080
subq $0x1, %rbx
jb 0x8104
pushq $0x2c
popq %rdi
callq 0x1040
movq %r15, %rdx
incq %rdx
movq %r12, %rsi
addq $0x2, %rsi
jmp 0x80cb
pushq $0xa
popq %rdi
callq 0x1040
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq