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

  obdeque *test_deque_a, *test_deque_b, *joined_deque;
  obdeque_iterator *head_it, *tail_it, *copy_it;
  obtest *a, *b, *c, *d, *e;
  uint32_t i;

  /* create test objects */
  test_deque_a = obdeque_new();
  a = obtest_new(1);
  b = obtest_new(2);
  c = obtest_new(3);
  d = obtest_new(4);
  e = obtest_new(5);


  /* test the empty deque */
  assert(obdeque_is_empty(test_deque_a) != 0);
  assert(obdeque_length(test_deque_a) == 0);
  assert(obdeque_head_iterator(test_deque_a) == NULL);
  assert(obdeque_tail_iterator(test_deque_a) == NULL);

  /* test a deque with a single element */
  obdeque_add_at_head(test_deque_a, (obj *)a);

  assert(obdeque_is_empty(test_deque_a) == 0);
  assert(obdeque_length(test_deque_a) == 1);
  assert(ob_reference_count((obj *)a) == 2);
  assert(obtest_id((obtest *)obdeque_obj_at_head(test_deque_a)) == 1);
  assert(obtest_id((obtest *)obdeque_obj_at_tail(test_deque_a)) == 1);

  head_it = obdeque_head_iterator(test_deque_a);
  tail_it = obdeque_tail_iterator(test_deque_a);

  assert(head_it != NULL);
  assert(tail_it != NULL);
  assert(obtest_id((obtest *)obdeque_obj_at_iterator(test_deque_a, head_it)) == 1);
  assert(obtest_id((obtest *)obdeque_obj_at_iterator(test_deque_a, tail_it)) == 1);

  assert(obdeque_find_obj(test_deque_a, (obj *)a));

  /* test removing the only element from the deque */
  obdeque_remove_tail(test_deque_a);

  /* check that element is still referenced because of existing iterators */
  assert(ob_reference_count((obj *)a) == 2);
  ob_release((obj *)head_it);
  ob_release((obj *)tail_it);
  assert(ob_reference_count((obj *)a) == 1);


  assert(obdeque_is_empty(test_deque_a) != 0);
  assert(obdeque_length(test_deque_a) == 0);
  assert(obdeque_head_iterator(test_deque_a) == NULL);
  assert(obdeque_tail_iterator(test_deque_a) == NULL);

  /* test deque with multiple elements */
  obdeque_add_at_tail(test_deque_a, (obj *)a);
  obdeque_add_at_head(test_deque_a, (obj *)b);
  obdeque_add_at_tail(test_deque_a, (obj *)c);
  obdeque_add_at_head(test_deque_a, (obj *)d);
  obdeque_add_at_tail(test_deque_a, (obj *)e);

  assert(obdeque_is_empty(test_deque_a) == 0);
  assert(obdeque_length(test_deque_a) == 5);

  /* test deque removal functions */
  head_it = obdeque_head_iterator(test_deque_a);
  obdeque_remove_at_iterator(test_deque_a, head_it);
  ob_release((obj *)head_it);

  head_it = obdeque_head_iterator(test_deque_a);
  do{
    assert(obtest_id((obtest *)obdeque_obj_at_iterator(test_deque_a, head_it)) != 4);
  }while(obdeque_iterate_next(test_deque_a, head_it));

  ob_release((obj *)head_it);
  obdeque_add_at_head(test_deque_a, (obj *)d);

  test_deque_b = obdeque_copy(test_deque_a);

  assert(ob_reference_count((obj *)a) == 3);
  assert(ob_compare((obj *)test_deque_a, (obj *)test_deque_b) == OB_EQUAL_TO);
  assert(ob_hash((obj *)test_deque_a) ==  ob_hash((obj *)test_deque_b));

  obdeque_sort(test_deque_a, OB_LEAST_TO_GREATEST);

  assert(obdeque_length(test_deque_a) == 5);
  assert(ob_compare((obj *)test_deque_a, (obj *)test_deque_b) == OB_NOT_EQUAL);
  assert(ob_hash((obj *)test_deque_a) !=  ob_hash((obj *)test_deque_b));

  i = 1;
  head_it = obdeque_head_iterator(test_deque_a);
  do{
    assert(obtest_id((obtest *)obdeque_obj_at_iterator(test_deque_a, head_it)) == i);
    i++;
  }while(obdeque_iterate_next(test_deque_a, head_it));

  ob_release((obj *)head_it);
  ob_release((obj *)test_deque_a);
  assert(ob_reference_count((obj *)a) == 2);

  test_deque_a = obdeque_copy(test_deque_b);
  joined_deque = obdeque_join(test_deque_a, test_deque_b);
  obdeque_sort(joined_deque, OB_GREATEST_TO_LEAST);

  assert(obdeque_length(joined_deque) == 10);
  assert(ob_reference_count((obj *)a) == 5); /* the joined deque has two references,
                                            as a is contained within twice */

  tail_it = obdeque_tail_iterator(joined_deque);
  obdeque_remove_tail(joined_deque);
  assert(obdeque_iterate_prev(joined_deque, tail_it) == 0);
  assert(obdeque_iterate_next(joined_deque, tail_it) == 0);
  ob_release((obj *)tail_it);

  tail_it = obdeque_tail_iterator(joined_deque);
  obdeque_add_at_iterator(joined_deque, tail_it, (obj *)a);
  ob_release((obj *)tail_it);

  tail_it = obdeque_tail_iterator(joined_deque);
  copy_it = obdeque_copy_iterator(tail_it);
  ob_release((obj *)tail_it);
  tail_it = copy_it;


  for(i=0; i<10; i++){
    assert(obtest_id((obtest *)obdeque_obj_at_iterator(joined_deque, tail_it)) == i/2+1);
    if(i != 9) assert(obdeque_iterate_prev(joined_deque, tail_it));
  }

  assert(obdeque_iterate_prev(joined_deque, tail_it) == 0);

  ob_release((obj *)tail_it);

  obdeque_clear(test_deque_a);
  obdeque_clear(test_deque_b);

  for(i=0; i<10; i++){
    obdeque_remove_head(joined_deque);
  }

  assert(obdeque_is_empty(joined_deque) != 0);
  assert(obdeque_length(joined_deque) == 0);
  assert(ob_reference_count((obj *)a) == 1);

  ob_release((obj *)test_deque_a);
  ob_release((obj *)test_deque_b);
  ob_release((obj *)joined_deque);
  ob_release((obj *)e);
  ob_release((obj *)d);
  ob_release((obj *)c);
  ob_release((obj *)b);
  ob_release((obj *)a);

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl $0x0, -0x4(%rbp)
callq 0x1d00
movq %rax, -0x10(%rbp)
movl $0x1, %edi
callq 0x38e0
movq %rax, -0x40(%rbp)
movl $0x2, %edi
callq 0x38e0
movq %rax, -0x48(%rbp)
movl $0x3, %edi
callq 0x38e0
movq %rax, -0x50(%rbp)
movl $0x4, %edi
callq 0x38e0
movq %rax, -0x58(%rbp)
movl $0x5, %edi
callq 0x38e0
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2140
movzbl %al, %eax
cmpl $0x0, %eax
je 0x1234
jmp 0x1253
leaq 0x3dc9(%rip), %rdi      # 0x5004
leaq 0x3de6(%rip), %rsi      # 0x5028
movl $0x1d, %edx
leaq 0x3df3(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2190
cmpq $0x0, %rax
jne 0x1264
jmp 0x1283
leaq 0x3de1(%rip), %rdi      # 0x504c
leaq 0x3db6(%rip), %rsi      # 0x5028
movl $0x1e, %edx
leaq 0x3dc3(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x1e60
cmpq $0x0, %rax
jne 0x1294
jmp 0x12b3
leaq 0x3dd3(%rip), %rdi      # 0x506e
leaq 0x3d86(%rip), %rsi      # 0x5028
movl $0x1f, %edx
leaq 0x3d93(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2290
cmpq $0x0, %rax
jne 0x12c4
jmp 0x12e3
leaq 0x3dcf(%rip), %rdi      # 0x509a
leaq 0x3d56(%rip), %rsi      # 0x5028
movl $0x20, %edx
leaq 0x3d63(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x2410
movq -0x10(%rbp), %rdi
callq 0x2140
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1303
jmp 0x1322
leaq 0x3dbc(%rip), %rdi      # 0x50c6
leaq 0x3d17(%rip), %rsi      # 0x5028
movl $0x25, %edx
leaq 0x3d24(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2190
cmpq $0x1, %rax
jne 0x1333
jmp 0x1352
leaq 0x3db0(%rip), %rdi      # 0x50ea
leaq 0x3ce7(%rip), %rsi      # 0x5028
movl $0x26, %edx
leaq 0x3cf4(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x2, %eax
jne 0x1362
jmp 0x1381
leaq 0x3da3(%rip), %rdi      # 0x510c
leaq 0x3cb8(%rip), %rsi      # 0x5028
movl $0x27, %edx
leaq 0x3cc5(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2e00
movq %rax, %rdi
callq 0x3ba0
cmpl $0x1, %eax
jne 0x1399
jmp 0x13b8
leaq 0x3d8e(%rip), %rdi      # 0x512e
leaq 0x3c81(%rip), %rsi      # 0x5028
movl $0x28, %edx
leaq 0x3c8e(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2e70
movq %rax, %rdi
callq 0x3ba0
cmpl $0x1, %eax
jne 0x13d0
jmp 0x13ef
leaq 0x3d93(%rip), %rdi      # 0x516a
leaq 0x3c4a(%rip), %rsi      # 0x5028
movl $0x29, %edx
leaq 0x3c57(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x1e60
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2290
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1412
jmp 0x1431
leaq 0x3d8d(%rip), %rdi      # 0x51a6
leaq 0x3c08(%rip), %rsi      # 0x5028
movl $0x2e, %edx
leaq 0x3c15(%rip), %rcx      # 0x5041
callq 0x1050
cmpq $0x0, -0x30(%rbp)
je 0x143a
jmp 0x1459
leaq 0x3d75(%rip), %rdi      # 0x51b6
leaq 0x3be0(%rip), %rsi      # 0x5028
movl $0x2f, %edx
leaq 0x3bed(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x1eb0
movq %rax, %rdi
callq 0x3ba0
cmpl $0x1, %eax
jne 0x1475
jmp 0x1494
leaq 0x3d4a(%rip), %rdi      # 0x51c6
leaq 0x3ba5(%rip), %rsi      # 0x5028
movl $0x30, %edx
leaq 0x3bb2(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x1eb0
movq %rax, %rdi
callq 0x3ba0
cmpl $0x1, %eax
jne 0x14b0
jmp 0x14cf
leaq 0x3d58(%rip), %rdi      # 0x520f
leaq 0x3b6a(%rip), %rsi      # 0x5028
movl $0x31, %edx
leaq 0x3b77(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x2840
cmpb $0x0, %al
je 0x14e2
jmp 0x1501
leaq 0x3d6f(%rip), %rdi      # 0x5258
leaq 0x3b38(%rip), %rsi      # 0x5028
movl $0x33, %edx
leaq 0x3b45(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2fa0
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x2, %eax
jne 0x151a
jmp 0x1539
leaq 0x3beb(%rip), %rdi      # 0x510c
leaq 0x3b00(%rip), %rsi      # 0x5028
movl $0x39, %edx
leaq 0x3b0d(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x28(%rbp), %rdi
callq 0x3ef0
movq -0x30(%rbp), %rdi
callq 0x3ef0
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x1, %eax
jne 0x155b
jmp 0x157a
leaq 0x3d1f(%rip), %rdi      # 0x5281
leaq 0x3abf(%rip), %rsi      # 0x5028
movl $0x3c, %edx
leaq 0x3acc(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2140
movzbl %al, %eax
cmpl $0x0, %eax
je 0x158d
jmp 0x15ac
leaq 0x3a70(%rip), %rdi      # 0x5004
leaq 0x3a8d(%rip), %rsi      # 0x5028
movl $0x3f, %edx
leaq 0x3a9a(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2190
cmpq $0x0, %rax
jne 0x15bd
jmp 0x15dc
leaq 0x3a88(%rip), %rdi      # 0x504c
leaq 0x3a5d(%rip), %rsi      # 0x5028
movl $0x40, %edx
leaq 0x3a6a(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x1e60
cmpq $0x0, %rax
jne 0x15ed
jmp 0x160c
leaq 0x3a7a(%rip), %rdi      # 0x506e
leaq 0x3a2d(%rip), %rsi      # 0x5028
movl $0x41, %edx
leaq 0x3a3a(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2290
cmpq $0x0, %rax
jne 0x161d
jmp 0x163c
leaq 0x3a76(%rip), %rdi      # 0x509a
leaq 0x39fd(%rip), %rsi      # 0x5028
movl $0x42, %edx
leaq 0x3a0a(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x1f70
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x2410
movq -0x10(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x1f70
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x2410
movq -0x10(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x1f70
movq -0x10(%rbp), %rdi
callq 0x2140
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1690
jmp 0x16af
leaq 0x3a2f(%rip), %rdi      # 0x50c6
leaq 0x398a(%rip), %rsi      # 0x5028
movl $0x4b, %edx
leaq 0x3997(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2190
cmpq $0x5, %rax
jne 0x16c0
jmp 0x16df
leaq 0x3bdc(%rip), %rdi      # 0x52a3
leaq 0x395a(%rip), %rsi      # 0x5028
movl $0x4c, %edx
leaq 0x3967(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x1e60
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3060
movq -0x28(%rbp), %rdi
callq 0x3ef0
movq -0x10(%rbp), %rdi
callq 0x1e60
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x1eb0
movq %rax, %rdi
callq 0x3ba0
cmpl $0x4, %eax
je 0x172b
jmp 0x174a
leaq 0x3b93(%rip), %rdi      # 0x52c5
leaq 0x38ef(%rip), %rsi      # 0x5028
movl $0x55, %edx
leaq 0x38fc(%rip), %rcx      # 0x5041
callq 0x1050
jmp 0x174c
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x2040
cmpb $0x0, %al
jne 0x170f
movq -0x28(%rbp), %rdi
callq 0x3ef0
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x2410
movq -0x10(%rbp), %rdi
callq 0x1db0
movq %rax, -0x18(%rbp)
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x3, %eax
jne 0x1790
jmp 0x17af
leaq 0x3b77(%rip), %rdi      # 0x530e
leaq 0x388a(%rip), %rsi      # 0x5028
movl $0x5d, %edx
leaq 0x3897(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3dd0
movsbl %al, %eax
cmpl $0x0, %eax
jne 0x17c6
jmp 0x17e5
leaq 0x3b63(%rip), %rdi      # 0x5330
leaq 0x3854(%rip), %rsi      # 0x5028
movl $0x5e, %edx
leaq 0x3861(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x3d30
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rdi
callq 0x3d30
movq %rax, %rcx
movq -0x70(%rbp), %rax
cmpq %rcx, %rax
jne 0x1809
jmp 0x1828
leaq 0x3b64(%rip), %rdi      # 0x5374
leaq 0x3811(%rip), %rsi      # 0x5028
movl $0x5f, %edx
leaq 0x381e(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x2920
movq -0x10(%rbp), %rdi
callq 0x2190
cmpq $0x5, %rax
jne 0x1847
jmp 0x1866
leaq 0x3a55(%rip), %rdi      # 0x52a3
leaq 0x37d3(%rip), %rsi      # 0x5028
movl $0x63, %edx
leaq 0x37e0(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3dd0
movsbl %al, %eax
cmpl $0x2, %eax
jne 0x187d
jmp 0x189c
leaq 0x3b2d(%rip), %rdi      # 0x53b1
leaq 0x379d(%rip), %rsi      # 0x5028
movl $0x64, %edx
leaq 0x37aa(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x3d30
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rdi
callq 0x3d30
movq %rax, %rcx
movq -0x78(%rbp), %rax
cmpq %rcx, %rax
je 0x18c0
jmp 0x18df
leaq 0x3b2f(%rip), %rdi      # 0x53f6
leaq 0x375a(%rip), %rsi      # 0x5028
movl $0x65, %edx
leaq 0x3767(%rip), %rcx      # 0x5041
callq 0x1050
movl $0x1, -0x64(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1e60
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x1eb0
movq %rax, %rdi
callq 0x3ba0
cmpl -0x64(%rbp), %eax
jne 0x190f
jmp 0x192e
leaq 0x3b1d(%rip), %rdi      # 0x5433
leaq 0x370b(%rip), %rsi      # 0x5028
movl $0x6a, %edx
leaq 0x3718(%rip), %rcx      # 0x5041
callq 0x1050
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x2040
cmpb $0x0, %al
jne 0x18f3
movq -0x28(%rbp), %rdi
callq 0x3ef0
movq -0x10(%rbp), %rdi
callq 0x3ef0
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x2, %eax
jne 0x196a
jmp 0x1989
leaq 0x379b(%rip), %rdi      # 0x510c
leaq 0x36b0(%rip), %rsi      # 0x5028
movl $0x70, %edx
leaq 0x36bd(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x18(%rbp), %rdi
callq 0x1db0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2760
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x2920
movq -0x20(%rbp), %rdi
callq 0x2190
cmpq $0xa, %rax
jne 0x19c6
jmp 0x19e5
leaq 0x3aaf(%rip), %rdi      # 0x547c
leaq 0x3654(%rip), %rsi      # 0x5028
movl $0x76, %edx
leaq 0x3661(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x5, %eax
jne 0x19f5
jmp 0x1a14
leaq 0x3aa3(%rip), %rdi      # 0x549f
leaq 0x3625(%rip), %rsi      # 0x5028
movl $0x77, %edx
leaq 0x3632(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x20(%rbp), %rdi
callq 0x2290
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2fa0
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x2310
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1a41
jmp 0x1a60
leaq 0x3a79(%rip), %rdi      # 0x54c1
leaq 0x35d9(%rip), %rsi      # 0x5028
movl $0x7c, %edx
leaq 0x35e6(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x2040
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1a77
jmp 0x1a96
leaq 0x3a74(%rip), %rdi      # 0x54f2
leaq 0x35a3(%rip), %rsi      # 0x5028
movl $0x7d, %edx
leaq 0x35b0(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x30(%rbp), %rdi
callq 0x3ef0
movq -0x20(%rbp), %rdi
callq 0x2290
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x25b0
movq -0x30(%rbp), %rdi
callq 0x3ef0
movq -0x20(%rbp), %rdi
callq 0x2290
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x22e0
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x3ef0
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movl $0x0, -0x64(%rbp)
cmpl $0xa, -0x64(%rbp)
jae 0x1b8e
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x1eb0
movq %rax, %rdi
callq 0x3ba0
movl -0x64(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1b25
jmp 0x1b44
leaq 0x39f7(%rip), %rdi      # 0x5523
leaq 0x34f5(%rip), %rsi      # 0x5028
movl $0x8b, %edx
leaq 0x3502(%rip), %rcx      # 0x5041
callq 0x1050
cmpl $0x9, -0x64(%rbp)
je 0x1b7e
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x2310
cmpb $0x0, %al
je 0x1b5d
jmp 0x1b7c
leaq 0x3a0c(%rip), %rdi      # 0x5570
leaq 0x34bd(%rip), %rsi      # 0x5028
movl $0x8c, %edx
leaq 0x34ca(%rip), %rcx      # 0x5041
callq 0x1050
jmp 0x1b7e
jmp 0x1b80
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x1af8
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x2310
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1ba5
jmp 0x1bc4
leaq 0x3915(%rip), %rdi      # 0x54c1
leaq 0x3475(%rip), %rsi      # 0x5028
movl $0x8f, %edx
leaq 0x3482(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x30(%rbp), %rdi
callq 0x3ef0
movq -0x10(%rbp), %rdi
callq 0x3220
movq -0x18(%rbp), %rdi
callq 0x3220
movl $0x0, -0x64(%rbp)
cmpl $0xa, -0x64(%rbp)
jae 0x1c00
movq -0x20(%rbp), %rdi
callq 0x2ee0
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x1be6
movq -0x20(%rbp), %rdi
callq 0x2140
movzbl %al, %eax
cmpl $0x0, %eax
je 0x1c13
jmp 0x1c32
leaq 0x3982(%rip), %rdi      # 0x559c
leaq 0x3407(%rip), %rsi      # 0x5028
movl $0x9a, %edx
leaq 0x3414(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x20(%rbp), %rdi
callq 0x2190
cmpq $0x0, %rax
jne 0x1c43
jmp 0x1c62
leaq 0x3976(%rip), %rdi      # 0x55c0
leaq 0x33d7(%rip), %rsi      # 0x5028
movl $0x9b, %edx
leaq 0x33e4(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x40(%rbp), %rdi
callq 0x3fe0
cmpl $0x1, %eax
jne 0x1c72
jmp 0x1c91
leaq 0x3608(%rip), %rdi      # 0x5281
leaq 0x33a8(%rip), %rsi      # 0x5028
movl $0x9c, %edx
leaq 0x33b5(%rip), %rcx      # 0x5041
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x3ef0
movq -0x18(%rbp), %rdi
callq 0x3ef0
movq -0x20(%rbp), %rdi
callq 0x3ef0
movq -0x60(%rbp), %rdi
callq 0x3ef0
movq -0x58(%rbp), %rdi
callq 0x3ef0
movq -0x50(%rbp), %rdi
callq 0x3ef0
movq -0x48(%rbp), %rdi
callq 0x3ef0
movq -0x40(%rbp), %rdi
callq 0x3ef0
leaq 0x3902(%rip), %rdi      # 0x55e2
movb $0x0, %al
callq 0x1040
xorl %eax, %eax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)