// File: /workspace/github_c_makefile_star2_O2/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 $0x28, %rsp
movq %rcx, %r12
testq %r8, %r8
je 0x4f98e
movq %r8, %rdi
callq 0x89eb7
testb %al, %al
jne 0x50429
testq %r12, %r12
je 0x503f8
cmpb $0x1, 0x23(%r12)
jne 0x4f9df
movq 0x8(%r12), %rsi
leaq 0x2aba2b(%rip), %rdi    # 0x2fb3d6
xorl %eax, %eax
callq 0x17070
movq 0x18(%r12), %rsi
leaq 0x2aba31(%rip), %rdi    # 0x2fb3ef
xorl %eax, %eax
callq 0x17070
movq (%r12), %rdi
callq 0xad1fa
leaq 0x2aba33(%rip), %rdi    # 0x2fb408
movq %rax, %rsi
xorl %eax, %eax
callq 0x17070
movq (%r12), %rdi
callq 0xad1fa
leaq 0x2ab935(%rip), %rsi    # 0x2fb324
movq %rax, %rdi
callq 0x179e0
testl %eax, %eax
je 0x4fa83
movq (%r12), %rdi
callq 0xad1fa
leaq 0x2ab969(%rip), %rsi    # 0x2fb378
movq %rax, %rdi
callq 0x179e0
xorl %r13d, %r13d
movl $0x0, %ecx
movq %rcx, (%rsp)
testl %eax, %eax
jne 0x4fa62
movq 0x18(%r12), %rdi
callq 0xa0f91
movq %rax, %rdi
callq 0xa0fde
movq %rax, %r13
movq %rax, %rdi
imulq 0x8(%r12), %rdi
leaq 0x2ab62a(%rip), %rsi    # 0x2fb076
movl $0x25b, %edx            # imm = 0x25B
callq 0x93160
movq %rax, (%rsp)
cmpb $0x1, 0x22(%r12)
jne 0x4faad
movq 0x8(%r12), %rdi
shlq $0x3, %rdi
leaq 0x2ab604(%rip), %rsi    # 0x2fb076
movl $0x263, %edx            # imm = 0x263
callq 0x93160
movq %rax, %r15
xorl %ebx, %ebx
jmp 0x4fab2
movq 0x8(%r12), %rdi
shlq $0x4, %rdi
leaq 0x2ab5e3(%rip), %rsi    # 0x2fb076
movl $0x253, %edx            # imm = 0x253
callq 0x93160
movq %rax, %rbx
movq $0x0, (%rsp)
xorl %r13d, %r13d
jmp 0x4faaf
xorl %ebx, %ebx
xorl %r15d, %r15d
cmpb $0x1, 0x20(%r12)
movq %rbx, 0x10(%rsp)
jne 0x4fb52
cmpb $0x1, 0x23(%r12)
jne 0x4fad7
leaq 0x2abd7f(%rip), %rdi    # 0x2fb851
callq 0x17b60
testq %r15, %r15
je 0x5045a
movq 0x8(%r12), %rbx
leaq (,%rbx,8), %rdi
leaq 0x2ab582(%rip), %rsi    # 0x2fb076
movl $0xde, %edx
callq 0x93160
movq %rax, %rbp
leaq 0x3ed918(%rip), %r14    # 0x43d420
movq %r15, (%r14)
leaq -0x1(%rbx), %rcx
leaq 0x3ed92a(%rip), %rax    # 0x43d440
movq %rcx, (%rax)
leaq 0x3ed918(%rip), %rcx    # 0x43d438
andq $0x0, (%rcx)
leaq 0x3ed8fd(%rip), %rcx    # 0x43d428
andq $0x0, (%rcx)
leaq 0x3ed8fa(%rip), %rcx    # 0x43d430
andq $0x0, (%rcx)
xorl %ecx, %ecx
cmpq %rcx, %rbx
je 0x4fb95
movq %rcx, (%rbp,%rcx,8)
movq (%rax), %rdx
movq %rdx, (%r15,%rcx,8)
incq %rcx
jmp 0x4fb3c
movb 0x23(%r12), %al
cmpb $0x1, 0x21(%r12)
jne 0x4fc93
testb %al, %al
je 0x4fb73
leaq 0x2abccc(%rip), %rdi    # 0x2fb83a
callq 0x17b60
testq %r15, %r15
je 0x5048b
xorl %eax, %eax
movq 0x8(%r12), %r14
cmpq %r14, %rax
jae 0x4fcfb
movq %rax, (%r15,%rax,8)
incq %rax
jmp 0x4fb7e
leaq 0xa7c(%rip), %rcx       # 0x50618
pushq $0x8
popq %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x17ed0
movq (%r14), %rax
pushq $0x1
popq %rcx
cmpq %rbx, %rcx
jae 0x4fc00
movq -0x8(%rbp,%rcx,8), %rdx
movq (%rbp,%rcx,8), %rsi
movq (%rax,%rdx,8), %rdx
incq %rdx
incq %rcx
cmpq %rdx, (%rax,%rsi,8)
je 0x4fbb0
movq 0x3e8392(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x295433(%rip), %rsi    # 0x2e5013
leaq 0x2ab8c5(%rip), %rdx    # 0x2fb4ac
leaq 0x2ab8db(%rip), %rcx    # 0x2fb4c9
leaq 0x2ab481(%rip), %r8     # 0x2fb076
movl $0xe9, %r9d
jmp 0x505d7
leaq 0x2ab46f(%rip), %rsi    # 0x2fb076
movq %rbp, %rdi
movl $0xea, %edx
callq 0x936f9
cmpb $0x1, 0x22(%r12)
jne 0x4fc67
movq 0x10(%rsp), %rbx
testq %rbx, %rbx
je 0x4fd27
movq 0x8(%r12), %rdi
shlq $0x4, %rdi
leaq 0x2ab43c(%rip), %rsi    # 0x2fb076
movl $0x2aa, %edx            # imm = 0x2AA
callq 0x93160
movq %rax, %rbp
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x8(%r12), %rsi
cmpq %rsi, %rcx
jae 0x4fc7c
movups (%rbx,%rax), %xmm0
movups %xmm0, (%rbp,%rax)
incq %rcx
addq $0x10, %rax
jmp 0x4fc4b
xorl %ebp, %ebp
movq $0x0, 0x8(%rsp)
movq 0x10(%rsp), %rbx
jmp 0x4fd5d
leaq 0x960(%rip), %rcx       # 0x505e3
pushq $0x10
popq %rdx
movq %rbp, %rdi
callq 0x17ed0
jmp 0x4fd54
testb %al, %al
je 0x4fca3
leaq 0x2abb75(%rip), %rdi    # 0x2fb813
callq 0x17b60
testq %rbx, %rbx
je 0x4ffa1
addq $0x8, %rbx
xorl %r14d, %r14d
movl $0x7fffffff, %ebp       # imm = 0x7FFFFFFF
cmpq 0x8(%r12), %r14
jae 0x4fc14
callq 0xb3a58
andl %ebp, %eax
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, -0x8(%rbx)
callq 0xb3a58
andl %ebp, %eax
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, (%rbx)
incq %r14
addq $0x10, %rbx
jmp 0x4fcb8
leaq -0x1(%r14), %rbx
xorl %ebp, %ebp
cmpq %rbp, %r14
je 0x4fc14
movq %rbx, %rdi
callq 0x955fa
movq (%r15,%rbp,8), %rcx
movq (%r15,%rax,8), %rdx
movq %rdx, (%r15,%rbp,8)
movq %rcx, (%r15,%rax,8)
incq %rbp
jmp 0x4fd01
cmpq $0x0, (%rsp)
je 0x5008c
testq %r15, %r15
je 0x504ed
movq 0x8(%r12), %rsi
leaq 0x8bf(%rip), %rcx       # 0x50606
pushq $0x8
popq %rdx
movq %r15, %rdi
callq 0x17ed0
xorl %ebp, %ebp
movq $0x0, 0x8(%rsp)
callq 0xaf478
movq %rax, 0x18(%rsp)
movq %rax, %rdi
callq 0xaf4d6
testq %rbx, %rbx
je 0x4fd91
xorl %ebx, %ebx
cmpq 0x10(%r12), %rbx
jae 0x4fdb6
movq 0x8(%r12), %rsi
movq 0x10(%rsp), %rdi
callq 0xa0e27
incq %rbx
jmp 0x4fd76
cmpq $0x0, (%rsp)
je 0x4ff6a
testq %r13, %r13
je 0x504bc
movq 0x8(%r12), %rsi
movq (%rsp), %rdi
movq %r13, %rdx
callq 0xa0e64
movq (%r12), %rdi
callq 0xad1fa
leaq 0x3e9002(%rip), %rcx    # 0x438dc8
movl (%rcx), %edx
movq 0x8(%r12), %r8
movq 0x10(%r12), %rcx
leaq 0x2ab6a2(%rip), %rdi    # 0x2fb47b
movq %rax, %rsi
xorl %eax, %eax
callq 0x17070
movq 0x3e80c6(%rip), %rax    # 0x437eb0
movq (%rax), %rdx
leaq 0x2a0426(%rip), %rsi    # 0x2f021a
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0xaf5b6
movq %rbx, %rdi
callq 0xafc5b
cmpb $0x1, 0x22(%r12)
movq 0x10(%rsp), %r14
jne 0x5018b
testq %r14, %r14
je 0x4feff
pushq $0x1
popq %rcx
movq 0x8(%r12), %rax
leaq 0x1c(%r14), %rdx
cmpq %rax, %rcx
jae 0x4fe9d
movq -0x1c(%rdx), %rsi
movq -0xc(%rdx), %rdi
cmpq %rdi, %rsi
jb 0x4fe55
jne 0x50288
movq -0x14(%rdx), %r8
cmpq -0x4(%rdx), %r8
ja 0x50288
movq %rsi, %r8
shrq $0x20, %r8
movq %rdi, %r9
shrq $0x20, %r9
cmpl %r9d, %r8d
jb 0x4fe94
cmpl %r9d, %r8d
ja 0x502b9
cmpl %edi, %esi
jb 0x4fe94
ja 0x502b9
movl (%rdx), %esi
cmpl %esi, -0x10(%rdx)
jb 0x4fe94
ja 0x502b9
movl -0x14(%rdx), %esi
cmpl -0x4(%rdx), %esi
ja 0x502b9
incq %rcx
addq $0x10, %rdx
jmp 0x4fe2f
incq %rax
pushq $0x8
popq %rcx
decq %rax
je 0x5017f
movq -0x8(%r14,%rcx), %rdx
cmpq -0x8(%rbp,%rcx), %rdx
jne 0x502ea
movq (%r14,%rcx), %rdx
leaq 0x10(%rcx), %rsi
cmpq (%rbp,%rcx), %rdx
movq %rsi, %rcx
je 0x4fea3
movq 0x3e8093(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x295134(%rip), %rsi    # 0x2e5013
leaq 0x2ab891(%rip), %rdx    # 0x2fb777
leaq 0x2ab818(%rip), %rcx    # 0x2fb705
leaq 0x2ab182(%rip), %r8     # 0x2fb076
movl $0x183, %r9d            # imm = 0x183
jmp 0x505d7
cmpq $0x0, (%rsp)
movq 0x8(%rsp), %rdi
je 0x500e6
testq %r15, %r15
je 0x5051e
movq 0x8(%r12), %rax
leaq -0x1(%r13), %rsi
xorl %r8d, %r8d
movq (%rsp), %rdi
cmpq %rax, %r8
je 0x5017f
cmpq $0x7, %rsi
ja 0x50338
xorl %ecx, %ecx
xorl %edx, %edx
cmpq %rcx, %r13
je 0x4ff55
shlq $0x8, %rdx
movzbl (%rdi,%rcx), %r9d
orq %r9, %rdx
incq %rcx
jmp 0x4ff3f
movq (%r15,%r8,8), %rcx
cmpq %rcx, %rdx
jne 0x5031b
incq %r8
addq %r13, %rdi
jmp 0x4ff28
xorl %r14d, %r14d
leaq 0x3e89cc(%rip), %rbx    # 0x438940
cmpq $0x40, %r14
je 0x4fdb6
movq (%r12), %rdi
callq 0xad1fa
movq (%r14,%rbx), %rsi
movq %rax, %rdi
callq 0x179e0
testl %eax, %eax
je 0x50210
addq $0x8, %r14
jmp 0x4ff74
cmpq $0x0, (%rsp)
je 0x50252
leaq 0x2ab0c3(%rip), %rsi    # 0x2fb076
movq %r13, %rdi
movl $0x28d, %edx            # imm = 0x28D
callq 0x93160
movq %rax, %rbx
cmpb $0x1, 0x22(%r12)
jne 0x4ffd4
testq %r15, %r15
je 0x5057d
leaq -0x1(%r13), %rax
movq %rax, 0x8(%rsp)
leaq (,%r13,8), %rcx
pushq $-0x1
popq %rax
shlq %cl, %rax
xorl %r14d, %r14d
cmpq $0x8, %r13
cmoveq %r14, %rax
movq %rax, 0x18(%rsp)
leaq -0x8(,%r13,8), %rax
movq %rax, 0x20(%rsp)
cmpq 0x8(%r12), %r14
jae 0x5023e
callq 0xb3a58
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
cmpq $0x8, 0x8(%rsp)
jae 0x5039a
movq %rdx, %rbp
testq %rdx, 0x18(%rsp)
jne 0x503cb
movq 0x20(%rsp), %rcx
xorl %eax, %eax
cmpq %rax, %r13
je 0x50062
movq %rbp, %rdx
shrq %cl, %rdx
movb %dl, (%rbx,%rax)
incq %rax
addq $-0x8, %rcx
jmp 0x5004b
movq %r14, %rdi
imulq %r13, %rdi
addq (%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x17630
cmpb $0x1, 0x22(%r12)
jne 0x50084
movq %rbp, (%r15,%r14,8)
incq %r14
jmp 0x50008
movq 0x8(%r12), %rdi
shlq $0x3, %rdi
leaq 0x2aafda(%rip), %rsi    # 0x2fb076
movl $0x2ba, %edx            # imm = 0x2BA
callq 0x93160
testq %r15, %r15
je 0x5054f
movq %rax, %rdi
xorl %eax, %eax
movq 0x8(%r12), %rsi
cmpq %rsi, %rax
jae 0x500cb
movq (%r15,%rax,8), %rcx
movq %rcx, (%rdi,%rax,8)
incq %rax
jmp 0x500b4
leaq 0x534(%rip), %rcx       # 0x50606
pushq $0x8
popq %rdx
movq %rdi, 0x8(%rsp)
callq 0x17ed0
xorl %ebp, %ebp
jmp 0x4fd5d
movq 0x8(%r12), %rax
pushq $0x1
popq %rcx
cmpq %rax, %rcx
jae 0x50136
movq -0x8(%r15,%rcx,8), %rdx
leaq 0x1(%rcx), %rsi
cmpq (%r15,%rcx,8), %rdx
movq %rsi, %rcx
jbe 0x500ee
movq 0x3e7e5c(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294efd(%rip), %rsi    # 0x2e5013
leaq 0x2ab6b1(%rip), %rdx    # 0x2fb7ce
leaq 0x2ab6c1(%rip), %rcx    # 0x2fb7e5
leaq 0x2aaf4b(%rip), %r8     # 0x2fb076
movl $0x127, %r9d            # imm = 0x127
jmp 0x505d7
xorl %ecx, %ecx
cmpq %rcx, %rax
je 0x5017f
movq (%r15,%rcx,8), %rdx
leaq 0x1(%rcx), %rsi
cmpq (%rdi,%rcx,8), %rdx
movq %rsi, %rcx
jbe 0x50138
movq 0x3e7e13(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294eb4(%rip), %rsi    # 0x2e5013
leaq 0x2ab693(%rip), %rdx    # 0x2fb7f9
leaq 0x2ab678(%rip), %rcx    # 0x2fb7e5
leaq 0x2aaf02(%rip), %r8     # 0x2fb076
movl $0x12b, %r9d            # imm = 0x12B
jmp 0x505d7
leaq 0x2ab6da(%rip), %rdi    # 0x2fb860
callq 0x17b60
leaq 0x2aaee4(%rip), %rbx    # 0x2fb076
movq (%rsp), %rdi
movq %rbx, %rsi
movl $0x303, %edx            # imm = 0x303
callq 0x936f9
movq %r15, %rdi
movq %rbx, %rsi
movl $0x304, %edx            # imm = 0x304
callq 0x936f9
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x305, %edx            # imm = 0x305
callq 0x936f9
movq %r14, %rdi
movq %rbx, %rsi
movl $0x306, %edx            # imm = 0x306
callq 0x936f9
movq %rbp, %rdi
movq %rbx, %rsi
movl $0x307, %edx            # imm = 0x307
callq 0x936f9
movq 0x3ed25c(%rip), %rsi    # 0x43d448
testq %rsi, %rsi
je 0x501ff
leaq 0x2ab2a4(%rip), %rdi    # 0x2fb49c
xorl %eax, %eax
callq 0x17070
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebx, %ebx
cmpq 0x10(%r12), %rbx
jae 0x4fdb6
testq %r15, %r15
je 0x50369
movq 0x8(%r12), %rsi
movq %r15, %rdi
leaq 0x3e22eb(%rip), %rax    # 0x432520
callq *(%r14,%rax)
incq %rbx
jmp 0x50212
leaq 0x2aae31(%rip), %rsi    # 0x2fb076
movq %rbx, %rdi
movl $0x299, %edx            # imm = 0x299
jmp 0x4fc0f
testq %r15, %r15
je 0x505ab
xorl %ebx, %ebx
cmpq 0x8(%r12), %rbx
jae 0x4fc14
callq 0xb3a58
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x18(%r12), %rcx
incq %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, (%r15,%rbx,8)
incq %rbx
jmp 0x5025d
movq 0x3e7cd9(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294d7a(%rip), %rsi    # 0x2e5013
leaq 0x2ab3e3(%rip), %rdx    # 0x2fb683
leaq 0x2ab45e(%rip), %rcx    # 0x2fb705
leaq 0x2aadc8(%rip), %r8     # 0x2fb076
movl $0x17d, %r9d            # imm = 0x17D
jmp 0x505d7
movq 0x3e7ca8(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294d49(%rip), %rsi    # 0x2e5013
leaq 0x2ab450(%rip), %rdx    # 0x2fb721
leaq 0x2ab42d(%rip), %rcx    # 0x2fb705
leaq 0x2aad97(%rip), %r8     # 0x2fb076
movl $0x17e, %r9d            # imm = 0x17E
jmp 0x505d7
movq 0x3e7c77(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294d18(%rip), %rsi    # 0x2e5013
leaq 0x2ab449(%rip), %rdx    # 0x2fb74b
leaq 0x2ab3fc(%rip), %rcx    # 0x2fb705
leaq 0x2aad66(%rip), %r8     # 0x2fb076
movl $0x182, %r9d            # imm = 0x182
jmp 0x505d7
movq 0x3e7c46(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2ab477(%rip), %rsi    # 0x2fb7a3
xorl %eax, %eax
callq 0x17a50
jmp 0x503f0
movq 0x3e7c29(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294cca(%rip), %rsi    # 0x2e5013
leaq 0x2ab18d(%rip), %rdx    # 0x2fb4dd
leaq 0x2ab469(%rip), %rcx    # 0x2fb7c0
leaq 0x2aad18(%rip), %r8     # 0x2fb076
movl $0x21b, %r9d            # imm = 0x21B
jmp 0x505d7
movq 0x3e7bf8(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294c99(%rip), %rsi    # 0x2e5013
leaq 0x2ab0d4(%rip), %rdx    # 0x2fb455
leaq 0x2ab03a(%rip), %rcx    # 0x2fb3c2
leaq 0x2aace7(%rip), %r8     # 0x2fb076
movl $0x2dd, %r9d            # imm = 0x2DD
jmp 0x505d7
movq 0x3e7bc7(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294c68(%rip), %rsi    # 0x2e5013
leaq 0x2ab12b(%rip), %rdx    # 0x2fb4dd
leaq 0x2ab151(%rip), %rcx    # 0x2fb50a
leaq 0x2aacb6(%rip), %r8     # 0x2fb076
movl $0x201, %r9d            # imm = 0x201
jmp 0x505d7
movq 0x3e7b96(%rip), %rax    # 0x437f68
movq (%rax), %rdi
shll $0x3, %r13d
pushq $0x40
popq %rcx
subl %r13d, %ecx
leaq 0x2ab132(%rip), %rsi    # 0x2fb518
movq %rbp, %rdx
xorl %eax, %eax
callq 0x17a50
pushq $0x2
popq %rdi
callq 0x178f0
movq 0x3e7b69(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294c0a(%rip), %rsi    # 0x2e5013
leaq 0x2f8243(%rip), %rdx    # 0x348653
leaq 0x2aafab(%rip), %rcx    # 0x2fb3c2
leaq 0x2aac58(%rip), %r8     # 0x2fb076
movl $0x249, %r9d            # imm = 0x249
jmp 0x505d7
movq 0x3e7b38(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294bd9(%rip), %rsi    # 0x2e5013
leaq 0x294d7e(%rip), %rdx    # 0x2e51bf
leaq 0x2aaf7a(%rip), %rcx    # 0x2fb3c2
leaq 0x2aac27(%rip), %r8     # 0x2fb076
movl $0x248, %r9d            # imm = 0x248
jmp 0x505d7
movq 0x3e7b07(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294ba8(%rip), %rsi    # 0x2e5013
leaq 0x2aafc3(%rip), %rdx    # 0x2fb435
leaq 0x2aaf49(%rip), %rcx    # 0x2fb3c2
leaq 0x2aabf6(%rip), %r8     # 0x2fb076
movl $0x26c, %r9d            # imm = 0x26C
jmp 0x505d7
movq 0x3e7ad6(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294b77(%rip), %rsi    # 0x2e5013
leaq 0x2aaf92(%rip), %rdx    # 0x2fb435
leaq 0x2aaf18(%rip), %rcx    # 0x2fb3c2
leaq 0x2aabc5(%rip), %r8     # 0x2fb076
movl $0x276, %r9d            # imm = 0x276
jmp 0x505d7
movq 0x3e7aa5(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294b46(%rip), %rsi    # 0x2e5013
leaq 0x2aaf6f(%rip), %rdx    # 0x2fb443
leaq 0x2aaee7(%rip), %rcx    # 0x2fb3c2
leaq 0x2aab94(%rip), %r8     # 0x2fb076
movl $0x2d2, %r9d            # imm = 0x2D2
jmp 0x505d7
movq 0x3e7a74(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294b15(%rip), %rsi    # 0x2e5013
leaq 0x2aaf30(%rip), %rdx    # 0x2fb435
leaq 0x2aaeb6(%rip), %rcx    # 0x2fb3c2
leaq 0x2aab63(%rip), %r8     # 0x2fb076
movl $0x2b6, %r9d            # imm = 0x2B6
jmp 0x505d7
movq 0x3e7a43(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294ae4(%rip), %rsi    # 0x2e5013
leaq 0x2aaeff(%rip), %rdx    # 0x2fb435
leaq 0x2aae85(%rip), %rcx    # 0x2fb3c2
leaq 0x2aab32(%rip), %r8     # 0x2fb076
movl $0x2fa, %r9d            # imm = 0x2FA
jmp 0x505d7
movq 0x3e7a12(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294ab3(%rip), %rsi    # 0x2e5013
leaq 0x2aaece(%rip), %rdx    # 0x2fb435
leaq 0x2aae54(%rip), %rcx    # 0x2fb3c2
leaq 0x2aab01(%rip), %r8     # 0x2fb076
movl $0x2bb, %r9d            # imm = 0x2BB
jmp 0x505d7
movq 0x3e79e4(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294a85(%rip), %rsi    # 0x2e5013
leaq 0x2aae8a(%rip), %rdx    # 0x2fb41f
leaq 0x2aae26(%rip), %rcx    # 0x2fb3c2
leaq 0x2aaad3(%rip), %r8     # 0x2fb076
movl $0x28e, %r9d            # imm = 0x28E
jmp 0x505d7
movq 0x3e79b6(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x294a57(%rip), %rsi    # 0x2e5013
leaq 0x2aae72(%rip), %rdx    # 0x2fb435
leaq 0x2aadf8(%rip), %rcx    # 0x2fb3c2
leaq 0x2aaaa5(%rip), %r8     # 0x2fb076
movl $0x29c, %r9d            # imm = 0x29C
xorl %eax, %eax
callq 0x17a50
callq 0x17390