// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/core/dlist.c
// Function: gt_dlist_unit_test
int gt_dlist_unit_test(GtError *err)
{
  GtDlist *dlist;
  GtDlistelem *dlistelem;
  int i, j, size, *data,
      elem_a = 7,
      elem_b = 6,
      elems[MAX_SIZE],
      elems_backup[MAX_SIZE],
      had_err = 0;
  gt_error_check(err);

  /* boundary case: empty dlist */
  dlist = gt_dlist_new(intcompare);
  gt_ensure(!gt_dlist_size(dlist));
  gt_dlist_delete(dlist);

  dlist = gt_dlist_new(NULL);
  gt_ensure(!gt_dlist_size(dlist));
  gt_dlist_delete(dlist);

  /* boundary case: dlist containing one element */
  dlist = gt_dlist_new(intcompare);
  gt_dlist_add(dlist, &elem_a);
  gt_ensure(gt_dlist_size(dlist) == 1);
  gt_ensure(
         elem_a == *(int*) gt_dlistelem_get_data(gt_dlist_first(dlist)));
  gt_dlist_delete(dlist);

  dlist = gt_dlist_new(NULL);
  gt_dlist_add(dlist, &elem_a);
  gt_ensure(gt_dlist_size(dlist) == 1);
  gt_ensure(
         elem_a == *(int*) gt_dlistelem_get_data(gt_dlist_first(dlist)));
  gt_dlist_delete(dlist);

  /* boundary case: dlist containing two elements */
  dlist = gt_dlist_new(intcompare);
  gt_dlist_add(dlist, &elem_a);
  gt_dlist_add(dlist, &elem_b);
  gt_ensure(gt_dlist_size(dlist) == 2);
  gt_ensure(
         elem_b == *(int*) gt_dlistelem_get_data(gt_dlist_first(dlist)));
  gt_dlist_delete(dlist);

  dlist = gt_dlist_new(NULL);
  gt_dlist_add(dlist, &elem_a);
  gt_dlist_add(dlist, &elem_b);
  gt_ensure(gt_dlist_size(dlist) == 2);
  gt_ensure(
         elem_a == *(int*) gt_dlistelem_get_data(gt_dlist_first(dlist)));
  gt_dlist_delete(dlist);

  for (i = 0; i < NUM_OF_TESTS && !had_err; i++) {
    /* construct the random elements for the list */
    size = gt_rand_max(MAX_SIZE);
    for (j = 0; j < size; j++) {
      elems[j] = gt_rand_max(INT_MAX);
      elems_backup[j] = elems[j];
    }

    /* sort the backup elements */
    qsort(elems_backup, size, sizeof (int), intcompare);

    /* test with compare function */
    dlist = gt_dlist_new(intcompare);
    gt_ensure(!gt_dlist_size(dlist));
    for (j = 0; j < size && !had_err; j++) {
      gt_dlist_add(dlist, elems + j);
      gt_ensure(gt_dlist_size(dlist) == j+1);

      for (dlistelem = gt_dlist_first(dlist); dlistelem != NULL;
           dlistelem = gt_dlistelem_next(dlistelem)) {
      }
    }
    j = 0;
    for (dlistelem = gt_dlist_first(dlist); dlistelem != NULL;
         dlistelem = gt_dlistelem_next(dlistelem)) {
      data = gt_dlistelem_get_data(dlistelem);
      gt_ensure(*data == elems_backup[j]);
      j++;
    }
    /* test gt_dlist_find() */
    for (j = 0; j < size; j++) {
      dlistelem = gt_dlist_find(dlist, elems_backup + j);
      gt_ensure(dlistelem);
      gt_ensure(
             *(int*) gt_dlistelem_get_data(dlistelem) == elems_backup[j]);
    }
    /* remove first element */
    if (gt_dlist_size(dlist)) {
      gt_dlist_remove(dlist, gt_dlist_first(dlist));
      if (gt_dlist_size(dlist)) {
        data = gt_dlistelem_get_data(gt_dlist_first(dlist));
        gt_ensure(*data == elems_backup[1]);
      }
    }
    /* remove last element */
    if (gt_dlist_size(dlist)) {
      gt_dlist_remove(dlist, gt_dlist_last(dlist));
      if (gt_dlist_size(dlist)) {
        data = gt_dlistelem_get_data(gt_dlist_last(dlist));
        gt_ensure(*data == elems_backup[size - 2]);
      }
    }
    /* XXX: fix this */
#if 0
    /* remove middle element */
    if (gt_dlist_size(dlist) >= 2) {
      dlistelem = gt_dlist_first(dlist);
      for (j = 1; j < gt_dlist_size(dlist) / 2; j++)
        dlistelem = gt_dlistelem_next(dlistelem);
      gt_dlist_remove(dlist, dlistelem);
      dlistelem = gt_dlist_first(dlist);
      for (j = 1; j < gt_dlist_size(dlist) / 2 + 1; j++)
        dlistelem = gt_dlistelem_next(dlistelem);
      data = gt_dlistelem_get_data(gt_dlist_last(dlist));
      gt_ensure(*data == elems_backup[size / 2 + 1]);
    }
#endif
    gt_dlist_delete(dlist);

    /* test without compare function */
    dlist = gt_dlist_new(NULL);
    gt_ensure(!gt_dlist_size(dlist));
    for (j = 0; j < size && !had_err; j++) {
      gt_dlist_add(dlist, elems + j);
      gt_ensure(gt_dlist_size(dlist) == j+1);
    }
    j = 0;
    for (dlistelem = gt_dlist_first(dlist); dlistelem != NULL;
         dlistelem = gt_dlistelem_next(dlistelem)) {
      data = gt_dlistelem_get_data(dlistelem);
      gt_assert(j < MAX_SIZE);
      gt_ensure(*data == elems[j]);
      j++;
    }
    /* remove first element */
    if (gt_dlist_size(dlist)) {
      gt_dlist_remove(dlist, gt_dlist_first(dlist));
      if (gt_dlist_size(dlist)) {
        data = gt_dlistelem_get_data(gt_dlist_first(dlist));
        gt_ensure(*data == elems[1]);
      }
    }
    /* remove last element */
    if (gt_dlist_size(dlist)) {
      gt_dlist_remove(dlist, gt_dlist_last(dlist));
      if (gt_dlist_size(dlist)) {
        data = gt_dlistelem_get_data(gt_dlist_last(dlist));
        gt_ensure(*data == elems[size - 2]);
      }
    }
    gt_dlist_delete(dlist);
  }

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2028, %rsp           # imm = 0x2028
movq %rdi, %r12
movl $0x7, (%rsp)
movl $0x6, 0x4(%rsp)
testq %rdi, %rdi
je 0x50c9c
movq %r12, %rdi
callq 0xc103
testb %al, %al
jne 0x5162b
leaq 0x9b6(%rip), %rdi       # 0x51659
callq 0x50580
movq %rax, %r14
movb $0x1, %bpl
testq %rax, %rax
je 0x50ce8
cmpq $0x0, 0x20(%r14)
je 0x50ce8
leaq 0x7b498(%rip), %rsi     # 0xcc159
leaq 0x88926(%rip), %rdx     # 0xd95ee
leaq 0x8890c(%rip), %rcx     # 0xd95db
leaq 0x8879e(%rip), %r8      # 0xd9474
xorl %ebp, %ebp
movq %r12, %rdi
movl $0xdc, %r9d
xorl %eax, %eax
callq 0xc007
movq %r14, %rdi
callq 0x50c04
xorl %ebx, %ebx
xorl %edi, %edi
callq 0x50580
movq %rax, %r14
testb %bpl, %bpl
je 0x50d3d
movb $0x1, %bl
testq %r14, %r14
je 0x50d3d
cmpq $0x0, 0x20(%r14)
je 0x50d3d
leaq 0x7b443(%rip), %rsi     # 0xcc159
leaq 0x888d1(%rip), %rdx     # 0xd95ee
leaq 0x888b7(%rip), %rcx     # 0xd95db
leaq 0x88749(%rip), %r8      # 0xd9474
xorl %ebx, %ebx
movq %r12, %rdi
movl $0xe0, %r9d
xorl %eax, %eax
callq 0xc007
movq %r14, %rdi
callq 0x50c04
leaq 0x90d(%rip), %rdi       # 0x51659
callq 0x50580
movq %rax, %r14
movq %rsp, %rsi
movq %rax, %rdi
callq 0x5077a
testb %bl, %bl
je 0x50db2
testq %r14, %r14
je 0x50db6
cmpq $0x1, 0x20(%r14)
jne 0x50db6
movl (%rsp), %ebx
movq %r14, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
movb $0x1, %bpl
cmpl (%rax), %ebx
je 0x50de4
leaq 0x7b3c9(%rip), %rsi     # 0xcc159
leaq 0x88887(%rip), %rdx     # 0xd961e
leaq 0x8883d(%rip), %rcx     # 0xd95db
leaq 0x886cf(%rip), %r8      # 0xd9474
xorl %ebp, %ebp
movq %r12, %rdi
movl $0xe8, %r9d
jmp 0x50ddd
xorl %ebp, %ebp
jmp 0x50de4
leaq 0x7b39c(%rip), %rsi     # 0xcc159
leaq 0x88840(%rip), %rdx     # 0xd9604
leaq 0x88810(%rip), %rcx     # 0xd95db
leaq 0x886a2(%rip), %r8      # 0xd9474
xorl %ebp, %ebp
movq %r12, %rdi
movl $0xe6, %r9d
xorl %eax, %eax
callq 0xc007
movq %r14, %rdi
callq 0x50c04
xorl %ebx, %ebx
xorl %edi, %edi
callq 0x50580
movq %rax, %r14
movq %rsp, %rsi
movq %rax, %rdi
callq 0x5077a
testb %bpl, %bpl
je 0x50e84
testq %r14, %r14
je 0x50e56
cmpq $0x1, 0x20(%r14)
jne 0x50e56
movl (%rsp), %ebp
movq %r14, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
movb $0x1, %bl
cmpl (%rax), %ebp
je 0x50e84
leaq 0x7b325(%rip), %rsi     # 0xcc159
leaq 0x887e3(%rip), %rdx     # 0xd961e
leaq 0x88799(%rip), %rcx     # 0xd95db
leaq 0x8862b(%rip), %r8      # 0xd9474
xorl %ebx, %ebx
movq %r12, %rdi
movl $0xef, %r9d
jmp 0x50e7d
leaq 0x7b2fc(%rip), %rsi     # 0xcc159
leaq 0x887a0(%rip), %rdx     # 0xd9604
leaq 0x88770(%rip), %rcx     # 0xd95db
leaq 0x88602(%rip), %r8      # 0xd9474
xorl %ebx, %ebx
movq %r12, %rdi
movl $0xed, %r9d
xorl %eax, %eax
callq 0xc007
movq %r14, %rdi
callq 0x50c04
leaq 0x7c6(%rip), %rdi       # 0x51659
callq 0x50580
movq %rax, %r14
movq %rsp, %rsi
movq %rax, %rdi
callq 0x5077a
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0x5077a
testb %bl, %bl
je 0x50f06
testq %r14, %r14
je 0x50f0a
cmpq $0x2, 0x20(%r14)
jne 0x50f0a
movl 0x4(%rsp), %ebp
movq %r14, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
movb $0x1, %bl
cmpl (%rax), %ebp
je 0x50f38
leaq 0x7b275(%rip), %rsi     # 0xcc159
leaq 0x8878c(%rip), %rdx     # 0xd9677
leaq 0x886e9(%rip), %rcx     # 0xd95db
leaq 0x8857b(%rip), %r8      # 0xd9474
xorl %ebx, %ebx
movq %r12, %rdi
movl $0xf8, %r9d
jmp 0x50f31
xorl %ebx, %ebx
jmp 0x50f38
leaq 0x7b248(%rip), %rsi     # 0xcc159
leaq 0x88745(%rip), %rdx     # 0xd965d
leaq 0x886bc(%rip), %rcx     # 0xd95db
leaq 0x8854e(%rip), %r8      # 0xd9474
xorl %ebx, %ebx
movq %r12, %rdi
movl $0xf6, %r9d
xorl %eax, %eax
callq 0xc007
movq %r14, %rdi
callq 0x50c04
xorl %edi, %edi
callq 0x50580
movq %rax, %r14
movq %rsp, %rsi
movq %rax, %rdi
callq 0x5077a
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0x5077a
pushq $-0x1
popq %rbp
testb %bl, %bl
je 0x50fe4
testq %r14, %r14
je 0x50fb5
cmpq $0x2, 0x20(%r14)
jne 0x50fb5
movl (%rsp), %ebx
movq %r14, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
xorl %ebp, %ebp
cmpl (%rax), %ebx
je 0x50fe4
leaq 0x7b1c4(%rip), %rsi     # 0xcc159
leaq 0x88682(%rip), %rdx     # 0xd961e
leaq 0x88638(%rip), %rcx     # 0xd95db
leaq 0x884ca(%rip), %r8      # 0xd9474
movq %r12, %rdi
movl $0x100, %r9d            # imm = 0x100
jmp 0x50fda
leaq 0x7b19d(%rip), %rsi     # 0xcc159
leaq 0x8869a(%rip), %rdx     # 0xd965d
leaq 0x88611(%rip), %rcx     # 0xd95db
leaq 0x884a3(%rip), %r8      # 0xd9474
movq %r12, %rdi
movl $0xfe, %r9d
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
movq %r14, %rdi
callq 0x50c04
xorl %r14d, %r14d
movq %r12, 0x8(%rsp)
cmpl $0x63, %r14d
ja 0x515df
testl %ebp, %ebp
jne 0x515df
movl %r14d, 0x14(%rsp)
movl $0x400, %edi            # imm = 0x400
callq 0x58dd2
movq %rax, %rbp
movl %ebp, %r14d
testl %ebp, %ebp
movl $0x0, %ebx
cmovgl %ebp, %ebx
xorl %r15d, %r15d
cmpq %r15, %rbx
je 0x51049
movl $0x7fffffff, %edi       # imm = 0x7FFFFFFF
callq 0x58dd2
movl %eax, 0x1020(%rsp,%r15,4)
movl %eax, 0x20(%rsp,%r15,4)
incq %r15
jmp 0x51028
movslq %ebp, %rsi
leaq 0x20(%rsp), %rdi
pushq $0x4
popq %rdx
leaq 0x5fe(%rip), %r15       # 0x51659
movq %r15, %rcx
callq 0xbc70
movq %r15, %rdi
callq 0x50580
movq %rax, %r15
xorl %r13d, %r13d
movl $0x0, %r12d
testq %rax, %rax
je 0x510b5
cmpq $0x0, 0x20(%r15)
je 0x510b5
movq 0x8(%rsp), %rdi
leaq 0x7b0ca(%rip), %rsi     # 0xcc159
leaq 0x88558(%rip), %rdx     # 0xd95ee
leaq 0x8853e(%rip), %rcx     # 0xd95db
leaq 0x883d0(%rip), %r8      # 0xd9474
movl $0x110, %r9d            # imm = 0x110
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
shlq $0x20, %rbp
cmpl %r14d, %r13d
jge 0x51126
testl %r12d, %r12d
jne 0x51126
movl %r13d, %eax
leaq (%rsp,%rax,4), %rsi
addq $0x1020, %rsi           # imm = 0x1020
movq %r15, %rdi
callq 0x5077a
incl %r13d
testq %r15, %r15
je 0x510ea
xorl %r12d, %r12d
cmpq %r13, 0x20(%r15)
je 0x5111c
movq 0x8(%rsp), %rdi
leaq 0x7b063(%rip), %rsi     # 0xcc159
leaq 0x885b9(%rip), %rdx     # 0xd96b6
leaq 0x884d7(%rip), %rcx     # 0xd95db
leaq 0x88369(%rip), %r8      # 0xd9474
movl $0x113, %r9d            # imm = 0x113
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
movq %r15, %rdi
callq 0x505e0
jmp 0x510b9
movq %rbp, 0x18(%rsp)
movq %r15, %rdi
callq 0x505e0
movq %rax, %r13
leaq 0x20(%rsp), %rbp
testq %r13, %r13
je 0x51193
testl %r12d, %r12d
pushq $-0x1
popq %r12
jne 0x51189
movq 0x10(%r13), %rax
movl (%rax), %eax
xorl %r12d, %r12d
cmpl (%rbp), %eax
je 0x51189
movq 0x8(%rsp), %rdi
leaq 0x7aff6(%rip), %rsi     # 0xcc159
leaq 0x88568(%rip), %rdx     # 0xd96d2
leaq 0x8846a(%rip), %rcx     # 0xd95db
leaq 0x882fc(%rip), %r8      # 0xd9474
movl $0x11d, %r9d            # imm = 0x11D
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
movq 0x8(%r13), %r13
addq $0x4, %rbp
jmp 0x5113b
leaq 0x20(%rsp), %rbp
movq 0x8(%rsp), %r13
subq $0x1, %rbx
jb 0x5123d
movq %r15, %rdi
movq %rbp, %rsi
callq 0x50662
testl %r12d, %r12d
setne %cl
testq %rax, %rax
setne %dl
orb %cl, %dl
je 0x51204
testl %r12d, %r12d
pushq $-0x1
popq %r12
jne 0x51234
movq %rax, %rdi
callq 0x506e7
movl (%rax), %eax
xorl %r12d, %r12d
cmpl (%rbp), %eax
je 0x51234
movq %r13, %rdi
leaq 0x7af72(%rip), %rsi     # 0xcc159
leaq 0x884fd(%rip), %rdx     # 0xd96eb
leaq 0x883e6(%rip), %rcx     # 0xd95db
leaq 0x88278(%rip), %r8      # 0xd9474
movl $0x125, %r9d            # imm = 0x125
jmp 0x51229
movq %r13, %rdi
leaq 0x7af4b(%rip), %rsi     # 0xcc159
leaq 0x88321(%rip), %rdx     # 0xd9536
leaq 0x883bf(%rip), %rcx     # 0xd95db
leaq 0x88251(%rip), %r8      # 0xd9474
movl $0x123, %r9d            # imm = 0x123
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
addq $0x4, %rbp
jmp 0x5119d
testq %r15, %r15
je 0x5135a
cmpq $0x0, 0x20(%r15)
je 0x5135a
movq %r15, %rdi
callq 0x505e0
movq %r15, %rdi
movq %rax, %rsi
callq 0x50a5d
cmpq $0x0, 0x20(%r15)
je 0x5135a
movq %r15, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
xorl %ebx, %ebx
testl %r12d, %r12d
pushq $-0x1
popq %r12
jne 0x512cc
movl (%rax), %eax
movb $0x1, %bl
movl $0x0, %r12d
cmpl 0x24(%rsp), %eax
je 0x512cc
xorl %ebx, %ebx
movq %r13, %rdi
leaq 0x7aeb3(%rip), %rsi     # 0xcc159
leaq 0x8847a(%rip), %rdx     # 0xd9727
leaq 0x88327(%rip), %rcx     # 0xd95db
leaq 0x881b9(%rip), %r8      # 0xd9474
movl $0x12c, %r9d            # imm = 0x12C
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
cmpq $0x0, 0x20(%r15)
je 0x5135a
movq %r15, %rdi
callq 0x50621
movq %r15, %rdi
movq %rax, %rsi
callq 0x50a5d
cmpq $0x0, 0x20(%r15)
je 0x5135a
movq %r15, %rdi
callq 0x50621
movq %rax, %rdi
callq 0x506e7
pushq $-0x1
popq %r12
testb %bl, %bl
je 0x5135a
movl (%rax), %eax
movabsq $-0x200000000, %rcx     # imm = 0xFFFFFFFE00000000
movq 0x18(%rsp), %rdx
addq %rdx, %rcx
sarq $0x1e, %rcx
xorl %r12d, %r12d
cmpl 0x20(%rsp,%rcx), %eax
je 0x5135a
movq %r13, %rdi
leaq 0x7ae25(%rip), %rsi     # 0xcc159
leaq 0x88405(%rip), %rdx     # 0xd9740
leaq 0x88299(%rip), %rcx     # 0xd95db
leaq 0x8812b(%rip), %r8      # 0xd9474
movl $0x134, %r9d            # imm = 0x134
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %r12
movq %r15, %rdi
callq 0x50c04
xorl %edi, %edi
callq 0x50580
movq %rax, %r15
pushq $-0x1
popq %rbp
testl %r12d, %r12d
je 0x51580
xorl %ebx, %ebx
cmpl %r14d, %ebx
jge 0x513d8
testl %ebp, %ebp
jne 0x513d8
movl %ebx, %eax
leaq (%rsp,%rax,4), %rsi
addq $0x1020, %rsi           # imm = 0x1020
movq %r15, %rdi
callq 0x5077a
incl %ebx
testq %r15, %r15
je 0x513a7
xorl %ebp, %ebp
cmpq %rbx, 0x20(%r15)
je 0x5137a
movq %r13, %rdi
leaq 0x7ada8(%rip), %rsi     # 0xcc159
leaq 0x882fe(%rip), %rdx     # 0xd96b6
leaq 0x8821c(%rip), %rcx     # 0xd95db
leaq 0x880ae(%rip), %r8      # 0xd9474
movl $0x14d, %r9d            # imm = 0x14D
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
jmp 0x5137a
movq %r15, %rdi
callq 0x505e0
movq %rax, %r13
xorl %ebx, %ebx
leaq 0x88381(%rip), %r14     # 0xd976d
testq %r13, %r13
je 0x5144c
cmpq $0x400, %rbx            # imm = 0x400
je 0x515f3
testl %ebp, %ebp
pushq $-0x1
popq %rbp
jne 0x51443
movq 0x10(%r13), %rax
movl (%rax), %eax
xorl %ebp, %ebp
cmpl 0x1020(%rsp,%rbx,4), %eax
je 0x51443
movq 0x8(%rsp), %rdi
leaq 0x7ad37(%rip), %rsi     # 0xcc159
movq %r14, %rdx
leaq 0x881af(%rip), %rcx     # 0xd95db
leaq 0x88041(%rip), %r8      # 0xd9474
movl $0x154, %r9d            # imm = 0x154
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
incq %rbx
movq 0x8(%r13), %r13
jmp 0x513ec
testq %r15, %r15
je 0x515ca
cmpq $0x0, 0x20(%r15)
movq 0x8(%rsp), %r12
movl 0x14(%rsp), %r14d
je 0x515cf
movq %r15, %rdi
callq 0x505e0
movq %r15, %rdi
movq %rax, %rsi
callq 0x50a5d
cmpq $0x0, 0x20(%r15)
je 0x515cf
movq %r15, %rdi
callq 0x505e0
movq %rax, %rdi
callq 0x506e7
xorl %ebx, %ebx
testl %ebp, %ebp
pushq $-0x1
popq %rbp
jne 0x514e4
movl (%rax), %eax
movb $0x1, %bl
movl $0x0, %ebp
cmpl 0x1024(%rsp), %eax
je 0x514e4
xorl %ebx, %ebx
movq %r12, %rdi
leaq 0x7ac9a(%rip), %rsi     # 0xcc159
leaq 0x882b9(%rip), %rdx     # 0xd977f
leaq 0x8810e(%rip), %rcx     # 0xd95db
leaq 0x87fa0(%rip), %r8      # 0xd9474
movl $0x15c, %r9d            # imm = 0x15C
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
cmpq $0x0, 0x20(%r15)
je 0x515cf
movq %r15, %rdi
callq 0x50621
movq %r15, %rdi
movq %rax, %rsi
callq 0x50a5d
cmpq $0x0, 0x20(%r15)
je 0x515cf
movq %r15, %rdi
callq 0x50621
movq %rax, %rdi
callq 0x506e7
pushq $-0x1
popq %rbp
testb %bl, %bl
je 0x515cf
movl (%rax), %eax
movabsq $-0x200000000, %rcx     # imm = 0xFFFFFFFE00000000
movq 0x18(%rsp), %rdx
addq %rcx, %rdx
sarq $0x1e, %rdx
xorl %ebp, %ebp
cmpl 0x1020(%rsp,%rdx), %eax
je 0x515cf
movq %r12, %rdi
leaq 0x7ac00(%rip), %rsi     # 0xcc159
leaq 0x88231(%rip), %rdx     # 0xd9791
leaq 0x88074(%rip), %rcx     # 0xd95db
leaq 0x87f06(%rip), %r8      # 0xd9474
movl $0x164, %r9d            # imm = 0x164
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
jmp 0x515cf
xorl %ebp, %ebp
testq %r15, %r15
je 0x51378
cmpq $0x0, 0x20(%r15)
je 0x51378
movq %r13, %rdi
leaq 0x7abb9(%rip), %rsi     # 0xcc159
leaq 0x88047(%rip), %rdx     # 0xd95ee
leaq 0x8802d(%rip), %rcx     # 0xd95db
leaq 0x87ebf(%rip), %r8      # 0xd9474
movl $0x14a, %r9d            # imm = 0x14A
xorl %eax, %eax
callq 0xc007
pushq $-0x1
popq %rbp
jmp 0x51378
movl 0x14(%rsp), %r14d
movq %r15, %rdi
callq 0x50c04
incl %r14d
jmp 0x50ff4
movl %ebp, %eax
addq $0x2028, %rsp           # imm = 0x2028
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xdc9be(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x78a62(%rip), %rsi     # 0xca066
leaq 0x88155(%rip), %rdx     # 0xd9760
leaq 0x87fc9(%rip), %rcx     # 0xd95db
leaq 0x87e5b(%rip), %r8      # 0xd9474
movl $0x153, %r9d            # imm = 0x153
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
movq 0xdc986(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x78a2a(%rip), %rsi     # 0xca066
leaq 0x79016(%rip), %rdx     # 0xca659
leaq 0x87f91(%rip), %rcx     # 0xd95db
leaq 0x87e23(%rip), %r8      # 0xd9474
movl $0xd8, %r9d
jmp 0x5161f