// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_matchtool.c
// Function: gt_matchtool_runner
static int gt_matchtool_runner(GT_UNUSED int argc,
                               GT_UNUSED const char **argv,
                               GT_UNUSED int parsed_args,
                               void *tool_arguments, GtError *err)
{
  GtMatchtoolArguments *arguments = tool_arguments;
  GtMatchIterator *mp = NULL;
  GtMatch *match = NULL;
  GtBlastProcessCall *blast_call = NULL;

  int status, had_err = 0;

  gt_error_check(err);
  gt_assert(arguments);

  if (strcmp(gt_str_get(arguments->type), "OPENMATCH") == 0) {
    mp = gt_match_iterator_open_new(gt_str_get(arguments->matchfile), err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "BLASTOUT") == 0) {
    mp = gt_match_iterator_blast_file_new(gt_str_get(arguments->matchfile),
                                          err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "BLASTALLP") == 0) {
    blast_call = gt_blast_process_call_new_all_prot();
    gt_blast_process_call_set_query(blast_call, gt_str_get(arguments->query));
    gt_blast_process_call_set_db(blast_call, gt_str_get(arguments->db));
    mp = gt_match_iterator_blast_process_new(blast_call, err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "BLASTALLN") == 0) {
    blast_call = gt_blast_process_call_new_all_nucl();
    gt_blast_process_call_set_query(blast_call, gt_str_get(arguments->query));
    gt_blast_process_call_set_db(blast_call, gt_str_get(arguments->db));
    mp = gt_match_iterator_blast_process_new(blast_call, err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "BLASTP") == 0) {
    blast_call = gt_blast_process_call_new_all_prot();
    gt_blast_process_call_set_query(blast_call, gt_str_get(arguments->query));
    gt_blast_process_call_set_db(blast_call, gt_str_get(arguments->db));
    mp = gt_match_iterator_blast_process_new(blast_call, err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "BLASTN") == 0) {
    blast_call = gt_blast_process_call_new_all_prot();
    gt_blast_process_call_set_query(blast_call, gt_str_get(arguments->query));
    gt_blast_process_call_set_db(blast_call, gt_str_get(arguments->db));
    mp =  gt_match_iterator_blast_process_new(blast_call, err);
    if (!mp)
      had_err = -1;
  } else if (strcmp(gt_str_get(arguments->type), "SW") == 0) {
    GtEncseqLoader *el = NULL;
    GtEncseq *es1 = NULL, *es2 = NULL;
    GtScoreMatrix *sm = NULL;
    GtScoreFunction *sf = NULL;
    el = gt_encseq_loader_new();
    es1 = gt_encseq_loader_load(el, gt_str_get(arguments->db), err);
    if (!es1)
      had_err = -1;
    if (!had_err) {
      es2 = gt_encseq_loader_load(el, gt_str_get(arguments->query), err);
      if (!es2)
        had_err = -1;
    }
    gt_encseq_loader_delete(el);
    if (!had_err) {
      GtUword i, j;
      GtAlphabet *a;
      gt_assert(es1 && es2);
      a = gt_encseq_alphabet(es1);
      sm = gt_score_matrix_new(a);
      for (i = 0; i < gt_alphabet_num_of_chars(a); i++)
        for (j = 0; j < gt_alphabet_num_of_chars(a); j++)
          gt_score_matrix_set_score(sm, i, j, (i == j) ? 1 : -1);
      sf = gt_score_function_new(sm, -1, -1);
      mp = gt_match_iterator_sw_new(es1, es2, sf, arguments->minlen,
                                    arguments->maxedist, err);
      if (!mp)
        had_err = -1;
    }
    gt_encseq_delete(es1);
    gt_encseq_delete(es2);
    gt_score_function_delete(sf);
  } else if (strcmp(gt_str_get(arguments->type), "LAST") == 0) {
    GtEncseqLoader *el = NULL;
    GtEncseq *es1 = NULL, *es2 = NULL;
    el = gt_encseq_loader_new();
    es1 = gt_encseq_loader_load(el, gt_str_get(arguments->db), err);
    if (!es1)
      had_err = -1;
    if (!had_err) {
      es2 = gt_encseq_loader_load(el, gt_str_get(arguments->query), err);
      if (!es2)
        had_err = -1;
    }
    gt_encseq_loader_delete(el);
    if (!had_err) {
      mp = gt_match_iterator_last_new(es1, es2,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      10,
                                      GT_UNDEF_INT,
                                      GT_UNDEF_INT,
                                      err);
      if (!mp)
        had_err = -1;
    }
    gt_encseq_delete(es1);
    gt_encseq_delete(es2);
  } else {
    exit(GT_EXIT_PROGRAMMING_ERROR);
  }

  if ((!had_err) && (strcmp(gt_str_get(arguments->type), "OPENMATCH") == 0)) {
    fprintf(stdout, "seqid1\tseqid2\tstartpos1\tstartpos2\tendpos1\tendpos2\t"
                    "weight\n");
    while ((status = gt_match_iterator_next(mp, &match, err))
                                                     != GT_MATCHER_STATUS_END) {
      if (status == GT_MATCHER_STATUS_OK) {
        GtMatchOpen *matcho = (GtMatchOpen*) match;
        GtRange range_seq1;
        GtRange range_seq2;
        gt_match_get_range_seq1(match, &range_seq1);
        gt_match_get_range_seq2(match, &range_seq2);
        fprintf(stdout, "%s\t%s\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\n",
                gt_match_get_seqid1(match),
                gt_match_get_seqid2(match),
                range_seq1.start,
                range_seq2.start,
                range_seq1.end,
                range_seq2.end,
                gt_match_open_get_weight(matcho));
        gt_match_delete(match);
      } else if (status == GT_MATCHER_STATUS_ERROR) {
        had_err =-1;
        break;
      }
    }
    gt_match_iterator_delete(mp);
  } else if ((!had_err) && (strcmp(gt_str_get(arguments->type), "SW") == 0)) {
    fprintf(stdout, "seqid1\tseqid2\tstartpos1\tstartpos2\tendpos1\tendpos2\t"
                    "alilen\tedist\n");
    while ((status = gt_match_iterator_next(mp, &match, err))
                                                     != GT_MATCHER_STATUS_END) {
      if (status == GT_MATCHER_STATUS_OK) {
        GtMatchSW *matchs = gt_match_sw_cast(match);
        GtRange range_seq1;
        GtRange range_seq2;
        gt_match_get_range_seq1(match, &range_seq1);
        gt_match_get_range_seq2(match, &range_seq2);
        fprintf(stdout,
               "%s\t%s\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\n",
                gt_match_get_seqid1(match),
                gt_match_get_seqid2(match),
                range_seq1.start,
                range_seq2.start,
                range_seq1.end,
                range_seq2.end,
                gt_match_sw_get_alignment_length(matchs),
                gt_match_sw_get_edist(matchs));
        gt_match_delete(match);
      } else if (status == GT_MATCHER_STATUS_ERROR) {
        had_err =-1;
        break;
      }
    }
    gt_match_iterator_delete(mp);
  } else if ((!had_err) && (strcmp(gt_str_get(arguments->type), "LAST") == 0)) {
    fprintf(stdout, "seqid1\tseqid2\tstartpos1\tstartpos2\tendpos1\tendpos2\t"
                    "score\n");
    while ((status = gt_match_iterator_next(mp, &match, err))
                                                     != GT_MATCHER_STATUS_END) {
      if (status == GT_MATCHER_STATUS_OK) {
        GtMatchLAST *matchl = gt_match_last_cast(match);
        GtRange range_seq1;
        GtRange range_seq2;
        gt_match_get_range_seq1(match, &range_seq1);
        gt_match_get_range_seq2(match, &range_seq2);
        fprintf(stdout,
              ""GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\n",
                gt_match_last_get_seqno1(matchl),
                gt_match_last_get_seqno2(matchl),
                range_seq1.start,
                range_seq2.start,
                range_seq1.end,
                range_seq2.end,
                gt_match_last_get_score(matchl));
        gt_match_delete(match);
      } else if (status == GT_MATCHER_STATUS_ERROR) {
        had_err =-1;
        break;
      }
    }
    gt_match_iterator_delete(mp);
  } else if (!had_err) {
    fprintf(stdout, "query\tdbname2\tq.startpos\td.startpos\tq.endpos\t"
                    "d.endpos\tbit score\tevalue\tali length\n");
    while ((status = gt_match_iterator_next(mp, &match, err)) !=
                                          GT_MATCHER_STATUS_END) {
      if (status == GT_MATCHER_STATUS_OK) {
        GtMatchBlast *matchb = (GtMatchBlast*) match;
        GtRange range_seq1;
        GtRange range_seq2;
        gt_match_get_range_seq1(match, &range_seq1);
        gt_match_get_range_seq2(match, &range_seq2);
        fprintf(stdout,
              "%s\t%s\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"GT_WU"\t%.3f\t%g\t"GT_WU"\n",
                gt_match_get_seqid1(match),
                gt_match_get_seqid2(match),
                range_seq1.start,
                range_seq2.start,
                range_seq1.end,
                range_seq2.end,
                gt_match_blast_get_bitscore(matchb),
                gt_match_blast_get_evalue(matchb),
                gt_match_blast_get_align_length(matchb));
        gt_match_delete(match);
      } else if (status == GT_MATCHER_STATUS_ERROR) {
        had_err =-1;
        break;
      }
    }
    gt_match_iterator_delete(mp);
  }

  return had_err;
}

// Assembly:
pushq %rbx
subq $0x2e0, %rsp            # imm = 0x2E0
movl %edi, 0x2dc(%rsp)
movq %rsi, 0x2d0(%rsp)
movl %edx, 0x2cc(%rsp)
movq %rcx, 0x2c0(%rsp)
movq %r8, 0x2b8(%rsp)
movq 0x2c0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
movq $0x0, 0x2a8(%rsp)
movq $0x0, 0x2a0(%rsp)
movq $0x0, 0x298(%rsp)
movl $0x0, 0x290(%rsp)
cmpq $0x0, 0x2b8(%rsp)
je 0x43c83
movq 0x2b8(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x43c4b
jmp 0x43c83
movq 0x5f834e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4d23b7(%rip), %rsi    # 0x516013
leaq 0x4d255c(%rip), %rdx    # 0x5161bf
leaq 0x4ddca2(%rip), %rcx    # 0x52190c
leaq 0x4dd951(%rip), %r8     # 0x5215c2
movl $0xc3, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x43c85
jmp 0x43c87
cmpq $0x0, 0x2b0(%rsp)
jne 0x43cca
movq 0x5f8307(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4d2370(%rip), %rsi    # 0x516013
leaq 0x536eb5(%rip), %rdx    # 0x57ab5f
leaq 0x4ddc5b(%rip), %rcx    # 0x52190c
leaq 0x4dd90a(%rip), %r8     # 0x5215c2
movl $0xc4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x43ccc
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd914(%rip), %rsi    # 0x5215fa
callq 0x19980
cmpl $0x0, %eax
jne 0x43d34
movq 0x2b0(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1aa8c0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x43d2f
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x4460e
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd8b6(%rip), %rsi    # 0x521604
callq 0x19980
cmpl $0x0, %eax
jne 0x43d9c
movq 0x2b0(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1a7ac0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x43d97
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x4460c
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd857(%rip), %rsi    # 0x52160d
callq 0x19980
cmpl $0x0, %eax
jne 0x43e6b
callq 0x137000
movq %rax, 0x298(%rsp)
movq 0x298(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x188(%rsp), %rdi
movq %rax, %rsi
callq 0x137080
movq 0x298(%rsp), %rax
movq %rax, 0x190(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x190(%rsp), %rdi
movq %rax, %rsi
callq 0x137130
movq 0x298(%rsp), %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1a7cc0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x43e66
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x4460a
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd792(%rip), %rsi    # 0x521617
callq 0x19980
cmpl $0x0, %eax
jne 0x43f3a
callq 0x136e70
movq %rax, 0x298(%rsp)
movq 0x298(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x178(%rsp), %rdi
movq %rax, %rsi
callq 0x137080
movq 0x298(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x180(%rsp), %rdi
movq %rax, %rsi
callq 0x137130
movq 0x298(%rsp), %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1a7cc0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x43f35
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44608
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd6cd(%rip), %rsi    # 0x521621
callq 0x19980
cmpl $0x0, %eax
jne 0x44009
callq 0x137000
movq %rax, 0x298(%rsp)
movq 0x298(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x168(%rsp), %rdi
movq %rax, %rsi
callq 0x137080
movq 0x298(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x170(%rsp), %rdi
movq %rax, %rsi
callq 0x137130
movq 0x298(%rsp), %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1a7cc0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x44004
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44606
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dd605(%rip), %rsi    # 0x521628
callq 0x19980
cmpl $0x0, %eax
jne 0x440d8
callq 0x137000
movq %rax, 0x298(%rsp)
movq 0x298(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x158(%rsp), %rdi
movq %rax, %rsi
callq 0x137080
movq 0x298(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x160(%rsp), %rdi
movq %rax, %rsi
callq 0x137130
movq 0x298(%rsp), %rdi
movq 0x2b8(%rsp), %rsi
callq 0x1a7cc0
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x440d3
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44604
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4f4abe(%rip), %rsi    # 0x538bb0
callq 0x19980
cmpl $0x0, %eax
jne 0x4442c
movq $0x0, 0x288(%rsp)
movq $0x0, 0x280(%rsp)
movq $0x0, 0x278(%rsp)
movq $0x0, 0x270(%rsp)
movq $0x0, 0x268(%rsp)
callq 0xb7a40
movq %rax, 0x288(%rsp)
movq 0x288(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x150(%rsp), %rdi
movq %rax, %rsi
movq 0x2b8(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x280(%rsp)
cmpq $0x0, 0x280(%rsp)
jne 0x441a0
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x290(%rsp)
jne 0x44203
movq 0x288(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x148(%rsp), %rdi
movq %rax, %rsi
movq 0x2b8(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x278(%rsp)
cmpq $0x0, 0x278(%rsp)
jne 0x44201
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44203
movq 0x288(%rsp), %rdi
callq 0xb7e50
cmpl $0x0, 0x290(%rsp)
jne 0x44400
jmp 0x44220
cmpq $0x0, 0x280(%rsp)
je 0x44236
cmpq $0x0, 0x278(%rsp)
jne 0x4426e
movq 0x5f7d63(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4d1dcc(%rip), %rsi    # 0x516013
leaq 0x4dd6d2(%rip), %rdx    # 0x521920
leaq 0x4dd6b7(%rip), %rcx    # 0x52190c
leaq 0x4dd366(%rip), %r8     # 0x5215c2
movl $0xfd, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x44270
movq 0x280(%rsp), %rdi
callq 0xb0f00
movq %rax, 0x250(%rsp)
movq 0x250(%rsp), %rdi
callq 0x10eff0
movq %rax, 0x270(%rsp)
movq $0x0, 0x260(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x250(%rsp), %rdi
callq 0x7e8c0
movl %eax, %ecx
movq 0x140(%rsp), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x44387
movq $0x0, 0x258(%rsp)
movq 0x258(%rsp), %rax
movq %rax, 0x138(%rsp)
movq 0x250(%rsp), %rdi
callq 0x7e8c0
movl %eax, %ecx
movq 0x138(%rsp), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x4436c
movq 0x270(%rsp), %rdi
movq 0x260(%rsp), %rax
movl %eax, %esi
movq 0x258(%rsp), %rax
movl %eax, %edx
movq 0x260(%rsp), %r8
movq 0x258(%rsp), %r9
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x1, %eax
cmpq %r9, %r8
cmovel %eax, %ecx
callq 0x10f7a0
movq 0x258(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x258(%rsp)
jmp 0x442e4
jmp 0x4436e
movq 0x260(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x260(%rsp)
jmp 0x442a6
movq 0x270(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %edx, %esi
callq 0x10ed40
movq %rax, 0x268(%rsp)
movq 0x280(%rsp), %rdi
movq 0x278(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq 0x2b0(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x2b0(%rsp), %rax
movq 0x28(%rax), %r8
movq 0x2b8(%rsp), %r9
callq 0x1ab010
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x443fe
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44400
movq 0x280(%rsp), %rdi
callq 0xae070
movq 0x278(%rsp), %rdi
callq 0xae070
movq 0x268(%rsp), %rdi
callq 0x10efa0
jmp 0x44602
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x55db45(%rip), %rsi    # 0x5a1f8b
callq 0x19980
cmpl $0x0, %eax
jne 0x445f6
movq $0x0, 0x248(%rsp)
movq $0x0, 0x240(%rsp)
movq $0x0, 0x238(%rsp)
callq 0xb7a40
movq %rax, 0x248(%rsp)
movq 0x248(%rsp), %rax
movq %rax, 0x130(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq 0x130(%rsp), %rdi
movq %rax, %rsi
movq 0x2b8(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x240(%rsp)
cmpq $0x0, 0x240(%rsp)
jne 0x444dc
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x290(%rsp)
jne 0x4453f
movq 0x248(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x2b0(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x128(%rsp), %rdi
movq %rax, %rsi
movq 0x2b8(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x238(%rsp)
cmpq $0x0, 0x238(%rsp)
jne 0x4453d
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x4453f
movq 0x248(%rsp), %rdi
callq 0xb7e50
cmpl $0x0, 0x290(%rsp)
jne 0x445da
movq 0x240(%rsp), %rdi
movq 0x238(%rsp), %rsi
movq 0x2b8(%rsp), %rax
movl $0x80000000, %r9d       # imm = 0x80000000
movl %r9d, %edx
movl %r9d, %ecx
movl %r9d, %r8d
movl $0x80000000, (%rsp)     # imm = 0x80000000
movl $0x80000000, 0x8(%rsp)  # imm = 0x80000000
movl $0x80000000, 0x10(%rsp) # imm = 0x80000000
movl $0xa, 0x18(%rsp)
movl $0x80000000, 0x20(%rsp) # imm = 0x80000000
movl $0x80000000, 0x28(%rsp) # imm = 0x80000000
movq %rax, 0x30(%rsp)
callq 0x1a8d40
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jne 0x445d8
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x445da
movq 0x240(%rsp), %rdi
callq 0xae070
movq 0x238(%rsp), %rdi
callq 0xae070
jmp 0x44600
movl $0x2, %edi
callq 0x19890
jmp 0x44602
jmp 0x44604
jmp 0x44606
jmp 0x44608
jmp 0x4460a
jmp 0x4460c
jmp 0x4460e
cmpl $0x0, 0x290(%rsp)
jne 0x447ed
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4dcfc4(%rip), %rsi    # 0x5215fa
callq 0x19980
cmpl $0x0, %eax
jne 0x447ed
movq 0x5f78ed(%rip), %rax    # 0x63bf38
movq (%rax), %rdi
leaq 0x4dd2d6(%rip), %rsi    # 0x52192b
movb $0x0, %al
callq 0x199f0
movq 0x2a8(%rsp), %rdi
movq 0x2b8(%rsp), %rdx
leaq 0x2a0(%rsp), %rsi
callq 0x1a7950
movl %eax, 0x294(%rsp)
cmpl $0x1, %eax
je 0x447db
cmpl $0x0, 0x294(%rsp)
jne 0x447bd
movq 0x2a0(%rsp), %rax
movq %rax, 0x230(%rsp)
movq 0x2a0(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x1a6ce0
movq 0x2a0(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x1a6d60
movq 0x5f7860(%rip), %rax    # 0x63bf38
movq (%rax), %rax
movq %rax, 0xf0(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c20
movq %rax, 0xf8(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c80
movq %rax, 0x100(%rsp)
movq 0x220(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x210(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x228(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x218(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x230(%rsp), %rdi
callq 0x1abd40
movq 0xf0(%rsp), %rdi
movq 0xf8(%rsp), %rdx
movq 0x100(%rsp), %rcx
movq 0x108(%rsp), %r8
movq 0x110(%rsp), %r9
movq 0x118(%rsp), %r11
movq 0x120(%rsp), %r10
leaq 0x4dd1cc(%rip), %rsi    # 0x521965
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movb $0x0, %al
callq 0x199f0
movq 0x2a0(%rsp), %rdi
callq 0x1a6fb0
jmp 0x447d6
cmpl $0x2, 0x294(%rsp)
jne 0x447d4
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x447db
jmp 0x447d6
jmp 0x4465c
movq 0x2a8(%rsp), %rdi
callq 0x1a7a70
jmp 0x44d9b
cmpl $0x0, 0x290(%rsp)
jne 0x449eb
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x4f439b(%rip), %rsi    # 0x538bb0
callq 0x19980
cmpl $0x0, %eax
jne 0x449eb
movq 0x5f770e(%rip), %rax    # 0x63bf38
movq (%rax), %rdi
leaq 0x4dd14c(%rip), %rsi    # 0x521980
movb $0x0, %al
callq 0x199f0
movq 0x2a8(%rsp), %rdi
movq 0x2b8(%rsp), %rdx
leaq 0x2a0(%rsp), %rsi
callq 0x1a7950
movl %eax, 0x294(%rsp)
cmpl $0x1, %eax
je 0x449d9
cmpl $0x0, 0x294(%rsp)
jne 0x449bb
callq 0x1abd90
movq %rax, %rdi
movq 0x2a0(%rsp), %rsi
callq 0x1a6850
movq %rax, 0x208(%rsp)
movq 0x2a0(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x1a6ce0
movq 0x2a0(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x1a6d60
movq 0x5f7674(%rip), %rax    # 0x63bf38
movq (%rax), %rax
movq %rax, 0xb8(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c20
movq %rax, 0xc0(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c80
movq %rax, 0xc8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x1e8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x200(%rsp), %rbx
movq 0x1f0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x208(%rsp), %rdi
callq 0x1abf50
movq %rax, 0xe8(%rsp)
movq 0x208(%rsp), %rdi
callq 0x1abfa0
movq 0xb8(%rsp), %rdi
movq 0xc0(%rsp), %rdx
movq 0xc8(%rsp), %rcx
movq 0xd0(%rsp), %r8
movq 0xd8(%rsp), %r9
movq 0xe0(%rsp), %r11
movq 0xe8(%rsp), %r10
leaq 0x4dd02e(%rip), %rsi    # 0x5219c0
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movb $0x0, %al
callq 0x199f0
movq 0x2a0(%rsp), %rdi
callq 0x1a6fb0
jmp 0x449d4
cmpl $0x2, 0x294(%rsp)
jne 0x449d2
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x449d9
jmp 0x449d4
jmp 0x4483b
movq 0x2a8(%rsp), %rdi
callq 0x1a7a70
jmp 0x44d99
cmpl $0x0, 0x290(%rsp)
jne 0x44bd7
movq 0x2b0(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x55d578(%rip), %rsi    # 0x5a1f8b
callq 0x19980
cmpl $0x0, %eax
jne 0x44bd7
movq 0x5f7510(%rip), %rax    # 0x63bf38
movq (%rax), %rdi
leaq 0x4dcfad(%rip), %rsi    # 0x5219df
movb $0x0, %al
callq 0x199f0
movq 0x2a8(%rsp), %rdi
movq 0x2b8(%rsp), %rdx
leaq 0x2a0(%rsp), %rsi
callq 0x1a7950
movl %eax, 0x294(%rsp)
cmpl $0x1, %eax
je 0x44bc5
cmpl $0x0, 0x294(%rsp)
jne 0x44ba7
callq 0x1ab910
movq %rax, %rdi
movq 0x2a0(%rsp), %rsi
callq 0x1a6850
movq %rax, 0x1e0(%rsp)
movq 0x2a0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x1a6ce0
movq 0x2a0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x1a6d60
movq 0x5f7476(%rip), %rax    # 0x63bf38
movq (%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x1e0(%rsp), %rdi
callq 0x1aba10
movq %rax, 0x88(%rsp)
movq 0x1e0(%rsp), %rdi
callq 0x1aba60
movq %rax, 0x90(%rsp)
movq 0x1d0(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x1c0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x1d8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x1e0(%rsp), %rdi
callq 0x1abab0
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rdx
movq 0x90(%rsp), %rcx
movq 0x98(%rsp), %r8
movq 0xa0(%rsp), %r9
movq 0xa8(%rsp), %r11
movq 0xb0(%rsp), %r10
leaq 0x4dce95(%rip), %rsi    # 0x521a18
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movb $0x0, %al
callq 0x199f0
movq 0x2a0(%rsp), %rdi
callq 0x1a6fb0
jmp 0x44bc0
cmpl $0x2, 0x294(%rsp)
jne 0x44bbe
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44bc5
jmp 0x44bc0
jmp 0x44a39
movq 0x2a8(%rsp), %rdi
callq 0x1a7a70
jmp 0x44d97
cmpl $0x0, 0x290(%rsp)
jne 0x44d95
movq 0x5f734c(%rip), %rax    # 0x63bf38
movq (%rax), %rdi
leaq 0x4dce3f(%rip), %rsi    # 0x521a35
movb $0x0, %al
callq 0x199f0
movq 0x2a8(%rsp), %rdi
movq 0x2b8(%rsp), %rdx
leaq 0x2a0(%rsp), %rsi
callq 0x1a7950
movl %eax, 0x294(%rsp)
cmpl $0x1, %eax
je 0x44d88
cmpl $0x0, 0x294(%rsp)
jne 0x44d6a
movq 0x2a0(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x2a0(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x1a6ce0
movq 0x2a0(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x1a6d60
movq 0x5f72bf(%rip), %rax    # 0x63bf38
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c20
movq %rax, 0x40(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x1a6c80
movq %rax, 0x48(%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x198(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x1b0(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x1a0(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x1b8(%rsp), %rdi
callq 0x1a76b0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x70(%rsp)
movq 0x1b8(%rsp), %rdi
callq 0x1a7650
movsd %xmm0, 0x78(%rsp)
movq 0x1b8(%rsp), %rdi
callq 0x1a7710
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rdx
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %r8
movq 0x58(%rsp), %r9
movq 0x60(%rsp), %r11
movq 0x68(%rsp), %r10
movsd 0x70(%rsp), %xmm0
movsd 0x78(%rsp), %xmm1
leaq 0x4dcd42(%rip), %rsi    # 0x521a88
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movb $0x2, %al
callq 0x199f0
movq 0x2a0(%rsp), %rdi
callq 0x1a6fb0
jmp 0x44d83
cmpl $0x2, 0x294(%rsp)
jne 0x44d81
movl $0xffffffff, 0x290(%rsp) # imm = 0xFFFFFFFF
jmp 0x44d88
jmp 0x44d83
jmp 0x44bfd
movq 0x2a8(%rsp), %rdi
callq 0x1a7a70
jmp 0x44d97
jmp 0x44d99
jmp 0x44d9b
movl 0x290(%rsp), %eax
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbx
retq
nopl (%rax,%rax)