// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_sortbench.c
// Function: gt_sortbench_runner
static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
                                GT_UNUSED int parsed_args,
                                void *tool_arguments, GT_UNUSED GtError *err)
{
  QSortBenchArguments *arguments = tool_arguments;
  int had_err = 0;
  size_t method;
  GtTimer *timer;
  GtUword *array = NULL, *array_copy = NULL, idx, r;
  Gtuint64keyPair *arraykeypair = NULL, *arraykeypair_copy = NULL;
  uint8_t *flba = NULL;
  size_t flba_unitsize = 0;

  gt_error_check(err);
  gt_assert(arguments);
  if (arguments->verbose) {
    printf("# number of items = "GT_WU"\n", arguments->num_values);
    printf("# max value items = "GT_WU"\n", arguments->maxvalue);
    printf("# implementation = %s\n", gt_str_get(arguments->impl));
  }

  /* prepare benchmark input data */
  if (strcmp(gt_str_get(arguments->impl),"radixkeypair") == 0)
  {
    arraykeypair = gt_malloc(sizeof (*arraykeypair) * arguments->num_values);
  } else
  {
    bool alloc_array;
    if (strcmp(gt_str_get(arguments->impl),"radixflba") == 0)
    {
      size_t bits = gt_radixsort_bits(arguments->maxvalue);
      flba_unitsize = gt_radixsort_bits2bytes(bits);
      flba = gt_malloc(sizeof (*flba) * arguments->num_values * flba_unitsize);
      alloc_array = arguments->verify;
    } else
    {
      alloc_array = true;
    }
    if (alloc_array)
    {
      array = gt_malloc(sizeof (*array) * arguments->num_values);
    }
  }
  if (arguments->use_aqsort)
  {
    if (arguments->verbose)
    {
      printf("# using aqsort\n");
    }
    gt_assert(array != NULL);
    gt_sortbench_aqsort(arguments->num_values, array);
  } else
  {
    if (arguments->use_permute)
    {
      if (arguments->verbose)
      {
        printf("# using permuted array\n");
      }
      gt_assert(array != NULL);
      for (idx = 0; idx < arguments->num_values; idx++)
      {
        array[idx] = idx;
      }
      gt_qbenchsort_permute_ulong_array(array, arguments->num_values);
    } else
    {
      if (arguments->verbose)
      {
        printf("# using simple array of random numbers\n");
      }
      if (arraykeypair != NULL)
      {
        for (idx = 0; idx < arguments->num_values; idx++)
        {
          arraykeypair[idx].uint64_a = random() % (arguments->maxvalue+1);
          arraykeypair[idx].uint64_b = random() % (arguments->maxvalue+1);
        }
      } else
      {
        if (flba != NULL)
        {
          uint8_t *flba_buffer = gt_malloc(sizeof *flba_buffer * flba_unitsize);
          gt_assert(!arguments->verify || array != NULL);
          for (idx = 0; idx < arguments->num_values; idx++)
          {
            GtUword value = (GtUword) (random() % (arguments->maxvalue+1));
            gt_uword2flba(flba_buffer,value,flba_unitsize);
            memcpy(flba + idx * flba_unitsize,flba_buffer,flba_unitsize);
            if (arguments->verify)
            {
              array[idx] = value;
            }
          }
          gt_free(flba_buffer);
        } else
        {
          gt_assert(array != NULL);
          for (idx = 0; idx < arguments->num_values; idx++)
          {
            array[idx] = random() % (arguments->maxvalue+1);
          }
        }
      }
    }
  }
  if (arguments->verify)
  {
    if (arraykeypair != NULL)
    {
      arraykeypair_copy = gt_malloc(sizeof (*arraykeypair_copy) *
                                    arguments->num_values);
      for (idx = 0; idx < arguments->num_values; idx++)
      {
        arraykeypair_copy[idx] = arraykeypair[idx];
      }
      qsort(arraykeypair_copy,(size_t) arguments->num_values,
            sizeof *arraykeypair_copy,
            voidkeypairqsortcmp);
    } else
    {
      if (flba != NULL)
      {
        gt_assert(array != NULL);
        qsort(array,(size_t) arguments->num_values,sizeof *array,voidqsortcmp);
      } else
      {
        array_copy = gt_malloc(sizeof (*array_copy) * arguments->num_values);
        gt_assert(array != NULL);
        for (idx = 0; idx < arguments->num_values; idx++)
        {
          array_copy[idx] = array[idx];
        }
        qsort(array_copy,(size_t) arguments->num_values,sizeof *array_copy,
              voidqsortcmp);
      }
    }
  }
  timer = gt_timer_new();
  gt_timer_start(timer);
  /* run implementation */
  if (arraykeypair != NULL)
  {
    for (r = 0; r < arguments->runs; r++)
    {
      gt_radixsort_inplace_Gtuint64keyPair(arraykeypair,arguments->num_values);
    }
  } else
  {
    if (flba != NULL)
    {
      gt_assert(flba_unitsize > 0);
      gt_radixsort_inplace_flba(flba,arguments->num_values,flba_unitsize);
    } else
    {
      for (method = 0; method < GT_NUM_OF_SORT_IMPLEMENTATIONS; method++)
      {
        if (strcmp(gt_str_get(arguments->impl),
                   gt_sort_implementation_names[method]) == 0)
        {
          for (r = 0; r < arguments->runs; r++)
          {
            gt_assert(array != NULL && arraykeypair == NULL);
            gt_assert(method < GT_NUM_OF_SORT_IMPLEMENTATIONS);
            gt_sort_implementation_funcs[method](array, arguments->num_values);
          }
          break;
        }
      }
    }
  }
  printf("# TIME %s-t%u-r" GT_WU "-n" GT_WU " overall ",
          gt_str_get(arguments->impl),
#ifdef GT_THREADS_ENABLED
          gt_jobs,
#else
          1U,
#endif
          arguments->runs,arguments->num_values);
  gt_timer_show_formatted(timer,GT_WD ".%02ld\n",stdout);
  gt_timer_delete(timer);
  if (arguments->verify)
  {
    if (arraykeypair != NULL)
    {
      gt_sortbench_verify_keypair(arraykeypair,arraykeypair_copy,
                                  arguments->num_values);
    } else
    {
      if (flba != NULL)
      {
        gt_assert(array != NULL);
        gt_sortbench_verify_flba(flba,array,arguments->num_values,
                                 flba_unitsize);
      } else
      {
        gt_sortbench_verify(array,array_copy,arguments->num_values);
      }
    }
  }
  gt_free(flba);
  gt_free(array);
  gt_free(array_copy);
  gt_free(arraykeypair);
  gt_free(arraykeypair_copy);
  if (cmpcount > 0)
  {
    printf("cmpcount = "GT_WU"\n",cmpcount);
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rcx, %r12
testq %r8, %r8
je 0xca961
movq %r8, %rdi
callq 0xfcc32
testb %al, %al
jne 0xcb4dd
testq %r12, %r12
je 0xcb4d8
cmpb $0x1, 0x23(%r12)
jne 0xca9b2
movq 0x8(%r12), %rsi
leaq 0x290b02(%rip), %rdi    # 0x35b480
xorl %eax, %eax
callq 0x17070
movq 0x18(%r12), %rsi
leaq 0x290b08(%rip), %rdi    # 0x35b499
xorl %eax, %eax
callq 0x17070
movq (%r12), %rdi
callq 0x11b0a1
leaq 0x290b0a(%rip), %rdi    # 0x35b4b2
movq %rax, %rsi
xorl %eax, %eax
callq 0x17070
movq (%r12), %rdi
callq 0x11b0a1
leaq 0x290a0c(%rip), %rsi    # 0x35b3ce
movq %rax, %rdi
callq 0x17a40
testl %eax, %eax
je 0xcaa58
movq (%r12), %rdi
callq 0x11b0a1
leaq 0x290a40(%rip), %rsi    # 0x35b422
movq %rax, %rdi
callq 0x17a40
xorl %r13d, %r13d
movl $0x0, %ecx
movq %rcx, 0x10(%rsp)
testl %eax, %eax
jne 0xcaa37
movq 0x18(%r12), %rdi
callq 0x10fea3
movq %rax, %rdi
callq 0x10fef0
movq %rax, %r13
movq %rax, %rdi
imulq 0x8(%r12), %rdi
leaq 0x290700(%rip), %rsi    # 0x35b120
movl $0x25b, %edx            # imm = 0x25B
callq 0x104226
movq %rax, 0x10(%rsp)
cmpb $0x1, 0x22(%r12)
jne 0xcaa83
movq 0x8(%r12), %rdi
shlq $0x3, %rdi
leaq 0x2906d9(%rip), %rsi    # 0x35b120
movl $0x263, %edx            # imm = 0x263
callq 0x104226
movq %rax, %r15
xorl %ebx, %ebx
jmp 0xcaa88
movq 0x8(%r12), %rdi
shlq $0x4, %rdi
leaq 0x2906b8(%rip), %rsi    # 0x35b120
movl $0x253, %edx            # imm = 0x253
callq 0x104226
movq %rax, %rbx
movq $0x0, 0x10(%rsp)
xorl %r13d, %r13d
jmp 0xcaa85
xorl %ebx, %ebx
xorl %r15d, %r15d
cmpb $0x1, 0x20(%r12)
movq %rbx, 0x20(%rsp)
jne 0xcab33
cmpb $0x1, 0x23(%r12)
jne 0xcaaad
leaq 0x290e53(%rip), %rdi    # 0x35b8fb
callq 0x17bd0
testq %r15, %r15
je 0xcb4e2
movq 0x8(%r12), %rbp
leaq (,%rbp,8), %rdi
leaq 0x290656(%rip), %rsi    # 0x35b120
movl $0xde, %edx
callq 0x104226
movq %rax, %rbx
leaq 0x3f3992(%rip), %r14    # 0x4be470
movq %r15, (%r14)
xorl %eax, %eax
movq %rbp, %rcx
leaq 0x3f399b(%rip), %rdx    # 0x4be488
movq %rax, (%rdx)
leaq 0x3f3981(%rip), %rdx    # 0x4be478
movq %rax, (%rdx)
leaq 0x3f397f(%rip), %rdx    # 0x4be480
movq %rax, (%rdx)
leaq 0x3f3985(%rip), %rax    # 0x4be490
subq $0x1, %rcx
movq %rcx, (%rax)
jae 0xcac23
leaq 0xa33(%rip), %rcx       # 0xcb552
movl $0x8, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17f60
jmp 0xcac7f
movb 0x23(%r12), %al
cmpb $0x1, 0x21(%r12)
jne 0xcabac
testb %al, %al
je 0xcab50
leaq 0x290d99(%rip), %rdi    # 0x35b8e4
callq 0x17bd0
testq %r15, %r15
je 0xcb4e7
cmpq $0x0, 0x8(%r12)
je 0xcac93
xorl %eax, %eax
movq %rax, (%r15,%rax,8)
incq %rax
movq 0x8(%r12), %r14
cmpq %r14, %rax
jb 0xcab67
testq %r14, %r14
je 0xcac93
leaq -0x1(%r14), %rbx
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0x105d85
movq (%r15,%rbp,8), %rcx
movq (%r15,%rax,8), %rdx
movq %rdx, (%r15,%rbp,8)
movq %rcx, (%r15,%rax,8)
incq %rbp
cmpq %rbp, %r14
jne 0xcab87
jmp 0xcac93
testb %al, %al
je 0xcabbc
leaq 0x290d06(%rip), %rdi    # 0x35b8bd
callq 0x17bd0
testq %rbx, %rbx
je 0xcae04
cmpq $0x0, 0x8(%r12)
je 0xcac93
movq 0x20(%rsp), %rax
leaq 0x8(%rax), %rbx
xorl %ebp, %ebp
movl $0x7fffffff, %r14d      # imm = 0x7FFFFFFF
callq 0x11fe0c
andl %r14d, %eax
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, -0x8(%rbx)
callq 0x11fe0c
andl %r14d, %eax
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, (%rbx)
incq %rbp
addq $0x10, %rbx
cmpq 0x8(%r12), %rbp
jb 0xcabe2
jmp 0xcac93
xorl %ecx, %ecx
movq %rcx, (%rbx,%rcx,8)
movq (%rax), %rdx
movq %rdx, (%r15,%rcx,8)
incq %rcx
cmpq %rcx, %rbp
jne 0xcac25
leaq 0x913(%rip), %rcx       # 0xcb552
movl $0x8, %edx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x17f60
cmpq $0x1, %rbp
je 0xcac7f
movq (%r14), %rax
movl $0x1, %ecx
movq -0x8(%rbx,%rcx,8), %rdx
movq (%rbx,%rcx,8), %rsi
movq (%rax,%rdx,8), %rdx
incq %rdx
cmpq %rdx, (%rax,%rsi,8)
jne 0xcb497
incq %rcx
cmpq %rcx, %rbp
jne 0xcac5d
leaq 0x29049a(%rip), %rsi    # 0x35b120
movq %rbx, %rdi
movl $0xea, %edx
callq 0x1045eb
cmpb $0x0, 0x22(%r12)
je 0xcacec
movq 0x20(%rsp), %rbx
testq %rbx, %rbx
je 0xcacfe
movq 0x8(%r12), %rdi
shlq $0x4, %rdi
leaq 0x29046b(%rip), %rsi    # 0x35b120
movl $0x2aa, %edx            # imm = 0x2AA
callq 0x104226
movq %rax, %rbp
cmpq $0x0, 0x8(%r12)
je 0xcad30
xorl %eax, %eax
xorl %ecx, %ecx
movdqu (%rbx,%rax), %xmm0
movdqu %xmm0, (%rbp,%rax)
incq %rcx
movq 0x8(%r12), %rsi
addq $0x10, %rax
cmpq %rsi, %rcx
jb 0xcacce
jmp 0xcad32
xorl %ebp, %ebp
movq $0x0, 0x18(%rsp)
movq 0x20(%rsp), %rbx
jmp 0xcad4f
cmpq $0x0, 0x10(%rsp)
je 0xcb41d
testq %r15, %r15
je 0xcb4f6
movq 0x8(%r12), %rsi
leaq 0x81f(%rip), %rcx       # 0xcb53e
movl $0x8, %edx
movq %r15, %rdi
callq 0x17f60
xorl %ebp, %ebp
jmp 0xcad46
xorl %esi, %esi
leaq 0x7db(%rip), %rcx       # 0xcb514
movl $0x10, %edx
movq %rbp, %rdi
callq 0x17f60
movq $0x0, 0x18(%rsp)
callq 0x11c954
movq %rax, %r14
movq %rax, %rdi
callq 0x11c9e3
testq %rbx, %rbx
movq %r15, 0x30(%rsp)
movq %r14, 0x28(%rsp)
je 0xcad9c
cmpq $0x0, 0x10(%r12)
movq %rbx, %r15
je 0xcb15e
xorl %r14d, %r14d
movq 0x8(%r12), %rsi
movq %r15, %rdi
callq 0x10fdcd
incq %r14
cmpq 0x10(%r12), %r14
jb 0xcad80
jmp 0xcb15e
cmpq $0x0, 0x10(%rsp)
je 0xcadc9
testq %r13, %r13
je 0xcb4ec
movq 0x8(%r12), %rsi
movq 0x10(%rsp), %rdi
movq %r13, %rdx
callq 0x10fe0f
movq 0x20(%rsp), %r15
jmp 0xcb15e
xorl %r14d, %r14d
leaq 0x3eebbd(%rip), %rbx    # 0x4b9990
movq 0x20(%rsp), %r15
movq (%r12), %rdi
callq 0x11b0a1
movq (%r14,%rbx), %rsi
movq %rax, %rdi
callq 0x17a40
testl %eax, %eax
je 0xcb11c
addq $0x8, %r14
cmpq $0x40, %r14
jne 0xcadd8
jmp 0xcb15e
cmpq $0x0, 0x10(%rsp)
je 0xcb3ae
leaq 0x290309(%rip), %rsi    # 0x35b120
movq %r13, %rdi
movl $0x28d, %edx            # imm = 0x28D
callq 0x104226
movq %rax, 0x18(%rsp)
cmpb $0x1, 0x22(%r12)
jne 0xcae3a
testq %r15, %r15
je 0xcb505
cmpq $0x0, 0x8(%r12)
je 0xcb106
leal (,%r13,8), %ecx
movq $-0x1, %rax
shlq %cl, %rax
leaq -0x1(%r13), %rcx
xorl %r14d, %r14d
cmpq $0x8, %r13
cmoveq %r14, %rax
movq %rax, 0x80(%rsp)
movq %rcx, 0x28(%rsp)
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm2     # xmm2 = xmm0[0,1,0,1]
movq %r13, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
psllq $0x3, %xmm0
movdqa 0x29020b(%rip), %xmm3   # 0x35b0a0
pshufd $0xa0, %xmm3, %xmm4     # xmm4 = xmm3[0,0,2,2]
pxor 0x28db8e(%rip), %xmm2   # 0x358a30
pshufd $0xa0, %xmm2, %xmm1     # xmm1 = xmm2[0,0,2,2]
pcmpgtd %xmm1, %xmm4
pshufd $0xf5, %xmm3, %xmm5     # xmm5 = xmm3[1,1,3,3]
pshufd $0xf5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,3,3]
pcmpeqd %xmm2, %xmm5
pand %xmm4, %xmm5
movdqa 0x2901eb(%rip), %xmm3   # 0x35b0b0
pshufd $0xa0, %xmm3, %xmm4     # xmm4 = xmm3[0,0,2,2]
pcmpgtd %xmm1, %xmm4
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
pcmpeqd %xmm2, %xmm3
pand %xmm4, %xmm3
packssdw %xmm5, %xmm3
pcmpeqd %xmm4, %xmm4
pxor %xmm4, %xmm3
movdqa 0x2901d1(%rip), %xmm5   # 0x35b0c0
pshufd $0xa0, %xmm5, %xmm6     # xmm6 = xmm5[0,0,2,2]
pcmpgtd %xmm1, %xmm6
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pcmpeqd %xmm2, %xmm5
pand %xmm6, %xmm5
movdqa 0x2901c3(%rip), %xmm6   # 0x35b0d0
pshufd $0xa0, %xmm6, %xmm7     # xmm7 = xmm6[0,0,2,2]
pcmpgtd %xmm1, %xmm7
pshufd $0xf5, %xmm6, %xmm1     # xmm1 = xmm6[1,1,3,3]
pcmpeqd %xmm2, %xmm1
pand %xmm7, %xmm1
packssdw %xmm5, %xmm1
pxor %xmm4, %xmm1
packssdw %xmm3, %xmm1
packsswb %xmm1, %xmm1
pmovmskb %xmm1, %eax
movl %eax, %ecx
andb $0x2, %cl
shrb %cl
movb %cl, 0xf(%rsp)
movl %eax, %ecx
andb $0x4, %cl
shrb $0x2, %cl
movb %cl, 0xe(%rsp)
movl %eax, %ecx
andb $0x8, %cl
shrb $0x3, %cl
movb %cl, 0xd(%rsp)
movl %eax, %ecx
andb $0x10, %cl
shrb $0x4, %cl
movb %cl, 0xc(%rsp)
movl %eax, %ecx
andb $0x20, %cl
shrb $0x5, %cl
movb %cl, 0xb(%rsp)
movl %eax, %ecx
andb $0x40, %cl
shrb $0x6, %cl
movb %cl, 0xa(%rsp)
movl %eax, 0x3c(%rsp)
shrb $0x7, %al
movb %al, 0x9(%rsp)
movdqa 0x29014f(%rip), %xmm1   # 0x35b0e0
paddq %xmm0, %xmm1
movdqa 0x290153(%rip), %xmm2   # 0x35b0f0
paddq %xmm0, %xmm2
movdqa 0x290157(%rip), %xmm3   # 0x35b100
paddq %xmm0, %xmm3
paddq 0x29015b(%rip), %xmm0   # 0x35b110
movq %xmm0, 0x78(%rsp)
pshufd $0xee, %xmm0, %xmm0     # xmm0 = xmm0[2,3,2,3]
movq %xmm0, 0x70(%rsp)
movq %xmm3, 0x68(%rsp)
pshufd $0xee, %xmm3, %xmm0     # xmm0 = xmm3[2,3,2,3]
movq %xmm0, 0x60(%rsp)
movq %xmm2, 0x58(%rsp)
pshufd $0xee, %xmm2, %xmm0     # xmm0 = xmm2[2,3,2,3]
movq %xmm0, 0x50(%rsp)
movq %xmm1, 0x48(%rsp)
pshufd $0xee, %xmm1, %xmm0     # xmm0 = xmm1[2,3,2,3]
movq %xmm0, 0x40(%rsp)
movq 0x10(%rsp), %rbp
callq 0x11fe0c
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
cmpq $0x8, 0x28(%rsp)
jae 0xcb4ce
movq %rdx, %rbx
testq %rdx, 0x80(%rsp)
jne 0xcb4c3
testb $0x1, 0x3c(%rsp)
movq 0x18(%rsp), %rsi
je 0xcb04b
movq %rbx, %rax
movq 0x78(%rsp), %rcx
shrq %cl, %rax
movb %al, (%rsi)
cmpb $0x0, 0xf(%rsp)
je 0xcb060
movq %rbx, %rax
movq 0x70(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x1(%rsi)
cmpb $0x0, 0xe(%rsp)
je 0xcb075
movq %rbx, %rax
movq 0x68(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x2(%rsi)
cmpb $0x0, 0xd(%rsp)
je 0xcb08a
movq %rbx, %rax
movq 0x60(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x3(%rsi)
cmpb $0x0, 0xc(%rsp)
je 0xcb09f
movq %rbx, %rax
movq 0x58(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x4(%rsi)
cmpb $0x0, 0xb(%rsp)
je 0xcb0b4
movq %rbx, %rax
movq 0x50(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x5(%rsi)
cmpb $0x0, 0xa(%rsp)
je 0xcb0c9
movq %rbx, %rax
movq 0x48(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x6(%rsi)
cmpb $0x0, 0x9(%rsp)
je 0xcb0de
movq %rbx, %rax
movq 0x40(%rsp), %rcx
shrq %cl, %rax
movb %al, 0x7(%rsi)
movq %rbp, %rdi
movq %r13, %rdx
callq 0x17660
cmpb $0x0, 0x22(%r12)
je 0xcb0f5
movq %rbx, (%r15,%r14,8)
incq %r14
addq %r13, %rbp
cmpq 0x8(%r12), %r14
jb 0xcaffe
leaq 0x290013(%rip), %rsi    # 0x35b120
movq 0x18(%rsp), %rdi
movl $0x299, %edx            # imm = 0x299
jmp 0xcac8e
cmpq $0x0, 0x10(%r12)
movq 0x20(%rsp), %r15
je 0xcb15e
cmpq $0x0, 0x30(%rsp)
je 0xcb50a
leaq 0x3e83d4(%rip), %rax    # 0x4b3510
movq (%r14,%rax), %r14
xorl %ebx, %ebx
movq 0x20(%rsp), %r15
movq 0x8(%r12), %rsi
movq 0x30(%rsp), %rdi
callq *%r14
incq %rbx
cmpq 0x10(%r12), %rbx
jb 0xcb147
movq (%r12), %rdi
callq 0x11b0a1
leaq 0x3eecaa(%rip), %rcx    # 0x4b9e18
movl (%rcx), %edx
movq 0x8(%r12), %r8
movq 0x10(%r12), %rcx
leaq 0x2903a4(%rip), %rdi    # 0x35b525
movq %rax, %rsi
xorl %eax, %eax
callq 0x17070
movq 0x3edd46(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x285076(%rip), %rsi    # 0x350212
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x11ca64
movq %rbx, %rdi
callq 0x11d054
cmpb $0x1, 0x22(%r12)
movq %r15, %r14
movq 0x30(%rsp), %r15
jne 0xcb2fc
testq %r14, %r14
je 0xcb250
movq 0x8(%r12), %rax
cmpq $0x2, %rax
jb 0xcb2be
leaq -0x1(%rax), %rcx
leaq 0x1c(%r14), %rdx
movq -0x1c(%rdx), %rsi
movq -0xc(%rdx), %rdi
cmpq %rdi, %rsi
jb 0xcb206
jne 0xcb492
movq -0x14(%rdx), %r8
cmpq -0x4(%rdx), %r8
ja 0xcb492
movq %rsi, %r8
shrq $0x20, %r8
movq %rdi, %r9
shrq $0x20, %r9
cmpl %r9d, %r8d
jb 0xcb245
cmpl %r9d, %r8d
ja 0xcb48d
cmpl %edi, %esi
jb 0xcb245
ja 0xcb48d
movl (%rdx), %esi
cmpl %esi, -0x10(%rdx)
jb 0xcb245
ja 0xcb48d
movl -0x14(%rdx), %esi
cmpl -0x4(%rdx), %esi
ja 0xcb48d
addq $0x10, %rdx
decq %rcx
jne 0xcb1e5
jmp 0xcb2c3
cmpq $0x0, 0x10(%rsp)
movq 0x18(%rsp), %rsi
je 0xcb385
testq %r15, %r15
je 0xcb4f1
movq 0x8(%r12), %rax
testq %rax, %rax
je 0xcb2f0
leaq -0x1(%r13), %rcx
cmpq $0x7, %rcx
ja 0xcb500
xorl %r8d, %r8d
movq 0x10(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movq %rdx, %rdi
shlq $0x8, %rdi
movzbl (%rsi,%rcx), %edx
orq %rdi, %rdx
incq %rcx
cmpq %rcx, %r13
jne 0xcb28e
movq (%r15,%r8,8), %rcx
cmpq %rcx, %rdx
jne 0xcb49c
incq %r8
addq %r13, %rsi
cmpq %rax, %r8
jne 0xcb28a
jmp 0xcb2f0
testq %rax, %rax
je 0xcb2f0
movl $0x8, %ecx
movq -0x8(%r14,%rcx), %rdx
cmpq -0x8(%rbp,%rcx), %rdx
jne 0xcb488
movq (%r14,%rcx), %rdx
cmpq (%rbp,%rcx), %rdx
jne 0xcb483
addq $0x10, %rcx
decq %rax
jne 0xcb2c8
leaq 0x290613(%rip), %rdi    # 0x35b90a
callq 0x17bd0
leaq 0x28fe1d(%rip), %rbx    # 0x35b120
movq 0x10(%rsp), %rdi
movq %rbx, %rsi
movl $0x303, %edx            # imm = 0x303
callq 0x1045eb
movq %r15, %rdi
movq %rbx, %rsi
movl $0x304, %edx            # imm = 0x304
callq 0x1045eb
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movl $0x305, %edx            # imm = 0x305
callq 0x1045eb
movq %r14, %rdi
movq %rbx, %rsi
movl $0x306, %edx            # imm = 0x306
callq 0x1045eb
movq %rbp, %rdi
movq %rbx, %rsi
movl $0x307, %edx            # imm = 0x307
callq 0x1045eb
movq 0x3f313a(%rip), %rsi    # 0x4be498
testq %rsi, %rsi
je 0xcb371
leaq 0x2901dc(%rip), %rdi    # 0x35b546
xorl %eax, %eax
callq 0x17070
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r12), %rax
cmpq $0x2, %rax
jb 0xcb3eb
movl $0x1, %ecx
movq -0x8(%r15,%rcx,8), %rdx
cmpq (%r15,%rcx,8), %rdx
ja 0xcb4d3
incq %rcx
cmpq %rcx, %rax
jne 0xcb395
jmp 0xcb3f4
testq %r15, %r15
je 0xcb50f
cmpq $0x0, 0x8(%r12)
je 0xcb411
xorl %ebx, %ebx
callq 0x11fe0c
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, (%r15,%rbx,8)
incq %rbx
cmpq 0x8(%r12), %rbx
jb 0xcb3c1
jmp 0xcac93
testq %rax, %rax
je 0xcb2f0
xorl %ecx, %ecx
movq (%r15,%rcx,8), %rdx
cmpq (%rsi,%rcx,8), %rdx
ja 0xcb4be
incq %rcx
cmpq %rcx, %rax
jne 0xcb3f6
jmp 0xcb2f0
cmpb $0x0, 0x22(%r12)
je 0xcad2c
movq 0x8(%r12), %rdi
shlq $0x3, %rdi
leaq 0x28fcf3(%rip), %rsi    # 0x35b120
movl $0x2ba, %edx            # imm = 0x2BA
callq 0x104226
testq %r15, %r15
je 0xcb4fb
movq %rax, %rdi
cmpq $0x0, 0x8(%r12)
je 0xcb464
xorl %eax, %eax
movq (%r15,%rax,8), %rcx
movq %rcx, (%rdi,%rax,8)
incq %rax
movq 0x8(%r12), %rsi
cmpq %rsi, %rax
jb 0xcb44d
jmp 0xcb466
xorl %esi, %esi
leaq 0xd1(%rip), %rcx        # 0xcb53e
movl $0x8, %edx
movq %rdi, 0x18(%rsp)
callq 0x17f60
xorl %ebp, %ebp
jmp 0xcad4f
callq 0x209e0
callq 0x209a7
callq 0x2096e
callq 0x20935
callq 0x20851
movq 0x3edadd(%rip), %rax    # 0x4b8f80
movq (%rax), %rdi
leaq 0x2903a0(%rip), %rsi    # 0x35b84d
xorl %eax, %eax
callq 0x17ab0
movl $0x2, %edi
callq 0x17940
callq 0x20a8b
movq %r13, %rdi
movq %rbx, %rsi
callq 0x20777
callq 0x2073e
callq 0x20ac4
callq 0x20b6f
callq 0x20705
callq 0x20b36
callq 0x20818
callq 0x208c3
callq 0x20a52
callq 0x2088a
callq 0x20afd
callq 0x20a19
callq 0x207a6
callq 0x208fc
callq 0x207df