// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/interval_tree.c
// Function: gt_interval_tree_unit_test
int gt_interval_tree_unit_test(GT_UNUSED GtError *err)
{
  GtIntervalTree *it = NULL;
  GtIntervalTreeNode *res = NULL;
  GtUword i = 0;
  int had_err = 0, num_testranges = 3000,
      num_samples = 300000, num_find_all_samples = 10000,
      gt_range_max_basepos = 90000, width = 700,
      query_width = 5000;
  GtRange *res_rng = NULL, qrange;
  GtArray *arr = NULL, *narr = NULL;

  arr = gt_array_new(sizeof (GtRange*));

  /* generate test ranges */
  for (i = 0;i<num_testranges;i++)
  {
    GtUword start;
    GtRange *rng;
    rng  = gt_calloc(1, sizeof (GtRange));
    start = gt_rand_max(gt_range_max_basepos);
    rng->start = start;
    rng->end = start + gt_rand_max(width);
    gt_array_add(arr, rng);
  }

  it = gt_interval_tree_new(gt_free_func);

  /* insert ranges */
  for (i = 0; i < num_testranges && !had_err; i++)
  {
    GtIntervalTreeNode *new_node;
    GtRange *rng;
    rng = *(GtRange**) gt_array_get(arr, i);
    new_node = gt_interval_tree_node_new(rng, rng->start, rng->end);
    gt_interval_tree_insert(it, new_node);
  }
  gt_ensure(gt_interval_tree_size(it) == num_testranges);

  /* perform test queries */
  for (i = 0; i < num_samples && !had_err; i++)
  {
    GtUword start = gt_rand_max(gt_range_max_basepos);
    qrange.start = start;
    qrange.end = start + gt_rand_max(width);
    res = gt_interval_tree_find_first_overlapping(it, qrange.start, qrange.end);
    if (res)
    {
      /* we have a hit, check if really overlapping */
      res_rng = (GtRange*) gt_interval_tree_node_get_data(res);
      gt_ensure(gt_range_overlap(&qrange, res_rng));
    } else {
      /* no hit, check whether there really is no overlapping
         interval in tree */
      GtRange *this_rng;
      GtUword j;
      bool found = false;
      for (j = 0; j < gt_array_size(arr); j++)
      {
        this_rng = *(GtRange**) gt_array_get(arr, j);
        if (gt_range_overlap(this_rng, &qrange))
        {
          found = true;
          break;
        }
      }
      gt_ensure(!found);
    }
  }

  /* test searching for all overlapping intervals */
  for (i = 0; i < num_find_all_samples && !had_err; i++)
  {
    GtUword start = gt_rand_max(gt_range_max_basepos);
    qrange.start = start;
    qrange.end = start + gt_rand_max(query_width);
    GtArray *res = gt_array_new(sizeof (GtRange*));
    gt_interval_tree_find_all_overlapping(it, qrange.start, qrange.end, res);
    if (res)
    {
      /* generate reference overlapping interval list by linear search */
      GtArray *ref;
      GtUword j;
      ref = gt_array_new(sizeof (GtRange*));
      for (j = 0; j < gt_array_size(arr); j++)
      {
        GtRange *this_rng;
        this_rng = *(GtRange**) gt_array_get(arr, j);
        if (gt_range_overlap(this_rng, &qrange))
        {
          gt_array_add(ref, this_rng);
        }
      }
      /* compare reference with interval tree query result */
      gt_array_sort_stable(ref, range_ptr_compare);
      gt_array_sort_stable(res, range_ptr_compare);
      /* must be equal */
      gt_ensure(gt_array_cmp(ref, res)==0);
      gt_array_delete(ref);
    }
    gt_array_delete(res);
  }
  gt_interval_tree_delete(it);

  it = gt_interval_tree_new(NULL);
  gt_array_reset(arr);

  /* generate test ranges */
  for (i = 0;i<num_testranges && !had_err;i++)
  {
    GtUword start;
    GtIntervalTreeNode *new_node;
    start = gt_rand_max(gt_range_max_basepos);
    new_node = gt_interval_tree_node_new((void*) i, start,
                                          start + gt_rand_max(width));
    gt_interval_tree_insert(it, new_node);
  }
  gt_ensure(gt_interval_tree_size(it) == num_testranges);

  narr = gt_array_new(sizeof (GtIntervalTreeNode*));
  for (i = 0; i < num_testranges && !had_err; i++) {
    GtUword idx, n, val;
    GtIntervalTreeNode *node = NULL;

    /* get all nodes referenced by the interval tree */
    interval_tree_find_all_internal(it, it->root, itree_test_get_node, 0,
                                    gt_range_max_basepos+width, narr);

    /* remove a random node */
    idx = gt_rand_max(gt_array_size(narr)-1);
    node = *(GtIntervalTreeNode**) gt_array_get(narr, idx);
    gt_ensure(node != NULL);
    val = (GtUword) gt_interval_tree_node_get_data(node);
    gt_interval_tree_remove(it, node);
    gt_array_reset(narr);

    /* make sure that the node has disappeared */
    gt_ensure(gt_interval_tree_size(it) == num_testranges - (i+1));
    interval_tree_find_all_internal(it, it->root, itree_test_get_node, 0,
                                    gt_range_max_basepos+width, narr);
    gt_ensure(gt_array_size(narr) == num_testranges - (i+1));
    for (n = 0; !had_err && n < gt_array_size(narr); n++) {
      GtIntervalTreeNode *onode = *(GtIntervalTreeNode**) gt_array_get(narr, n);
      gt_ensure((GtUword) gt_interval_tree_node_get_data(onode)
                           != val);
    }
  }

  gt_array_delete(arr);
  gt_array_delete(narr);
  gt_interval_tree_delete(it);
  return had_err;
}

// Assembly:
subq $0x178, %rsp            # imm = 0x178
movq %rdi, 0x170(%rsp)
movq $0x0, 0x168(%rsp)
movq $0x0, 0x160(%rsp)
movq $0x0, 0x158(%rsp)
movl $0x0, 0x154(%rsp)
movl $0xbb8, 0x150(%rsp) # imm = 0xBB8
movl $0x493e0, 0x14c(%rsp) # imm = 0x493E0
movl $0x2710, 0x148(%rsp) # imm = 0x2710
movl $0x15f90, 0x144(%rsp) # imm = 0x15F90
movl $0x2bc, 0x140(%rsp) # imm = 0x2BC
movl $0x1388, 0x13c(%rsp) # imm = 0x1388
movq $0x0, 0x130(%rsp)
movq $0x0, 0x118(%rsp)
movq $0x0, 0x110(%rsp)
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x118(%rsp)
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rax
movslq 0x150(%rsp), %rcx
cmpq %rcx, %rax
jae 0x8af77
movl $0x1, %edi
movl $0x10, %esi
leaq 0xe3cdd(%rip), %rdx     # 0x16ebb9
movl $0x234, %ecx            # imm = 0x234
callq 0xd5b0
movq %rax, 0x100(%rsp)
movslq 0x144(%rsp), %rdi
callq 0x8c3c0
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, (%rax)
movq 0x108(%rsp), %rax
movq %rax, 0x68(%rsp)
movslq 0x140(%rsp), %rdi
callq 0x8c3c0
movq 0x68(%rsp), %rcx
addq %rax, %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x118(%rsp), %rdi
leaq 0x100(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8aeb2
leaq -0x7d35e(%rip), %rdi    # 0xdc20
callq 0x89ac0
movq %rax, 0x168(%rsp)
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rcx
movslq 0x150(%rsp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x67(%rsp)
jae 0x8afc3
cmpl $0x0, 0x154(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x8afcd
jmp 0x8b047
movq 0x118(%rsp), %rdi
movq 0x158(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
movq 0xf0(%rsp), %rax
movq (%rax), %rsi
movq 0xf0(%rsp), %rax
movq 0x8(%rax), %rdx
callq 0x89a50
movq %rax, 0xf8(%rsp)
movq 0x168(%rsp), %rdi
movq 0xf8(%rsp), %rsi
callq 0x8a190
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8af97
jmp 0x8b049
cmpl $0x0, 0x154(%rsp)
jne 0x8b0ab
movq 0x168(%rsp), %rdi
callq 0x89b30
movslq 0x150(%rsp), %rcx
cmpq %rcx, %rax
je 0x8b0a9
movq 0x170(%rsp), %rdi
leaq 0xd50fb(%rip), %rsi     # 0x160177
leaq 0xe3c8c(%rip), %rdx     # 0x16ed0f
leaq 0xe3cb1(%rip), %rcx     # 0x16ed3b
leaq 0xe3b28(%rip), %r8      # 0x16ebb9
movl $0x246, %r9d            # imm = 0x246
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b0ab
jmp 0x8b0ad
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rcx
movslq 0x14c(%rsp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x66(%rsp)
jae 0x8b0e5
cmpl $0x0, 0x154(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0x66(%rsp)
movb 0x66(%rsp), %al
testb $0x1, %al
jne 0x8b0f2
jmp 0x8b2ff
movslq 0x144(%rsp), %rdi
callq 0x8c3c0
movq %rax, 0xe8(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x58(%rsp)
movslq 0x140(%rsp), %rdi
callq 0x8c3c0
movq %rax, %rcx
movq 0x58(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x128(%rsp)
movq 0x168(%rsp), %rdi
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
callq 0x89c40
movq %rax, 0x160(%rsp)
cmpq $0x0, 0x160(%rsp)
je 0x8b1f1
movq 0x160(%rsp), %rdi
callq 0x89b80
movq %rax, 0x130(%rsp)
cmpl $0x0, 0x154(%rsp)
jne 0x8b1ea
movq 0x130(%rsp), %rsi
leaq 0x120(%rsp), %rdi
callq 0x93c40
testb $0x1, %al
jne 0x8b1e8
movq 0x170(%rsp), %rdi
leaq 0xd4fbc(%rip), %rsi     # 0x160177
leaq 0xe3b94(%rip), %rdx     # 0x16ed56
leaq 0xe3b72(%rip), %rcx     # 0x16ed3b
leaq 0xe39e9(%rip), %r8      # 0x16ebb9
movl $0x253, %r9d            # imm = 0x253
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b1ea
jmp 0x8b1ec
jmp 0x8b2e4
movb $0x0, 0xd7(%rsp)
movq $0x0, 0xd8(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x118(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x50(%rsp), %rax
cmpq %rcx, %rax
jae 0x8b28c
movq 0x118(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x93c40
testb $0x1, %al
jne 0x8b267
jmp 0x8b271
movb $0x1, 0xd7(%rsp)
jmp 0x8b28c
jmp 0x8b273
movq 0xd8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xd8(%rsp)
jmp 0x8b205
jmp 0x8b28e
cmpl $0x0, 0x154(%rsp)
jne 0x8b2e0
testb $0x1, 0xd7(%rsp)
je 0x8b2de
movq 0x170(%rsp), %rdi
leaq 0xd4ec6(%rip), %rsi     # 0x160177
leaq 0xe3ac1(%rip), %rdx     # 0x16ed79
leaq 0xe3a7c(%rip), %rcx     # 0x16ed3b
leaq 0xe38f3(%rip), %r8      # 0x16ebb9
movl $0x263, %r9d            # imm = 0x263
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b2e0
jmp 0x8b2e2
jmp 0x8b2e4
jmp 0x8b2e6
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8b0b9
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rcx
movslq 0x148(%rsp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x4f(%rsp)
jae 0x8b337
cmpl $0x0, 0x154(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0x4f(%rsp)
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0x8b344
jmp 0x8b550
movslq 0x144(%rsp), %rdi
callq 0x8c3c0
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x40(%rsp)
movslq 0x13c(%rsp), %rdi
callq 0x8c3c0
movq %rax, %rcx
movq 0x40(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x128(%rsp)
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0xc0(%rsp)
movq 0x168(%rsp), %rdi
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
movq 0xc0(%rsp), %rcx
callq 0x89ef0
cmpq $0x0, 0xc0(%rsp)
je 0x8b52a
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0xb8(%rsp)
movq $0x0, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x118(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x38(%rsp), %rax
cmpq %rcx, %rax
jae 0x8b491
movq 0x118(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x93c40
testb $0x1, %al
jne 0x8b45c
jmp 0x8b476
movq 0xb8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0x8b478
movq 0xb0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb0(%rsp)
jmp 0x8b3fa
movq 0xb8(%rsp), %rdi
leaq 0x5e0(%rip), %rsi       # 0x8ba80
callq 0x766b0
movq 0xc0(%rsp), %rdi
leaq 0x5cc(%rip), %rsi       # 0x8ba80
callq 0x766b0
cmpl $0x0, 0x154(%rsp)
jne 0x8b51b
movq 0xb8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
callq 0x76860
cmpl $0x0, %eax
je 0x8b519
movq 0x170(%rsp), %rdi
leaq 0xd4c8b(%rip), %rsi     # 0x160177
leaq 0xe388d(%rip), %rdx     # 0x16ed80
leaq 0xe3841(%rip), %rcx     # 0x16ed3b
leaq 0xe36b8(%rip), %r8      # 0x16ebb9
movl $0x282, %r9d            # imm = 0x282
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b51b
jmp 0x8b51d
movq 0xb8(%rsp), %rdi
callq 0x770a0
movq 0xc0(%rsp), %rdi
callq 0x770a0
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8b30b
movq 0x168(%rsp), %rdi
callq 0x8a4d0
xorl %eax, %eax
movl %eax, %edi
callq 0x89ac0
movq %rax, 0x168(%rsp)
movq 0x118(%rsp), %rdi
callq 0x765c0
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rcx
movslq 0x150(%rsp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x37(%rsp)
jae 0x8b5b3
cmpl $0x0, 0x154(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x8b5c0
jmp 0x8b656
movslq 0x144(%rsp), %rdi
callq 0x8c3c0
movq %rax, 0xa0(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
movslq 0x140(%rsp), %rdi
callq 0x8c3c0
movq 0x18(%rsp), %rdx
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq %rax, %rdx
callq 0x89a50
movq %rax, 0x98(%rsp)
movq 0x168(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0x8a190
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8b587
jmp 0x8b658
cmpl $0x0, 0x154(%rsp)
jne 0x8b6ba
movq 0x168(%rsp), %rdi
callq 0x89b30
movslq 0x150(%rsp), %rcx
cmpq %rcx, %rax
je 0x8b6b8
movq 0x170(%rsp), %rdi
leaq 0xd4aec(%rip), %rsi     # 0x160177
leaq 0xe367d(%rip), %rdx     # 0x16ed0f
leaq 0xe36a2(%rip), %rcx     # 0x16ed3b
leaq 0xe3519(%rip), %r8      # 0x16ebb9
movl $0x296, %r9d            # imm = 0x296
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b6ba
jmp 0x8b6bc
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x110(%rsp)
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rcx
movslq 0x150(%rsp), %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x17(%rsp)
jae 0x8b706
cmpl $0x0, 0x154(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x8b713
jmp 0x8ba41
movq $0x0, 0x78(%rsp)
movq 0x168(%rsp), %rdi
movq 0x168(%rsp), %rax
movq (%rax), %rsi
movl 0x144(%rsp), %eax
addl 0x140(%rsp), %eax
movslq %eax, %r8
movq 0x110(%rsp), %r9
leaq 0x3f1(%rip), %rdx       # 0x8bb40
xorl %eax, %eax
movl %eax, %ecx
callq 0x89fa0
movq 0x110(%rsp), %rdi
callq 0x76490
movq %rax, %rdi
subq $0x1, %rdi
callq 0x8c3c0
movq %rax, 0x90(%rsp)
movq 0x110(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x78(%rsp)
cmpl $0x0, 0x154(%rsp)
jne 0x8b7e6
cmpq $0x0, 0x78(%rsp)
jne 0x8b7e4
movq 0x170(%rsp), %rdi
leaq 0xd49c0(%rip), %rsi     # 0x160177
leaq 0xe35dc(%rip), %rdx     # 0x16ed9a
leaq 0xe3576(%rip), %rcx     # 0x16ed3b
leaq 0xe33ed(%rip), %r8      # 0x16ebb9
movl $0x2a4, %r9d            # imm = 0x2A4
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b7e6
jmp 0x8b7e8
movq 0x78(%rsp), %rdi
callq 0x89b80
movq %rax, 0x80(%rsp)
movq 0x168(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x8a630
movq 0x110(%rsp), %rdi
callq 0x765c0
cmpl $0x0, 0x154(%rsp)
jne 0x8b88a
movq 0x168(%rsp), %rdi
callq 0x89b30
movslq 0x150(%rsp), %rcx
movq 0x158(%rsp), %rdx
addq $0x1, %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
je 0x8b888
movq 0x170(%rsp), %rdi
leaq 0xd491c(%rip), %rsi     # 0x160177
leaq 0xe3545(%rip), %rdx     # 0x16eda7
leaq 0xe34d2(%rip), %rcx     # 0x16ed3b
leaq 0xe3349(%rip), %r8      # 0x16ebb9
movl $0x2aa, %r9d            # imm = 0x2AA
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b88a
jmp 0x8b88c
movq 0x168(%rsp), %rdi
movq 0x168(%rsp), %rax
movq (%rax), %rsi
movl 0x144(%rsp), %eax
addl 0x140(%rsp), %eax
movslq %eax, %r8
movq 0x110(%rsp), %r9
leaq 0x281(%rip), %rdx       # 0x8bb40
xorl %eax, %eax
movl %eax, %ecx
callq 0x89fa0
cmpl $0x0, 0x154(%rsp)
jne 0x8b939
movq 0x110(%rsp), %rdi
callq 0x76490
movslq 0x150(%rsp), %rcx
movq 0x158(%rsp), %rdx
addq $0x1, %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
je 0x8b937
movq 0x170(%rsp), %rdi
leaq 0xd486d(%rip), %rsi     # 0x160177
leaq 0xe34ca(%rip), %rdx     # 0x16eddb
leaq 0xe3423(%rip), %rcx     # 0x16ed3b
leaq 0xe329a(%rip), %r8      # 0x16ebb9
movl $0x2ad, %r9d            # imm = 0x2AD
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8b939
jmp 0x8b93b
movq $0x0, 0x88(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x154(%rsp)
movb %al, 0x16(%rsp)
jne 0x8b983
movq 0x88(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x110(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
setb %al
movb %al, 0x16(%rsp)
movb 0x16(%rsp), %al
testb $0x1, %al
jne 0x8b990
jmp 0x8ba26
movq 0x110(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x70(%rsp)
cmpl $0x0, 0x154(%rsp)
jne 0x8ba09
movq 0x70(%rsp), %rdi
callq 0x89b80
cmpq 0x80(%rsp), %rax
jne 0x8ba07
movq 0x170(%rsp), %rdi
leaq 0xd479d(%rip), %rsi     # 0x160177
leaq 0xe3428(%rip), %rdx     # 0x16ee09
leaq 0xe3353(%rip), %rcx     # 0x16ed3b
leaq 0xe31ca(%rip), %r8      # 0x16ebb9
movl $0x2b1, %r9d            # imm = 0x2B1
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x8ba09
jmp 0x8ba0b
jmp 0x8ba0d
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x8b947
jmp 0x8ba28
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x8b6da
movq 0x118(%rsp), %rdi
callq 0x770a0
movq 0x110(%rsp), %rdi
callq 0x770a0
movq 0x168(%rsp), %rdi
callq 0x8a4d0
movl 0x154(%rsp), %eax
addq $0x178, %rsp            # imm = 0x178
retq
nopw (%rax,%rax)