// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_readjoiner_gfa.c
// Function: gt_readjoiner_gfa_runner
static int gt_readjoiner_gfa_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerGfaArguments *arguments = tool_arguments;
  GtLogger *verbose_logger, *default_logger;
  GtEncseqLoader *el;
  GtEncseq *reads;
  GtTimer *timer = NULL;
  GtStrgraph *strgraph = NULL;
  GtBitsequence *contained = NULL;
  const char *readset = gt_str_get(arguments->readset);
  bool eqlen;
  GtUword nreads;
  int had_err = 0;

  if (gt_showtime_enabled())
  {
    timer = gt_timer_new_with_progress_description(
        GT_READJOINER_GFA_MSG_INIT);
    gt_timer_start(timer);
    gt_timer_show_cpu_time_by_progress(timer);
  }
  gt_assert(arguments);
  gt_error_check(err);
  default_logger = gt_logger_new(!arguments->quiet, GT_LOGGER_DEFLT_PREFIX,
      stdout);
  gt_logger_log(default_logger, "gt readjoiner gfa");
  verbose_logger = gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX,
      stdout);
  gt_logger_log(verbose_logger, "verbose output activated");
  gt_logger_log(verbose_logger, "readset name = %s", readset);
  if (arguments->minmatchlength > 0)
    gt_logger_log(verbose_logger, "SPM length cutoff = %u",
        arguments->minmatchlength);
  if (arguments->gfa1)
    gt_logger_log(verbose_logger, "GFA version = 1.0");
  else
    gt_logger_log(verbose_logger, "GFA version = 2.0");

  el = gt_encseq_loader_new();
  gt_encseq_loader_drop_description_support(el);
  gt_encseq_loader_disable_autosupport(el);
  reads = gt_encseq_loader_load(el, readset, err);
  nreads = gt_encseq_num_of_sequences(reads);
  gt_assert(reads != NULL);
  eqlen = gt_encseq_accesstype_get(reads) == GT_ACCESS_TYPE_EQUALLENGTH;
  gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_INIT);
  if (!eqlen)
  {
    unsigned int i;
    GtUword nofreads;
    GtStr *filename = gt_str_clone(arguments->readset);
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_CNT, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_CNT);
    gt_str_append_cstr(filename, ".0" GT_READJOINER_SUFFIX_CNTLIST);
    had_err = gt_cntlist_parse(gt_str_get(filename), true, &contained,
        &nofreads, err);
    for (i = 1U; i < arguments->nspmfiles && had_err == 0; i++)
    {
      GtUword nofreads_i;
      gt_str_reset(filename);
      gt_str_append_str(filename, arguments->readset);
      gt_str_append_char(filename, '.');
      gt_str_append_uint(filename, i);
      gt_str_append_cstr(filename, GT_READJOINER_SUFFIX_CNTLIST);
      had_err = gt_cntlist_parse(gt_str_get(filename), false, &contained,
          &nofreads_i, err);
      gt_assert(nofreads == nofreads_i);
    }
    gt_str_delete(filename);
    gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_CNT);
  }
  if (!arguments->sg)
  {
    GtStr *filename = NULL;
    GtFile *file = NULL;
    GtGfaWriter *gw = NULL;
    if (had_err == 0)
    {
      filename = gt_str_clone(arguments->readset);
      gt_str_append_cstr(filename, arguments->gz ?
          GT_READJOINER_SUFFIX_SG_GFA_GZ : GT_READJOINER_SUFFIX_SG_GFA);
      file = gt_file_open(arguments->gz ? GT_FILE_MODE_GZIP :
          GT_FILE_MODE_UNCOMPRESSED, gt_str_get(filename), "w", err);
      if (file == NULL)
        had_err = -1;
    }
    if (had_err == 0)
    {
      gw = gt_gfa_writer_new(file, reads, arguments->gfa1 ?
          GT_GFA_VERSION_1_0 : GT_GFA_VERSION_2_0);
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_VERTICES,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_VERTICES);
      had_err = gt_gfa_writer_show_header(gw,
          (GtUword)arguments->minmatchlength,
          gt_str_get(arguments->readset), false, false, err);
    }
    if (had_err == 0)
    {
      had_err = gt_gfa_writer_show_segments(gw, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_VERTICES);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_EDGES, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_EDGES);
      had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_show_gfa,
          gw, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_EDGES);
    }
    gt_str_delete(filename);
    gt_file_delete(file);
    gt_gfa_writer_delete(gw);
  }
  else
  {
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_COUNT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_COUNT);
      strgraph = gt_strgraph_new(nreads);
      had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_strgraph_count,
          strgraph, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_COUNT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_INSERT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_INSERT);
      gt_strgraph_allocate_graph(strgraph,
          eqlen ? gt_encseq_seqlength(reads, 0) : 0,
          eqlen ? NULL : reads);
      had_err = gt_strgraph_load_spm_from_file(strgraph,
          (GtUword)arguments->minmatchlength, false,
          contained, readset, arguments->nspmfiles,
          GT_READJOINER_SUFFIX_SPMLIST, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_INSERT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_OUTPUT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_OUTPUT);
      gt_strgraph_set_encseq(strgraph, reads);
      gt_strgraph_show(strgraph,
          arguments->gfa1 ?
           (arguments->gz ? GT_STRGRAPH_GFA1_GZ : GT_STRGRAPH_GFA1) :
           (arguments->gz ? GT_STRGRAPH_GFA2_GZ : GT_STRGRAPH_GFA2),
          gt_str_get(arguments->readset),
          arguments->gz ? GT_READJOINER_SUFFIX_SG_GFA_GZ :
          GT_READJOINER_SUFFIX_SG_GFA, false);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_OUTPUT);
    }
  }
  if (gt_showtime_enabled())
  {
    gt_timer_show_progress_final(timer, stdout);
    gt_timer_delete(timer);
  }
  gt_free(contained);
  gt_strgraph_delete(strgraph);
  gt_encseq_loader_delete(el);
  gt_encseq_delete(reads);
  gt_logger_delete(default_logger);
  gt_logger_delete(verbose_logger);
  return had_err;
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movl %edi, 0x114(%rsp)
movq %rsi, 0x108(%rsp)
movl %edx, 0x104(%rsp)
movq %rcx, 0xf8(%rsp)
movq %r8, 0xf0(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq $0x0, 0xc0(%rsp)
movq $0x0, 0xb8(%rsp)
movq $0x0, 0xb0(%rsp)
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq %rax, 0xa8(%rsp)
movl $0x0, 0x94(%rsp)
callq 0x11aa90
testb $0x1, %al
jne 0x51100
jmp 0x5112e
leaq 0x4d80ef(%rip), %rdi    # 0x5291f6
callq 0x1213a0
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rdi
callq 0x1213f0
movq 0xc0(%rsp), %rdi
callq 0x121ec0
jmp 0x51130
cmpq $0x0, 0xe8(%rsp)
jne 0x51173
movq 0x5eae5e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c4ec7(%rip), %rsi    # 0x516013
leaq 0x529a0c(%rip), %rdx    # 0x57ab5f
leaq 0x4d3740(%rip), %rcx    # 0x52489a
leaq 0x4d3662(%rip), %r8     # 0x5247c3
movl $0xd4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x51175
jmp 0x51177
cmpq $0x0, 0xf0(%rsp)
je 0x511cd
movq 0xf0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x51195
jmp 0x511cd
movq 0x5eae04(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c4e6d(%rip), %rsi    # 0x516013
leaq 0x4c5012(%rip), %rdx    # 0x5161bf
leaq 0x4d36e6(%rip), %rcx    # 0x52489a
leaq 0x4d3608(%rip), %r8     # 0x5247c3
movl $0xd5, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x511cf
movq 0xe8(%rsp), %rax
movb 0x1(%rax), %al
xorb $-0x1, %al
movq 0x5ead55(%rip), %rcx    # 0x63bf38
movq (%rcx), %rdx
movzbl %al, %edi
andl $0x1, %edi
leaq 0x4c66f9(%rip), %rsi    # 0x5178ec
callq 0xe7870
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rdi
leaq 0x4d36a4(%rip), %rsi    # 0x5248b3
movb $0x0, %al
callq 0xe7cd0
movq 0xe8(%rsp), %rax
movb (%rax), %al
movq 0x5ead11(%rip), %rcx    # 0x63bf38
movq (%rcx), %rdx
leaq 0x4c66bb(%rip), %rsi    # 0x5178ec
andb $0x1, %al
movzbl %al, %edi
callq 0xe7870
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rdi
leaq 0x4d25b1(%rip), %rsi    # 0x523803
movb $0x0, %al
callq 0xe7cd0
movq 0xe0(%rsp), %rdi
movq 0xa8(%rsp), %rdx
leaq 0x4d25ac(%rip), %rsi    # 0x52381c
movb $0x0, %al
callq 0xe7cd0
movq 0xe8(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jbe 0x512a6
movq 0xe0(%rsp), %rdi
movq 0xe8(%rsp), %rax
movl 0x4(%rax), %edx
leaq 0x4d258f(%rip), %rsi    # 0x52382e
movb $0x0, %al
callq 0xe7cd0
movq 0xe8(%rsp), %rax
testb $0x1, 0x18(%rax)
je 0x512cc
movq 0xe0(%rsp), %rdi
leaq 0x4d3602(%rip), %rsi    # 0x5248c5
movb $0x0, %al
callq 0xe7cd0
jmp 0x512e2
movq 0xe0(%rsp), %rdi
leaq 0x4d35fc(%rip), %rsi    # 0x5248d7
movb $0x0, %al
callq 0xe7cd0
callq 0xb7a40
movq %rax, 0xd0(%rsp)
movq 0xd0(%rsp), %rdi
callq 0xba570
movq 0xd0(%rsp), %rdi
callq 0xba760
movq 0xd0(%rsp), %rdi
movq 0xa8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rdi
callq 0xa9d50
movq %rax, 0x98(%rsp)
cmpq $0x0, 0xc8(%rsp)
jne 0x51386
movq 0x5eac4b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c4cb4(%rip), %rsi    # 0x516013
leaq 0x52e418(%rip), %rdx    # 0x57f77e
leaq 0x4d352d(%rip), %rcx    # 0x52489a
leaq 0x4d344f(%rip), %r8     # 0x5247c3
movl $0xea, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x51388
movq 0xc8(%rsp), %rdi
callq 0xc2d90
cmpl $0x2, %eax
sete %al
andb $0x1, %al
movb %al, 0xa7(%rsp)
leaq 0x4d7e4b(%rip), %rdi    # 0x5291f6
callq 0x51be0
testb $0x1, 0xa7(%rsp)
jne 0x515b1
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11e280
movq %rax, 0x80(%rsp)
callq 0x11aa90
testb $0x1, %al
jne 0x513e2
jmp 0x51400
movq 0xc0(%rsp), %rdi
movq 0x5eab47(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d244a(%rip), %rsi    # 0x523845
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d2436(%rip), %rsi    # 0x523845
movb $0x0, %al
callq 0xe7cd0
movq 0x80(%rsp), %rdi
leaq 0x4d243f(%rip), %rsi    # 0x523864
callq 0x11d550
movq 0x80(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0xf0(%rsp), %r8
movl $0x1, %esi
leaq 0xb0(%rsp), %rdx
leaq 0x88(%rsp), %rcx
callq 0x275430
movl %eax, 0x94(%rsp)
movl $0x1, 0x90(%rsp)
movl 0x90(%rsp), %ecx
movq 0xe8(%rsp), %rdx
xorl %eax, %eax
cmpl 0x14(%rdx), %ecx
movb %al, 0x5f(%rsp)
jae 0x51497
cmpl $0x0, 0x94(%rsp)
sete %al
movb %al, 0x5f(%rsp)
movb 0x5f(%rsp), %al
testb $0x1, %al
jne 0x514a4
jmp 0x51598
movq 0x80(%rsp), %rdi
callq 0x11e110
movq 0x80(%rsp), %rdi
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x11d750
movq 0x80(%rsp), %rdi
movl $0x2e, %esi
callq 0x11da70
movq 0x80(%rsp), %rdi
movl 0x90(%rsp), %esi
callq 0x11de00
movq 0x80(%rsp), %rdi
leaq 0x4d2367(%rip), %rsi    # 0x523866
callq 0x11d550
movq 0x80(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0xf0(%rsp), %r8
xorl %esi, %esi
leaq 0xb0(%rsp), %rdx
leaq 0x78(%rsp), %rcx
callq 0x275430
movl %eax, 0x94(%rsp)
movq 0x88(%rsp), %rax
cmpq 0x78(%rsp), %rax
je 0x5157e
movq 0x5eaa53(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c4abc(%rip), %rsi    # 0x516013
leaq 0x4d29cf(%rip), %rdx    # 0x523f2d
leaq 0x4d3335(%rip), %rcx    # 0x52489a
leaq 0x4d3257(%rip), %r8     # 0x5247c3
movl $0x102, %r9d            # imm = 0x102
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x51580
jmp 0x51582
movl 0x90(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0x5146e
movq 0x80(%rsp), %rdi
callq 0x11f560
leaq 0x4d2299(%rip), %rdi    # 0x523845
callq 0x51be0
movq 0xe8(%rsp), %rax
testb $0x1, 0x11(%rax)
jne 0x5184b
movq $0x0, 0x70(%rsp)
movq $0x0, 0x68(%rsp)
movq $0x0, 0x60(%rsp)
cmpl $0x0, 0x94(%rsp)
jne 0x51687
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11e280
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
movq 0xe8(%rsp), %rax
movb 0x10(%rax), %cl
leaq 0x4d32d8(%rip), %rsi    # 0x5248f1
leaq 0x4d32c9(%rip), %rax    # 0x5248e9
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x11d550
movq 0xe8(%rsp), %rax
movb 0x10(%rax), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, 0x58(%rsp)
movq 0x70(%rsp), %rdi
callq 0x11dee0
movl 0x58(%rsp), %edi
movq %rax, %rsi
movq 0xf0(%rsp), %rcx
leaq 0x51485d(%rip), %rdx    # 0x565ec5
callq 0xdd3f0
movq %rax, 0x68(%rsp)
cmpq $0x0, 0x68(%rsp)
jne 0x51685
movl $0xffffffff, 0x94(%rsp) # imm = 0xFFFFFFFF
jmp 0x51687
cmpl $0x0, 0x94(%rsp)
jne 0x51755
movq 0x68(%rsp), %rdi
movq 0xc8(%rsp), %rsi
movq 0xe8(%rsp), %rax
movb 0x18(%rax), %cl
movl $0x1, %edx
xorl %eax, %eax
testb $0x1, %cl
cmovnel %eax, %edx
callq 0x250740
movq %rax, 0x60(%rsp)
callq 0x11aa90
testb $0x1, %al
jne 0x516cf
jmp 0x516ed
movq 0xc0(%rsp), %rdi
movq 0x5ea85a(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d320e(%rip), %rsi    # 0x5248f6
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d31fa(%rip), %rsi    # 0x5248f6
movb $0x0, %al
callq 0xe7cd0
movq 0x60(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0xe8(%rsp), %rax
movl 0x4(%rax), %eax
movq %rax, 0x50(%rsp)
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq %rax, %rdx
movq 0xf0(%rsp), %r9
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x2507b0
movl %eax, 0x94(%rsp)
cmpl $0x0, 0x94(%rsp)
jne 0x51784
movq 0x60(%rsp), %rdi
movq 0xf0(%rsp), %rsi
callq 0x250920
movl %eax, 0x94(%rsp)
leaq 0x4d3177(%rip), %rdi    # 0x5248f6
callq 0x51be0
cmpl $0x0, 0x94(%rsp)
jne 0x51828
callq 0x11aa90
testb $0x1, %al
jne 0x5179d
jmp 0x517bb
movq 0xc0(%rsp), %rdi
movq 0x5ea78c(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d315e(%rip), %rsi    # 0x524914
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d314a(%rip), %rsi    # 0x524914
movb $0x0, %al
callq 0xe7cd0
movq 0x60(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq 0xe8(%rsp), %rax
movl 0x4(%rax), %ecx
movq 0xe8(%rsp), %rax
movl 0x14(%rax), %r8d
movq 0xb0(%rsp), %r9
movq 0xf0(%rsp), %rax
leaq 0x1ff434(%rip), %rdi    # 0x250c40
movq %rax, (%rsp)
callq 0x51cd0
movl %eax, 0x94(%rsp)
leaq 0x4d30f1(%rip), %rdi    # 0x524914
callq 0x51be0
movq 0x70(%rsp), %rdi
callq 0x11f560
movq 0x68(%rsp), %rdi
callq 0xde430
movq 0x60(%rsp), %rdi
callq 0x251060
jmp 0x51b47
cmpl $0x0, 0x94(%rsp)
jne 0x51907
callq 0x11aa90
testb $0x1, %al
jne 0x51864
jmp 0x51882
movq 0xc0(%rsp), %rdi
movq 0x5ea6c5(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d2038(%rip), %rsi    # 0x5238b5
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d2024(%rip), %rsi    # 0x5238b5
movb $0x0, %al
callq 0xe7cd0
movq 0x98(%rsp), %rdi
callq 0x28fae0
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq 0xe8(%rsp), %rax
movl 0x4(%rax), %ecx
movq 0xe8(%rsp), %rax
movl 0x14(%rax), %r8d
movq 0xb0(%rsp), %r9
movq 0xf0(%rsp), %rax
leaq 0x23fb25(%rip), %rdi    # 0x291410
movq %rax, (%rsp)
callq 0x51cd0
movl %eax, 0x94(%rsp)
leaq 0x4d1fb3(%rip), %rdi    # 0x5238b5
callq 0x51be0
cmpl $0x0, 0x94(%rsp)
jne 0x51a2d
callq 0x11aa90
testb $0x1, %al
jne 0x51920
jmp 0x5193e
movq 0xc0(%rsp), %rdi
movq 0x5ea609(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d1fa0(%rip), %rsi    # 0x5238d9
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d1f8c(%rip), %rsi    # 0x5238d9
movb $0x0, %al
callq 0xe7cd0
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
testb $0x1, 0xa7(%rsp)
je 0x51983
movq 0xc8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb09f0
movq %rax, 0x38(%rsp)
jmp 0x5198c
xorl %eax, %eax
movq %rax, 0x38(%rsp)
jmp 0x5198c
movq 0x38(%rsp), %rax
movq %rax, 0x30(%rsp)
testb $0x1, 0xa7(%rsp)
je 0x519a9
xorl %eax, %eax
movq %rax, 0x28(%rsp)
jmp 0x519b6
movq 0xc8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rsi
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rdx
callq 0x28fbf0
movq 0xb8(%rsp), %rdi
movq 0xe8(%rsp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
movq 0xb0(%rsp), %rcx
movq 0xa8(%rsp), %r8
movq 0xe8(%rsp), %rax
movl 0x14(%rax), %r9d
movq 0xf0(%rsp), %rax
xorl %edx, %edx
leaq 0x4d35c4(%rip), %r10    # 0x524fd0
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x292070
movl %eax, 0x94(%rsp)
leaq 0x4d1eb1(%rip), %rdi    # 0x5238d9
callq 0x51be0
cmpl $0x0, 0x94(%rsp)
jne 0x51b45
callq 0x11aa90
testb $0x1, %al
jne 0x51a46
jmp 0x51a64
movq 0xc0(%rsp), %rdi
movq 0x5ea4e3(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x4d2ed0(%rip), %rsi    # 0x52492f
callq 0x121930
movq 0xd8(%rsp), %rdi
leaq 0x4d2ebc(%rip), %rsi    # 0x52492f
movb $0x0, %al
callq 0xe7cd0
movq 0xb8(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0x292700
movq 0xb8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xe8(%rsp), %rax
testb $0x1, 0x18(%rax)
je 0x51acb
movq 0xe8(%rsp), %rax
movb 0x10(%rax), %dl
movl $0x7, %eax
movl $0x8, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, 0x1c(%rsp)
jmp 0x51aea
movq 0xe8(%rsp), %rax
movb 0x10(%rax), %dl
movl $0x9, %eax
movl $0xa, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, 0x1c(%rsp)
movl 0x1c(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0xe8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq 0x20(%rsp), %rdi
movl 0x18(%rsp), %esi
movq %rax, %rdx
movq 0xe8(%rsp), %rax
movb 0x10(%rax), %r8b
leaq 0x4d2dcf(%rip), %rcx    # 0x5248f1
leaq 0x4d2dc0(%rip), %rax    # 0x5248e9
testb $0x1, %r8b
cmovneq %rax, %rcx
xorl %r8d, %r8d
callq 0x297ff0
leaq 0x4d2def(%rip), %rdi    # 0x52492f
callq 0x51be0
jmp 0x51b47
callq 0x11aa90
testb $0x1, %al
jne 0x51b52
jmp 0x51b76
movq 0xc0(%rsp), %rdi
movq 0x5ea3d7(%rip), %rax    # 0x63bf38
movq (%rax), %rsi
callq 0x121d70
movq 0xc0(%rsp), %rdi
callq 0x121f00
movq 0xb0(%rsp), %rdi
leaq 0x4d2c3e(%rip), %rsi    # 0x5247c3
movl $0x165, %edx            # imm = 0x165
callq 0xe88c0
movq 0xb8(%rsp), %rdi
callq 0x290110
movq 0xd0(%rsp), %rdi
callq 0xb7e50
movq 0xc8(%rsp), %rdi
callq 0xae070
movq 0xd8(%rsp), %rdi
callq 0xe7ed0
movq 0xe0(%rsp), %rdi
callq 0xe7ed0
movl 0x94(%rsp), %eax
addq $0x118, %rsp            # imm = 0x118
retq
nop