// File: /workspace/github_c_makefile_star2_O3/theck01[P]offbrand_lib/src/tests/obint_test.c
// Function: main
int main (){

  obint *a, *b, *c;
  obstring *str1, *str2;

  /* test machine integer creation and value methods */
  a = obint_new(1024);
  assert(obint_value(a) == 1024);
  b = obint_new(9581085);
  assert(obint_value(b) == 9581085);
  c = obint_new(-999);
  assert(obint_value(c) == -999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test string integer creation and value methods */
  str1 = obstring_new("12345");
  a = obint_from_string(str1);
  assert(obint_value(a) == 12345);
  str2 = obint_to_string(a);
  assert(ob_compare((obj *)str1, (obj *)str2) == OB_EQUAL_TO);

  ob_release((obj *)a);
  ob_release((obj *)str1);
  ob_release((obj *)str2);

  str1 = obstring_new("-012345");
  a = obint_from_string(str1);
  ob_release((obj *)str1);
  assert(obint_value(a) == -12345);
  str1 = obstring_new("-12345");
  str2 = obint_to_string(a);
  assert(ob_compare((obj *)str1, (obj *)str2) == OB_EQUAL_TO);

  ob_release((obj *)a);
  ob_release((obj *)str1);
  ob_release((obj *)str2);

  /* test copy method */
  a = obint_new(918394);
  b = obint_copy(a);
  assert(ob_compare((obj *)a, (obj *)b) == OB_EQUAL_TO);
  assert(a != b);
  assert(a->digits != b->digits);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer zero and negative methods */
  a = obint_new(1948);
  b = obint_new(-1);
  str1 = obstring_new("-0");
  c = obint_from_string(str1);
  ob_release((obj *)str1);

  assert(!obint_is_zero(a));
  assert(!obint_is_zero(b));
  assert(obint_is_zero(c));

  assert(!obint_is_negative(a));
  assert(obint_is_negative(b));
  assert(!obint_is_negative(c));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer addition */
  a = obint_new(999);
  b = obint_add_primitive(a, 1111);
  assert(obint_value(b) == 2110);
  c = obint_add(a, b);
  assert(obint_value(c) == 2110 + 999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-999);
  b = obint_add_primitive(a, 1);
  assert(obint_value(b) == -998);
  ob_release((obj *)b);
  b = obint_add_primitive(a, -1);
  assert(obint_value(b) == -1000);
  ob_release((obj *)b);
  b = obint_new(1000);
  c = obint_add(a, b);
  assert(obint_value(c) == 1);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer subtraction */
  a = obint_new(999);
  b = obint_subtract_primitive(a, 1111);
  assert(obint_value(b) == -112);
  c = obint_subtract(a, b);
  assert(obint_value(c) == 999 + 112);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-999);
  b = obint_subtract_primitive(a, 1);
  assert(obint_value(b) == -1000);
  ob_release((obj *)b);
  b = obint_subtract_primitive(a, -1);
  assert(obint_value(b) == -998);
  ob_release((obj *)b);
  b = obint_new(1000);
  c = obint_subtract(a, b);
  assert(obint_value(c) == -1999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer multiplication (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_multiply_primitive(a, -999);
  assert(obint_value(b) == 999*-999);
  c = obint_multiply(a, b);
  assert(obint_value(c) == 999*999*-999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-1928491);
  b = obint_multiply_primitive(a, -58);
  assert(obint_value(b) == -1928491*-58);
  ob_release((obj *)b);
  b = obint_new(2);
  c = obint_multiply(a, b);
  assert(obint_value(c) == -1928491*2);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(29458);
  b = obint_multiply_primitive(a, 0);
  assert(obint_is_zero(b) != 0);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer division (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_divide_primitive(a, -999);
  assert(obint_value(b) == -1);
  c = obint_divide_primitive(a, 33);
  assert(obint_value(c) == 999/33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_divide_primitive(a, -2848);
  assert(obint_value(b) == 1940248/(-2848));
  c = obint_divide(a, b);
  assert(obint_value(c) == 1940248/(1940248/(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer modulus (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_mod_primitive(a, -999);
  assert(obint_value(b) == 999%(-999));
  c = obint_mod_primitive(a, 33);
  assert(obint_value(c) == 999%33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_mod_primitive(a, -2848);
  assert(obint_value(b) == 1940248%(-2848));
  c = obint_mod(a, b);
  assert(obint_value(c) == 1940248%(1940248%(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* set digit limit for integer arithmetic low, for test purposes */
  obint_set_max_digits(2);

  /* test integer multiplication (size over digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_multiply_primitive(a, -999);
  assert(obint_value(b) == 999*-999);
  c = obint_multiply(a, b);
  assert(obint_value(c) == 999*999*-999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-1928491);
  b = obint_multiply_primitive(a, -58);
  assert(obint_value(b) == -1928491*-58);
  ob_release((obj *)b);
  b = obint_new(2);
  c = obint_multiply(a, b);
  assert(obint_value(c) == -1928491*2);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(29458);
  b = obint_multiply_primitive(a, 0);
  assert(obint_is_zero(b) != 0);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer division (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_divide_primitive(a, -999);
  assert(obint_value(b) == -1);
  c = obint_divide_primitive(a, 33);
  assert(obint_value(c) == 999/33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_divide_primitive(a, -2848);
  assert(obint_value(b) == 1940248/(-2848));
  c = obint_divide(a, b);
  assert(obint_value(c) == 1940248/(1940248/(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer modulus (size over digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_mod_primitive(a, -999);
  assert(obint_value(b) == 999%(-999));
  c = obint_mod_primitive(a, 33);
  assert(obint_value(c) == 999%33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_mod_primitive(a, -2848);
  assert(obint_value(b) == 1940248%(-2848));
  c = obint_mod(a, b);
  assert(obint_value(c) == 1940248%(1940248%(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  printf("obint: TESTS PASSED\n");
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movl $0x400, %edi            # imm = 0x400
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
callq 0x25ed
cmpq $0x400, %rax            # imm = 0x400
jne 0x1e52
movl $0x92321d, %edi         # imm = 0x92321D
callq 0x24a0
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x92321d, %rax         # imm = 0x92321D
jne 0x1e71
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x24a0
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3e7, %rax           # imm = 0xFC19
jne 0x1e90
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
leaq 0x4c18(%rip), %rdi      # 0x6080
callq 0x3be4
movq %rax, %rbx
movq %rax, %rdi
callq 0x2670
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x3039, %rax           # imm = 0x3039
jne 0x1eaf
movq %r14, %rdi
callq 0x27cb
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5207
testb %al, %al
jne 0x1ece
movq %r14, %rdi
callq 0x528a
movq %rbx, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
leaq 0x4bee(%rip), %rdi      # 0x60ba
callq 0x3be4
movq %rax, %r14
movq %rax, %rdi
callq 0x2670
movq %rax, %rbx
movq %r14, %rdi
callq 0x528a
movq %rbx, %rdi
callq 0x25ed
cmpq $-0x3039, %rax          # imm = 0xCFC7
jne 0x1eed
leaq 0x4bd2(%rip), %rdi      # 0x60d4
callq 0x3be4
movq %rax, %r14
movq %rbx, %rdi
callq 0x27cb
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x5207
testb %al, %al
jne 0x1f0c
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0xe037a, %edi          # imm = 0xE037A
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
callq 0x2886
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5207
testb %al, %al
jne 0x1f2b
cmpq %r14, %rbx
je 0x1f4a
movq 0x10(%rbx), %rax
cmpq 0x10(%r14), %rax
je 0x1f69
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movl $0x79c, %edi            # imm = 0x79C
callq 0x24a0
movq %rax, %rbx
movq $-0x1, %rdi
callq 0x24a0
movq %rax, %r14
leaq 0x4b72(%rip), %rdi      # 0x6127
callq 0x3be4
movq %rax, %r12
movq %rax, %rdi
callq 0x2670
movq %rax, %r15
movq %r12, %rdi
callq 0x528a
movq %rbx, %rdi
callq 0x2779
testb %al, %al
jne 0x1f88
movq %r14, %rdi
callq 0x2779
testb %al, %al
jne 0x1fa7
movq %r15, %rdi
callq 0x2779
testb %al, %al
je 0x1fc6
movq %rbx, %rdi
callq 0x2903
testb %al, %al
jne 0x1fe5
movq %r14, %rdi
callq 0x2903
testb %al, %al
je 0x2004
movq %r15, %rdi
callq 0x2903
testb %al, %al
jne 0x2023
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movl $0x457, %esi            # imm = 0x457
movq %rax, %rdi
callq 0x2cb4
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x83e, %rax            # imm = 0x83E
jne 0x2042
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2930
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0xc25, %rax            # imm = 0xC25
jne 0x2061
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x24a0
movq %rax, %rbx
movl $0x1, %esi
movq %rax, %rdi
callq 0x2cb4
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3e6, %rax           # imm = 0xFC1A
jne 0x2080
movq %r14, %rdi
callq 0x528a
movq %rbx, %rdi
movq $-0x1, %rsi
callq 0x2cb4
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3e8, %rax           # imm = 0xFC18
jne 0x209f
movq %r14, %rdi
callq 0x528a
movl $0x3e8, %edi            # imm = 0x3E8
callq 0x24a0
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2930
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x1, %rax
jne 0x20be
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movl $0x457, %esi            # imm = 0x457
movq %rax, %rdi
callq 0x2dda
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x70, %rax
jne 0x20dd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2d0b
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x457, %rax            # imm = 0x457
jne 0x20fc
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x24a0
movq %rax, %rbx
movl $0x1, %esi
movq %rax, %rdi
callq 0x2dda
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3e8, %rax           # imm = 0xFC18
jne 0x211b
movq %r14, %rdi
callq 0x528a
movq %rbx, %rdi
movq $-0x1, %rsi
callq 0x2dda
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3e6, %rax           # imm = 0xFC1A
jne 0x213a
movq %r14, %rdi
callq 0x528a
movl $0x3e8, %edi            # imm = 0x3E8
callq 0x24a0
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2d0b
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x7cf, %rax           # imm = 0xF831
jne 0x2159
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0xf3a71, %rax         # imm = 0xFFF0C58F
jne 0x2178
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e31
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3b6d0ef7, %rax      # imm = 0xC492F109
jne 0x2197
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movq $-0x1d6d2b, %rdi        # imm = 0xFFE292D5
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3a, %rsi
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x6aabbbe, %rax        # imm = 0x6AABBBE
jne 0x21b6
movq %r14, %rdi
callq 0x528a
movl $0x2, %edi
callq 0x24a0
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2e31
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3ada56, %rax        # imm = 0xFFC525AA
jne 0x21d5
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x7312, %edi           # imm = 0x7312
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x2779
testb %al, %al
je 0x21f4
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x3609
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x1, %rax
jne 0x2213
movl $0x21, %esi
movq %rbx, %rdi
callq 0x3609
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x1e, %rax
jne 0x2232
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x3609
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x2a9, %rax           # imm = 0xFD57
jne 0x2251
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31c3
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0xb21, %rax           # imm = 0xF4DF
jne 0x2270
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x375f
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
testq %rax, %rax
jne 0x228f
movl $0x21, %esi
movq %rbx, %rdi
callq 0x375f
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x9, %rax
jne 0x22ae
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x375f
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x2f8, %rax            # imm = 0x2F8
jne 0x22cd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3684
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x2d8, %rax            # imm = 0x2D8
jne 0x22ec
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x2, %edi
callq 0x3bd4
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0xf3a71, %rax         # imm = 0xFFF0C58F
jne 0x230b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e31
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3b6d0ef7, %rax      # imm = 0xC492F109
jne 0x232a
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movq $-0x1d6d2b, %rdi        # imm = 0xFFE292D5
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3a, %rsi
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x6aabbbe, %rax        # imm = 0x6AABBBE
jne 0x2349
movq %r14, %rdi
callq 0x528a
movl $0x2, %edi
callq 0x24a0
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2e31
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0x3ada56, %rax        # imm = 0xFFC525AA
jne 0x2368
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x7312, %edi           # imm = 0x7312
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x316c
movq %rax, %r14
movq %rax, %rdi
callq 0x2779
testb %al, %al
je 0x2387
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x3609
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x1, %rax
jne 0x23a6
movl $0x21, %esi
movq %rbx, %rdi
callq 0x3609
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x1e, %rax
jne 0x23c5
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x3609
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $-0x2a9, %rax           # imm = 0xFD57
jne 0x23e4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31c3
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $-0xb21, %rax           # imm = 0xF4DF
jne 0x2403
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x375f
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
testq %rax, %rax
jne 0x2422
movl $0x21, %esi
movq %rbx, %rdi
callq 0x375f
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x9, %rax
jne 0x2441
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x24a0
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x375f
movq %rax, %r14
movq %rax, %rdi
callq 0x25ed
cmpq $0x2f8, %rax            # imm = 0x2F8
jne 0x2460
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3684
movq %rax, %r15
movq %rax, %rdi
callq 0x25ed
cmpq $0x2d8, %rax            # imm = 0x2D8
jne 0x247f
movq %rbx, %rdi
callq 0x528a
movq %r14, %rdi
callq 0x528a
movq %r15, %rdi
callq 0x528a
leaq 0x45af(%rip), %rdi      # 0x63ee
callq 0x1070
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x41ab(%rip), %rdi      # 0x6004
leaq 0x41bb(%rip), %rsi      # 0x601b
leaq 0x41cb(%rip), %rcx      # 0x6032
movl $0x16, %edx
callq 0x10a0
leaq 0x41c5(%rip), %rdi      # 0x603d
leaq 0x419c(%rip), %rsi      # 0x601b
leaq 0x41ac(%rip), %rcx      # 0x6032
movl $0x18, %edx
callq 0x10a0
leaq 0x41c0(%rip), %rdi      # 0x6057
leaq 0x417d(%rip), %rsi      # 0x601b
leaq 0x418d(%rip), %rcx      # 0x6032
movl $0x1a, %edx
callq 0x10a0
leaq 0x41b8(%rip), %rdi      # 0x606e
leaq 0x415e(%rip), %rsi      # 0x601b
leaq 0x416e(%rip), %rcx      # 0x6032
movl $0x23, %edx
callq 0x10a0
leaq 0x41b1(%rip), %rdi      # 0x6086
leaq 0x413f(%rip), %rsi      # 0x601b
leaq 0x414f(%rip), %rcx      # 0x6032
movl $0x25, %edx
callq 0x10a0
leaq 0x41ce(%rip), %rdi      # 0x60c2
leaq 0x4120(%rip), %rsi      # 0x601b
leaq 0x4130(%rip), %rcx      # 0x6032
movl $0x2e, %edx
callq 0x10a0
leaq 0x4173(%rip), %rdi      # 0x6086
leaq 0x4101(%rip), %rsi      # 0x601b
leaq 0x4111(%rip), %rcx      # 0x6032
movl $0x31, %edx
callq 0x10a0
leaq 0x41a9(%rip), %rdi      # 0x60db
leaq 0x40e2(%rip), %rsi      # 0x601b
leaq 0x40f2(%rip), %rcx      # 0x6032
movl $0x3a, %edx
callq 0x10a0
leaq 0x41b8(%rip), %rdi      # 0x6109
leaq 0x40c3(%rip), %rsi      # 0x601b
leaq 0x40d3(%rip), %rcx      # 0x6032
movl $0x3b, %edx
callq 0x10a0
leaq 0x41a0(%rip), %rdi      # 0x6110
leaq 0x40a4(%rip), %rsi      # 0x601b
leaq 0x40b4(%rip), %rcx      # 0x6032
movl $0x3c, %edx
callq 0x10a0
leaq 0x419b(%rip), %rdi      # 0x612a
leaq 0x4085(%rip), %rsi      # 0x601b
leaq 0x4095(%rip), %rcx      # 0x6032
movl $0x48, %edx
callq 0x10a0
leaq 0x418e(%rip), %rdi      # 0x613c
leaq 0x4066(%rip), %rsi      # 0x601b
leaq 0x4076(%rip), %rcx      # 0x6032
movl $0x49, %edx
callq 0x10a0
leaq 0x4181(%rip), %rdi      # 0x614e
leaq 0x4047(%rip), %rsi      # 0x601b
leaq 0x4057(%rip), %rcx      # 0x6032
movl $0x4a, %edx
callq 0x10a0
leaq 0x4173(%rip), %rdi      # 0x615f
leaq 0x4028(%rip), %rsi      # 0x601b
leaq 0x4038(%rip), %rcx      # 0x6032
movl $0x4c, %edx
callq 0x10a0
leaq 0x416a(%rip), %rdi      # 0x6175
leaq 0x4009(%rip), %rsi      # 0x601b
leaq 0x4019(%rip), %rcx      # 0x6032
movl $0x4d, %edx
callq 0x10a0
leaq 0x4160(%rip), %rdi      # 0x618a
leaq 0x3fea(%rip), %rsi      # 0x601b
leaq 0x3ffa(%rip), %rcx      # 0x6032
movl $0x4e, %edx
callq 0x10a0
leaq 0x4157(%rip), %rdi      # 0x61a0
leaq 0x3fcb(%rip), %rsi      # 0x601b
leaq 0x3fdb(%rip), %rcx      # 0x6032
movl $0x57, %edx
callq 0x10a0
leaq 0x414f(%rip), %rdi      # 0x61b7
leaq 0x3fac(%rip), %rsi      # 0x601b
leaq 0x3fbc(%rip), %rcx      # 0x6032
movl $0x59, %edx
callq 0x10a0
leaq 0x414d(%rip), %rdi      # 0x61d4
leaq 0x3f8d(%rip), %rsi      # 0x601b
leaq 0x3f9d(%rip), %rcx      # 0x6032
movl $0x61, %edx
callq 0x10a0
leaq 0x4145(%rip), %rdi      # 0x61eb
leaq 0x3f6e(%rip), %rsi      # 0x601b
leaq 0x3f7e(%rip), %rcx      # 0x6032
movl $0x64, %edx
callq 0x10a0
leaq 0x413e(%rip), %rdi      # 0x6203
leaq 0x3f4f(%rip), %rsi      # 0x601b
leaq 0x3f5f(%rip), %rcx      # 0x6032
movl $0x68, %edx
callq 0x10a0
leaq 0x4133(%rip), %rdi      # 0x6217
leaq 0x3f30(%rip), %rsi      # 0x601b
leaq 0x3f40(%rip), %rcx      # 0x6032
movl $0x71, %edx
callq 0x10a0
leaq 0x412b(%rip), %rdi      # 0x622e
leaq 0x3f11(%rip), %rsi      # 0x601b
leaq 0x3f21(%rip), %rcx      # 0x6032
movl $0x73, %edx
callq 0x10a0
leaq 0x40c9(%rip), %rdi      # 0x61eb
leaq 0x3ef2(%rip), %rsi      # 0x601b
leaq 0x3f02(%rip), %rcx      # 0x6032
movl $0x7b, %edx
callq 0x10a0
leaq 0x4093(%rip), %rdi      # 0x61d4
leaq 0x3ed3(%rip), %rsi      # 0x601b
leaq 0x3ee3(%rip), %rcx      # 0x6032
movl $0x7e, %edx
callq 0x10a0
leaq 0x40ea(%rip), %rdi      # 0x624a
leaq 0x3eb4(%rip), %rsi      # 0x601b
leaq 0x3ec4(%rip), %rcx      # 0x6032
movl $0x82, %edx
callq 0x10a0
leaq 0x40e3(%rip), %rdi      # 0x6262
leaq 0x3e95(%rip), %rsi      # 0x601b
leaq 0x3ea5(%rip), %rcx      # 0x6032
movl $0x8c, %edx
callq 0x10a0
leaq 0x40df(%rip), %rdi      # 0x627d
leaq 0x3e76(%rip), %rsi      # 0x601b
leaq 0x3e86(%rip), %rcx      # 0x6032
movl $0x8e, %edx
callq 0x10a0
leaq 0x40df(%rip), %rdi      # 0x629c
leaq 0x3e57(%rip), %rsi      # 0x601b
leaq 0x3e67(%rip), %rcx      # 0x6032
movl $0x96, %edx
callq 0x10a0
leaq 0x40df(%rip), %rdi      # 0x62bb
leaq 0x3e38(%rip), %rsi      # 0x601b
leaq 0x3e48(%rip), %rcx      # 0x6032
movl $0x9a, %edx
callq 0x10a0
leaq 0x40dd(%rip), %rdi      # 0x62d8
leaq 0x3e19(%rip), %rsi      # 0x601b
leaq 0x3e29(%rip), %rcx      # 0x6032
movl $0xa2, %edx
callq 0x10a0
leaq 0x40d4(%rip), %rdi      # 0x62ee
leaq 0x3dfa(%rip), %rsi      # 0x601b
leaq 0x3e0a(%rip), %rcx      # 0x6032
movl $0xab, %edx
callq 0x10a0
leaq 0x40ca(%rip), %rdi      # 0x6303
leaq 0x3ddb(%rip), %rsi      # 0x601b
leaq 0x3deb(%rip), %rcx      # 0x6032
movl $0xad, %edx
callq 0x10a0
leaq 0x40c4(%rip), %rdi      # 0x631c
leaq 0x3dbc(%rip), %rsi      # 0x601b
leaq 0x3dcc(%rip), %rcx      # 0x6032
movl $0xb5, %edx
callq 0x10a0
leaq 0x40c7(%rip), %rdi      # 0x633e
leaq 0x3d9d(%rip), %rsi      # 0x601b
leaq 0x3dad(%rip), %rcx      # 0x6032
movl $0xb7, %edx
callq 0x10a0
leaq 0x40d4(%rip), %rdi      # 0x636a
leaq 0x3d7e(%rip), %rsi      # 0x601b
leaq 0x3d8e(%rip), %rcx      # 0x6032
movl $0xc1, %edx
callq 0x10a0
leaq 0x40d2(%rip), %rdi      # 0x6387
leaq 0x3d5f(%rip), %rsi      # 0x601b
leaq 0x3d6f(%rip), %rcx      # 0x6032
movl $0xc3, %edx
callq 0x10a0
leaq 0x40cc(%rip), %rdi      # 0x63a0
leaq 0x3d40(%rip), %rsi      # 0x601b
leaq 0x3d50(%rip), %rcx      # 0x6032
movl $0xcb, %edx
callq 0x10a0
leaq 0x40cf(%rip), %rdi      # 0x63c2
leaq 0x3d21(%rip), %rsi      # 0x601b
leaq 0x3d31(%rip), %rcx      # 0x6032
movl $0xcd, %edx
callq 0x10a0
leaq 0x3f50(%rip), %rdi      # 0x6262
leaq 0x3d02(%rip), %rsi      # 0x601b
leaq 0x3d12(%rip), %rcx      # 0x6032
movl $0xda, %edx
callq 0x10a0
leaq 0x3f4c(%rip), %rdi      # 0x627d
leaq 0x3ce3(%rip), %rsi      # 0x601b
leaq 0x3cf3(%rip), %rcx      # 0x6032
movl $0xdc, %edx
callq 0x10a0
leaq 0x3f4c(%rip), %rdi      # 0x629c
leaq 0x3cc4(%rip), %rsi      # 0x601b
leaq 0x3cd4(%rip), %rcx      # 0x6032
movl $0xe4, %edx
callq 0x10a0
leaq 0x3f4c(%rip), %rdi      # 0x62bb
leaq 0x3ca5(%rip), %rsi      # 0x601b
leaq 0x3cb5(%rip), %rcx      # 0x6032
movl $0xe8, %edx
callq 0x10a0
leaq 0x3f4a(%rip), %rdi      # 0x62d8
leaq 0x3c86(%rip), %rsi      # 0x601b
leaq 0x3c96(%rip), %rcx      # 0x6032
movl $0xf0, %edx
callq 0x10a0
leaq 0x3f41(%rip), %rdi      # 0x62ee
leaq 0x3c67(%rip), %rsi      # 0x601b
leaq 0x3c77(%rip), %rcx      # 0x6032
movl $0xf9, %edx
callq 0x10a0
leaq 0x3f37(%rip), %rdi      # 0x6303
leaq 0x3c48(%rip), %rsi      # 0x601b
leaq 0x3c58(%rip), %rcx      # 0x6032
movl $0xfb, %edx
callq 0x10a0
leaq 0x3f31(%rip), %rdi      # 0x631c
leaq 0x3c29(%rip), %rsi      # 0x601b
leaq 0x3c39(%rip), %rcx      # 0x6032
movl $0x103, %edx            # imm = 0x103
callq 0x10a0
leaq 0x3f34(%rip), %rdi      # 0x633e
leaq 0x3c0a(%rip), %rsi      # 0x601b
leaq 0x3c1a(%rip), %rcx      # 0x6032
movl $0x105, %edx            # imm = 0x105
callq 0x10a0
leaq 0x3f41(%rip), %rdi      # 0x636a
leaq 0x3beb(%rip), %rsi      # 0x601b
leaq 0x3bfb(%rip), %rcx      # 0x6032
movl $0x10f, %edx            # imm = 0x10F
callq 0x10a0
leaq 0x3f3f(%rip), %rdi      # 0x6387
leaq 0x3bcc(%rip), %rsi      # 0x601b
leaq 0x3bdc(%rip), %rcx      # 0x6032
movl $0x111, %edx            # imm = 0x111
callq 0x10a0
leaq 0x3f39(%rip), %rdi      # 0x63a0
leaq 0x3bad(%rip), %rsi      # 0x601b
leaq 0x3bbd(%rip), %rcx      # 0x6032
movl $0x119, %edx            # imm = 0x119
callq 0x10a0
leaq 0x3f3c(%rip), %rdi      # 0x63c2
leaq 0x3b8e(%rip), %rsi      # 0x601b
leaq 0x3b9e(%rip), %rcx      # 0x6032
movl $0x11b, %edx            # imm = 0x11B
callq 0x10a0
nop