// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/editscript.c
// Function: gt_editscript_unit_test
int gt_editscript_unit_test(GT_UNUSED GtError *err)
{
  GtAlphabet      *dna = gt_alphabet_new_dna();
  GtEncseq        *v = NULL,
                  *u = NULL;
  GtEncseqBuilder *esb = gt_encseq_builder_new(dna);
  GtMultieoplist  *meops = gt_multieoplist_new();
  GtUchar         *buffer = gt_calloc((size_t) EDITSCRIPT_TEST_SEQLEN,
                                      sizeof (*buffer));
  GtBitsequence       soll,
                      ist;
  GtEditscriptBuilder es_b;
  GtEditscriptPos     get_pos,
                      fill_pos;
  GtUchar csoll;
  GtUword length = 0,
          i,
          max,
          bufsize = (GtUword) EDITSCRIPT_TEST_SEQLEN;
  int had_err = 0;
  /*
              1      1    2   2
   0    5     0      5    0   3
u: aaacccg-ggttt--acgtacgnang-a
   || | || ||| |  |  |  | | | |
v: aatc-cggggtatcga--tgtgna-gna
   0     5    1      1    2   2
              0      5    0   3
meops(reverse) MIMDMmMmmMDDMIIMmMMMIMMDMmMM
  */
  const char *seq1 = "AAACCCGGGTTTACGTACGNANGA",
             *seq2 = "AATCCGGGGTATCGATGTGNAGNA";
  GtEditscript *es = gt_editscript_new(dna);

  gt_error_check(err);

  editscript_pos_reset(&get_pos);
  editscript_pos_reset(&fill_pos);
  max = (GtUword) ((1 << es->entry_size) - 1);
  for (i = 0; !had_err && i <= max; ++i) {
    editscript_space_add_next(es, &fill_pos, (GtBitsequence) i);
    ist = editscript_space_get_next(es, &get_pos);
    gt_ensure(i == (GtUword) ist);
  }
  if (!had_err) {
    uint32_t served = 0;
    editscript_pos_reset(&get_pos);
    editscript_pos_reset(&fill_pos);
    gt_editscript_reset(es);
    soll = (GtBitsequence) ((1 << es->entry_size) - 1);
    editscript_space_add_length(es, &fill_pos, soll);
    ist = editscript_space_get_length(es, &get_pos, &served);
    gt_ensure(soll == ist);
    for (i = 0; !had_err && i <= max; ++i) {
      soll = (GtBitsequence) (i | (i << es->entry_size));
      editscript_space_add_length(es, &fill_pos, soll);
      ist = editscript_space_get_length(es, &get_pos, &served);
      gt_ensure(soll == ist);
    }
    gt_ensure(served == es->num_elems);
    editscript_pos_reset(&fill_pos);
  }

  if (!had_err) {
    gt_encseq_builder_add_cstr(esb, seq1, EDITSCRIPT_TEST_SEQLEN, "u");
    u = gt_encseq_builder_build(esb, err);
    gt_encseq_builder_reset(esb);
    gt_encseq_builder_add_cstr(esb, seq2, EDITSCRIPT_TEST_SEQLEN, "v");
    v = gt_encseq_builder_build(esb, err);
    gt_encseq_builder_delete(esb);

    gt_editscript_builder_reset(&es_b, es);
    gt_multieoplist_add_match(meops);
    gt_multieoplist_add_insertion(meops);
    gt_multieoplist_add_match(meops);
    gt_multieoplist_add_deletion(meops);
    EDITSCRIPT_2_TIMES(gt_multieoplist_add_match(meops);
                       gt_multieoplist_add_mismatch(meops));
    gt_multieoplist_add_mismatch(meops);
    gt_multieoplist_add_match(meops);
    EDITSCRIPT_2_TIMES(gt_multieoplist_add_deletion(meops));
    gt_multieoplist_add_match(meops);
    EDITSCRIPT_2_TIMES(gt_multieoplist_add_insertion(meops));
    gt_multieoplist_add_match(meops);
    gt_multieoplist_add_mismatch(meops);
    EDITSCRIPT_3_TIMES(gt_multieoplist_add_match(meops));
    gt_multieoplist_add_insertion(meops);
    EDITSCRIPT_2_TIMES(gt_multieoplist_add_match(meops));
    gt_multieoplist_add_deletion(meops);
    gt_multieoplist_add_match(meops);
    gt_multieoplist_add_mismatch(meops);
    EDITSCRIPT_2_TIMES(gt_multieoplist_add_match(meops));

    EDITSCRIPT_2_TIMES(gt_editscript_builder_add_match(&es_b));
    csoll = gt_encseq_get_encoded_char(v, 2UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_mismatch(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);
    gt_editscript_builder_add_deletion(&es_b);
    EDITSCRIPT_2_TIMES(gt_editscript_builder_add_match(&es_b));
    csoll = gt_encseq_get_encoded_char(v, 6UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_insertion(&es_b, csoll);
    EDITSCRIPT_3_TIMES(gt_editscript_builder_add_match(&es_b));
    csoll = gt_encseq_get_encoded_char(v, 10UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_mismatch(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);
    csoll = gt_encseq_get_encoded_char(v, 12UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_insertion(&es_b, csoll);
    csoll = gt_encseq_get_encoded_char(v, 13UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_insertion(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);
    EDITSCRIPT_2_TIMES(gt_editscript_builder_add_deletion(&es_b));
    gt_editscript_builder_add_match(&es_b);
    csoll = gt_encseq_get_encoded_char(v, 16UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_mismatch(&es_b, csoll);
    csoll = gt_encseq_get_encoded_char(v, 17UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_mismatch(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);
    csoll = gt_encseq_get_encoded_char(v, 19UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_mismatch(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);
    gt_editscript_builder_add_deletion(&es_b);
    gt_editscript_builder_add_match(&es_b);
    csoll = gt_encseq_get_encoded_char(v, 22UL, GT_READMODE_FORWARD);
    gt_editscript_builder_add_insertion(&es_b, csoll);
    gt_editscript_builder_add_match(&es_b);

    length = gt_editscript_get_sequence(es, u, 0, GT_READMODE_FORWARD, &buffer,
                                        &bufsize);
    gt_ensure(length == EDITSCRIPT_TEST_SEQLEN);
    gt_ensure(gt_editscript_get_target_len(es) == length);
    gt_ensure(gt_editscript_get_source_len(es) == length);
    if (gt_log_enabled()) {
      gt_editscript_show(es, dna);
    }
  }
  for (i = 0; !had_err && i < EDITSCRIPT_TEST_SEQLEN; ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i,
                                       GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }
  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length = gt_editscript_get_sub_sequence_u(es, u, 0, GT_READMODE_FORWARD,
                                              0, (GtUword) 23,
                                              &buffer, &bufsize);
    gt_ensure(length == EDITSCRIPT_TEST_SEQLEN);
  }
  for (i = 0; !had_err && i < EDITSCRIPT_TEST_SEQLEN; ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i,
                                       GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }
  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length = gt_editscript_get_sub_sequence_v(es, u, 0, GT_READMODE_FORWARD,
                                              0, (GtUword) 23, buffer);
    gt_ensure(length == EDITSCRIPT_TEST_SEQLEN);
  }
  for (i = 0; !had_err && i < EDITSCRIPT_TEST_SEQLEN; ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i,
                                       GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }

  /*
              1      1    2   2
   0    5     0      5    0   3
u: aaacccg-ggttt--acgtacgnang-a
   || | || ||| |  |  |  | | | |
v: aatc-cggggtatcga--tgtgna-gna
   0     5    1      1    2   2
              0      5    0   3
  */
  if (!had_err) {
    const int tests = 6;
    int testidx;
    const GtUword starts[]   = {(GtUword) 0, (GtUword) 0, (GtUword)11,
                                (GtUword)12, (GtUword)13, (GtUword)13,
                                (GtUword)12, (GtUword) 2, (GtUword)23},
                  ulengths[] = {(GtUword)13, (GtUword)24, (GtUword) 2,
                                (GtUword) 4, (GtUword) 2, (GtUword) 3,
                                (GtUword) 3, (GtUword) 2, (GtUword) 1},
                  vlengths[] = {(GtUword)15, (GtUword)24, (GtUword) 4,
                                (GtUword) 2, (GtUword) 0, (GtUword) 1,
                                (GtUword) 1, (GtUword) 2, (GtUword) 1};
    for (testidx = 0; !had_err && testidx < tests; ++testidx) {
      length = gt_editscript_get_target_subseq_len(es, starts[testidx],
                                                   ulengths[testidx]);
      gt_ensure(length == vlengths[testidx]);
    }
  }

  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length = gt_editscript_get_sub_sequence_v(es, u,
                                              0, GT_READMODE_FORWARD,
                                              0,
                                              GT_DIV2(EDITSCRIPT_TEST_SEQLEN),
                                              buffer);
    gt_ensure(length == GT_DIV2(EDITSCRIPT_TEST_SEQLEN) + 1);
  }
  for (i = 0; !had_err && i <= GT_DIV2(EDITSCRIPT_TEST_SEQLEN); ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i,
                                       GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }

  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length =
      gt_editscript_get_sub_sequence_v(es, u, 0, GT_READMODE_FORWARD,
                                       GT_DIV2(EDITSCRIPT_TEST_SEQLEN) + 1,
                                       (GtUword) (EDITSCRIPT_TEST_SEQLEN - 1),
                                       buffer);
    /* -1 because frompos is x/2 + 1 */
    gt_ensure(length == EDITSCRIPT_TEST_SEQLEN -
                GT_DIV2(EDITSCRIPT_TEST_SEQLEN) - 1);
  }
  for (i = GT_DIV2(EDITSCRIPT_TEST_SEQLEN) + 1;
       !had_err && i < EDITSCRIPT_TEST_SEQLEN;
       ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i, GT_READMODE_FORWARD);
    gt_ensure(buffer[i - GT_DIV2(EDITSCRIPT_TEST_SEQLEN) - 1] == csoll);
  }

  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length =
      gt_editscript_get_sub_sequence_u(es, u,
                                       0, GT_READMODE_FORWARD,
                                       0, (GtUword) 12,
                                       &buffer, &bufsize);
    gt_ensure(length == (GtUword) 15);
  }
  for (i = 0; !had_err && i < length; ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i, GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }

  if (!had_err) {
    memset(buffer, 0, (size_t) bufsize);
    length =
      gt_editscript_get_sub_sequence_u(es, u,
                                       0, GT_READMODE_FORWARD,
                                       (GtUword) 12, (GtUword) 23,
                                       &buffer, &bufsize);
    gt_ensure(length == (GtUword) 10);
  }
  for (i = 0; !had_err && i < length; ++i) {
    csoll = gt_encseq_get_encoded_char(v, (GtUword) i + 14,
                                       GT_READMODE_FORWARD);
    gt_ensure(buffer[i] == csoll);
  }

  if (!had_err) {
    gt_editscript_delete(es);
    es = gt_editscript_new_with_sequences(v, meops, 0, GT_READMODE_FORWARD);
    memset(buffer, 0, (size_t) bufsize);
    length = gt_editscript_get_sequence(es, u, 0, GT_READMODE_FORWARD, &buffer,
                                        &bufsize);
    gt_ensure(length == EDITSCRIPT_TEST_SEQLEN);
    gt_ensure(gt_editscript_get_target_len(es) == length);
    if (gt_log_enabled())
      gt_editscript_show(es, dna);

    for (i = 0; !had_err && i < EDITSCRIPT_TEST_SEQLEN; ++i) {
      csoll = gt_encseq_get_encoded_char(v, (GtUword) i,
                                         GT_READMODE_FORWARD);
      gt_ensure(buffer[i] == csoll);
    }
  }
  if (!had_err) {
    GtUword match, mismatch, del, ins;
    gt_editscript_get_stats(es, &match, &mismatch, &ins, &del);
    gt_ensure(match == 15UL);
    gt_ensure(mismatch == 5UL);
    gt_ensure(ins == 4UL);
    gt_ensure(del == 4UL);
  }
  gt_editscript_delete(es);
  gt_alphabet_delete(dna);
  gt_encseq_delete(u);
  gt_encseq_delete(v);
  gt_multieoplist_delete(meops);
  gt_free(buffer);

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %r14
callq 0x56967
movq %rax, %rbx
movq %rax, %rdi
callq 0x7d613
movq %rax, 0x48(%rsp)
callq 0x101648
movq %rax, 0x30(%rsp)
leaq 0x24ba09(%rip), %rdx    # 0x31b8b8
pushq $0x18
popq %rdi
pushq $0x1
popq %rsi
movl $0x3a2, %ecx            # imm = 0x3A2
callq 0x9334a
movq %rax, 0x18(%rsp)
movq $0x18, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %rbx, %rdi
callq 0xce410
movq %rax, %rbx
testq %r14, %r14
je 0xcfef2
movq %r14, %rdi
callq 0x89eb7
testb %al, %al
jne 0xd0e00
movq %r14, (%rsp)
movabsq $0x4000000000, %rax     # imm = 0x4000000000
leaq 0x40(%rsp), %r14
movq %rax, (%r14)
leaq 0x38(%rsp), %r13
movq %rax, (%r13)
movq %rbx, 0x8(%rsp)
movb 0x15(%rbx), %cl
pushq $-0x1
popq %rax
movl %eax, %r12d
shll %cl, %r12d
notl %r12d
leaq 0x24b98c(%rip), %r15    # 0x31b8b8
xorl %ebx, %ebx
xorl %ecx, %ecx
movq 0x8(%rsp), %rbp
testl %ecx, %ecx
jne 0xcff8f
cmpq %r12, %rbx
ja 0xcff8f
movq %rbp, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0xcfd6f
movq %rbp, %rdi
movq %r14, %rsi
callq 0xceb8d
xorl %ecx, %ecx
cmpq %rax, %rbx
je 0xcff8a
movq (%rsp), %rdi
leaq 0x22e489(%rip), %rsi    # 0x2fe3f2
leaq 0x24bedc(%rip), %rdx    # 0x31be4c
leaq 0x24bebd(%rip), %rcx    # 0x31be34
movq %r15, %r8
movl $0x3c4, %r9d            # imm = 0x3C4
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rcx
incq %rbx
jmp 0xcff35
pushq $-0x1
popq %r13
xorl %r14d, %r14d
movl $0x0, %eax
movq %rax, 0x10(%rsp)
movl $0x0, %ebp
testl %ecx, %ecx
jne 0xd0480
leaq 0x68(%rsp), %rax
andl $0x0, (%rax)
leaq 0x40(%rsp), %r15
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, (%r15)
leaq 0x38(%rsp), %rbp
movq %rax, (%rbp)
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xce4ce
movb 0x15(%rbx), %cl
pushq $-0x1
popq %rax
movl %eax, %r13d
shll %cl, %r13d
notl %r13d
movq %rbx, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0xd0e38
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x68(%rsp), %rdx
callq 0xcebdc
cmpq %r13, %rax
je 0xd0042
leaq 0x22e3dc(%rip), %rsi    # 0x2fe3f2
leaq 0x24be42(%rip), %rdx    # 0x31be5f
leaq 0x24be10(%rip), %rcx    # 0x31be34
leaq 0x24b88d(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x3ce, %r9d            # imm = 0x3CE
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r14d
leaq 0x40(%rsp), %rbp
leaq 0x68(%rsp), %rbx
xorl %r13d, %r13d
testl %r14d, %r14d
jne 0xd00c9
cmpq %r12, %r13
ja 0xd00c9
movq 0x8(%rsp), %r14
movb 0x15(%r14), %cl
movq %r13, %r15
shlq %cl, %r15
orq %r13, %r15
movq %r14, %rdi
leaq 0x38(%rsp), %rsi
movq %r15, %rdx
callq 0xd0e38
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0xcebdc
xorl %r14d, %r14d
cmpq %rax, %r15
je 0xd00c4
movq (%rsp), %rdi
leaq 0x22e356(%rip), %rsi    # 0x2fe3f2
leaq 0x24bdbc(%rip), %rdx    # 0x31be5f
leaq 0x24bd8a(%rip), %rcx    # 0x31be34
leaq 0x24b807(%rip), %r8     # 0x31b8b8
movl $0x3d3, %r9d            # imm = 0x3D3
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r14d
incq %r13
jmp 0xd004f
testl %r14d, %r14d
jne 0xd046e
movl 0x68(%rsp), %eax
movq 0x8(%rsp), %r12
cmpl 0xc(%r12), %eax
jne 0xd0441
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x38(%rsp)
leaq 0x24bd06(%rip), %rsi    # 0x31be02
leaq 0x25f71b(%rip), %rcx    # 0x32f81e
pushq $0x18
popq %rbx
movq 0x48(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0x7d964
movq %r14, %rdi
movq (%rsp), %r15
movq %r15, %rsi
callq 0x7e427
movq %rax, %r13
movq %r14, %rdi
callq 0x7e35c
leaq 0x24bce4(%rip), %rsi    # 0x31be1b
leaq 0x25fa32(%rip), %rcx    # 0x32fb70
movq %r14, %rdi
movq %rbx, %rdx
callq 0x7d964
movq %r14, %rdi
movq %r15, %rsi
callq 0x7e427
movq %rax, %rbp
movq %r14, %rdi
callq 0x81ac8
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0xce6d4
movq 0x30(%rsp), %r14
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101961
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x10196c
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101977
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101977
movq %r14, %rdi
callq 0x101977
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x10196c
movq %r14, %rdi
callq 0x10196c
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101961
movq %r14, %rdi
callq 0x101961
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101977
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101961
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x10196c
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101977
movq %r14, %rdi
callq 0x101982
movq %r14, %rdi
callq 0x101982
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce76c
pushq $0x2
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce7e6
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce988
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce76c
pushq $0x6
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce8b7
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce76c
pushq $0xa
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce7e6
movq %rbx, %rdi
callq 0xce76c
pushq $0xc
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce8b7
pushq $0xd
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce8b7
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce988
movq %rbx, %rdi
callq 0xce988
movq %rbx, %rdi
callq 0xce76c
pushq $0x10
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce7e6
pushq $0x11
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce7e6
movq %rbx, %rdi
callq 0xce76c
pushq $0x13
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce7e6
movq %rbx, %rdi
callq 0xce76c
movq %rbx, %rdi
callq 0xce988
movq %rbx, %rdi
callq 0xce76c
pushq $0x16
popq %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0x705e4
movzbl %al, %esi
movq %rbx, %rdi
callq 0xce8b7
movq %rbx, %rdi
callq 0xce76c
leaq 0x18(%rsp), %r8
leaq 0x20(%rsp), %r9
movq %r12, %rdi
movq %r13, 0x10(%rsp)
movq %r13, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xcf83d
movq %rax, %r14
cmpq $0x18, %rax
jne 0xd0cc0
movq %r12, %rdi
callq 0xcedcd
cmpq $0x18, %rax
jne 0xd0db1
movq %r12, %rdi
callq 0xcec96
xorl %r13d, %r13d
cmpq $0x18, %rax
je 0xd0de1
leaq 0x22dfd5(%rip), %rsi    # 0x2fe3f2
leaq 0x24baab(%rip), %rdx    # 0x31becf
leaq 0x24ba09(%rip), %rcx    # 0x31be34
leaq 0x24b486(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x41c, %r9d            # imm = 0x41C
jmp 0xd0dd6
leaq 0x22dfaa(%rip), %rsi    # 0x2fe3f2
leaq 0x24ba1c(%rip), %rdx    # 0x31be6b
leaq 0x24b9de(%rip), %rcx    # 0x31be34
leaq 0x24b45b(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x3d5, %r9d            # imm = 0x3D5
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r13
xorl %r14d, %r14d
movq $0x0, 0x10(%rsp)
xorl %ebp, %ebp
movq 0x18(%rsp), %rbx
leaq 0x24b42c(%rip), %r15    # 0x31b8b8
xorl %r12d, %r12d
testl %r13d, %r13d
jne 0xd04e2
cmpq $0x17, %r12
ja 0xd04e2
xorl %r13d, %r13d
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r12)
je 0xd04dd
movq (%rsp), %rdi
leaq 0x22df37(%rip), %rsi    # 0x2fe3f2
leaq 0x24ba38(%rip), %rdx    # 0x31befa
leaq 0x24b96b(%rip), %rcx    # 0x31be34
movq %r15, %r8
movl $0x424, %r9d            # imm = 0x424
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r13
incq %r12
jmp 0xd048f
pushq $-0x1
popq %rax
movl %eax, %r15d
testl %r13d, %r13d
jne 0xd056a
leaq 0x20(%rsp), %r14
movq (%r14), %rdx
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
leaq 0x18(%rsp), %rax
pushq $0x17
popq %r9
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %r14
pushq %rax
callq 0xcf13a
addq $0x10, %rsp
cmpq $0x18, %rax
jne 0xd0534
pushq $0x18
popq %r14
jmp 0xd056a
movq %rax, %r14
leaq 0x22deb4(%rip), %rsi    # 0x2fe3f2
leaq 0x24b93e(%rip), %rdx    # 0x31be83
leaq 0x24b8e8(%rip), %rcx    # 0x31be34
leaq 0x24b365(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x42b, %r9d            # imm = 0x42B
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
movq 0x18(%rsp), %rbx
leaq 0x24b342(%rip), %r13    # 0x31b8b8
xorl %r12d, %r12d
testl %r15d, %r15d
jne 0xd05ce
cmpq $0x17, %r12
ja 0xd05ce
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r12)
je 0xd05c9
movq (%rsp), %rdi
leaq 0x22de4d(%rip), %rsi    # 0x2fe3f2
leaq 0x24b94e(%rip), %rdx    # 0x31befa
leaq 0x24b881(%rip), %rcx    # 0x31be34
movq %r13, %r8
movl $0x430, %r9d            # imm = 0x430
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
incq %r12
jmp 0xd0579
pushq $-0x1
popq %rax
movl %eax, %r13d
testl %r15d, %r15d
jne 0xd0651
movq 0x20(%rsp), %rdx
xorl %r13d, %r13d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
subq $0x8, %rsp
pushq $0x17
popq %r9
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %rbx
callq 0xcf543
addq $0x10, %rsp
pushq $0x18
popq %r14
cmpq $0x18, %rax
je 0xd0651
movq %rax, %r15
leaq 0x22ddd0(%rip), %rsi    # 0x2fe3f2
leaq 0x24b85a(%rip), %rdx    # 0x31be83
leaq 0x24b804(%rip), %rcx    # 0x31be34
leaq 0x24b281(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x436, %r9d            # imm = 0x436
xorl %eax, %eax
callq 0x89dbb
movq %r15, %r14
pushq $-0x1
popq %rax
movl %eax, %r13d
leaq 0x24b260(%rip), %r15    # 0x31b8b8
xorl %r12d, %r12d
testl %r13d, %r13d
jne 0xd06b0
cmpq $0x17, %r12
ja 0xd06b0
xorl %r13d, %r13d
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r12)
je 0xd06ab
movq (%rsp), %rdi
leaq 0x22dd6b(%rip), %rsi    # 0x2fe3f2
leaq 0x24b86c(%rip), %rdx    # 0x31befa
leaq 0x24b79f(%rip), %rcx    # 0x31be34
movq %r15, %r8
movl $0x43b, %r9d            # imm = 0x43B
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r13d
incq %r12
jmp 0xd065b
pushq $-0x1
popq %rax
testl %r13d, %r13d
je 0xd06c0
movl %eax, %r12d
jmp 0xd07b9
leaq 0x24b1a9(%rip), %r13    # 0x31b870
xorl %r15d, %r15d
xorl %r12d, %r12d
xorl %eax, %eax
testl %eax, %eax
jne 0xd073d
cmpq $0x5, %r12
ja 0xd073d
leaq 0x24b0f0(%rip), %rax    # 0x31b7d0
movq (%r15,%rax), %rsi
leaq 0x24b135(%rip), %rax    # 0x31b820
movq (%r15,%rax), %rdx
movq 0x8(%rsp), %rdi
callq 0xceec5
movq %rax, %r14
xorl %eax, %eax
cmpq (%r15,%r13), %r14
je 0xd0734
movq (%rsp), %rdi
leaq 0x22dce3(%rip), %rsi    # 0x2fe3f2
leaq 0x24b7f7(%rip), %rdx    # 0x31bf0d
leaq 0x24b717(%rip), %rcx    # 0x31be34
leaq 0x24b194(%rip), %r8     # 0x31b8b8
movl $0x456, %r9d            # imm = 0x456
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
incq %r12
addq $0x8, %r15
jmp 0xd06cf
pushq $-0x1
popq %r15
testl %eax, %eax
jne 0xd07b6
movq 0x20(%rsp), %rdx
xorl %r12d, %r12d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
subq $0x8, %rsp
pushq $0xc
popq %r9
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %rbx
callq 0xcf543
addq $0x10, %rsp
cmpq $0xd, %rax
jne 0xd0786
pushq $0xd
popq %r14
jmp 0xd07b9
movq %rax, %r14
leaq 0x22dc62(%rip), %rsi    # 0x2fe3f2
leaq 0x24b792(%rip), %rdx    # 0x31bf29
leaq 0x24b696(%rip), %rcx    # 0x31be34
leaq 0x24b113(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x461, %r9d            # imm = 0x461
xorl %eax, %eax
callq 0x89dbb
movl %r15d, %r12d
pushq $0xd
popq %r13
xorl %r15d, %r15d
testl %r12d, %r12d
jne 0xd0819
cmpq $0xc, %r15
ja 0xd0819
xorl %r12d, %r12d
movq %rbp, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r15)
je 0xd0814
movq (%rsp), %rdi
leaq 0x22dc06(%rip), %rsi    # 0x2fe3f2
leaq 0x24b707(%rip), %rdx    # 0x31befa
leaq 0x24b63a(%rip), %rcx    # 0x31be34
leaq 0x24b0b7(%rip), %r8     # 0x31b8b8
movl $0x466, %r9d            # imm = 0x466
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r12d
incq %r15
jmp 0xd07c0
pushq $-0x1
popq %rax
movl %eax, %r15d
testl %r12d, %r12d
jne 0xd089c
movq 0x20(%rsp), %rdx
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
subq $0x8, %rsp
pushq $0xd
popq %r8
pushq $0x17
popq %r9
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
pushq %rbx
callq 0xcf543
addq $0x10, %rsp
cmpq $0xb, %rax
jne 0xd0866
pushq $0xb
popq %r14
jmp 0xd089c
movq %rax, %r14
leaq 0x22db82(%rip), %rsi    # 0x2fe3f2
leaq 0x24b6e0(%rip), %rdx    # 0x31bf57
leaq 0x24b5b6(%rip), %rcx    # 0x31be34
leaq 0x24b033(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x472, %r9d            # imm = 0x472
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
leaq 0x24b015(%rip), %r12    # 0x31b8b8
testl %r15d, %r15d
jne 0xd08f9
cmpq $0x17, %r13
ja 0xd08f9
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, -0xd(%rbx,%r13)
je 0xd08f4
movq (%rsp), %rdi
leaq 0x22db22(%rip), %rsi    # 0x2fe3f2
leaq 0x24b6c7(%rip), %rdx    # 0x31bf9e
leaq 0x24b556(%rip), %rcx    # 0x31be34
movq %r12, %r8
movl $0x478, %r9d            # imm = 0x478
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
incq %r13
jmp 0xd08a3
pushq $-0x1
popq %rax
movl %eax, %r13d
testl %r15d, %r15d
jne 0xd0981
leaq 0x20(%rsp), %r14
movq (%r14), %rdx
xorl %r13d, %r13d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
leaq 0x18(%rsp), %rax
pushq $0xc
popq %r9
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %r14
pushq %rax
callq 0xcf13a
addq $0x10, %rsp
cmpq $0xf, %rax
jne 0xd094b
pushq $0xf
popq %r14
jmp 0xd0981
movq %rax, %r14
leaq 0x22da9d(%rip), %rsi    # 0x2fe3f2
leaq 0x24b67b(%rip), %rdx    # 0x31bfd7
leaq 0x24b4d1(%rip), %rcx    # 0x31be34
leaq 0x24af4e(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x482, %r9d            # imm = 0x482
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r13d
movq 0x18(%rsp), %rbx
leaq 0x24af2b(%rip), %r15    # 0x31b8b8
xorl %r12d, %r12d
testl %r13d, %r13d
jne 0xd09e4
cmpq %r14, %r12
jae 0xd09e4
xorl %r13d, %r13d
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r12)
je 0xd09df
movq (%rsp), %rdi
leaq 0x22da37(%rip), %rsi    # 0x2fe3f2
leaq 0x24b538(%rip), %rdx    # 0x31befa
leaq 0x24b46b(%rip), %rcx    # 0x31be34
movq %r15, %r8
movl $0x486, %r9d            # imm = 0x486
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r13d
incq %r12
jmp 0xd0990
pushq $-0x1
popq %rax
movl %eax, %r15d
testl %r13d, %r13d
jne 0xd0a6d
leaq 0x20(%rsp), %r14
movq (%r14), %rdx
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17380
leaq 0x18(%rsp), %rax
pushq $0xc
popq %r8
pushq $0x17
popq %r9
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
pushq %r14
pushq %rax
callq 0xcf13a
addq $0x10, %rsp
cmpq $0xa, %rax
jne 0xd0a37
pushq $0xa
popq %r14
jmp 0xd0a6d
movq %rax, %r14
leaq 0x22d9b1(%rip), %rsi    # 0x2fe3f2
leaq 0x24b5a6(%rip), %rdx    # 0x31bfee
leaq 0x24b3e5(%rip), %rcx    # 0x31be34
leaq 0x24ae62(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x490, %r9d            # imm = 0x490
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
movq 0x18(%rsp), %rbx
xorl %r13d, %r13d
testl %r15d, %r15d
jne 0xd0ad5
cmpq %r14, %r13
jae 0xd0ad5
leaq 0xe(%r13), %r12
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r13)
je 0xd0acc
movq (%rsp), %rdi
leaq 0x22d94e(%rip), %rsi    # 0x2fe3f2
leaq 0x24b44f(%rip), %rdx    # 0x31befa
leaq 0x24b382(%rip), %rcx    # 0x31be34
leaq 0x24adff(%rip), %r8     # 0x31b8b8
movl $0x495, %r9d            # imm = 0x495
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %rax
movl %eax, %r15d
addq $-0xd, %r12
movq %r12, %r13
jmp 0xd0a75
testl %r15d, %r15d
jne 0xd0d54
movq 0x8(%rsp), %rdi
callq 0xce497
xorl %r15d, %r15d
movq %rbp, %rdi
movq 0x30(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xce51d
leaq 0x20(%rsp), %r14
movq (%r14), %rdx
movq %rbx, %rdi
movq %rax, %rbx
xorl %esi, %esi
callq 0x17380
leaq 0x18(%rsp), %r8
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movq %r14, %r9
callq 0xcf83d
cmpq $0x18, %rax
jne 0xd0b66
movq %rbx, %rdi
callq 0xcedcd
cmpq $0x18, %rax
movq (%rsp), %rdi
je 0xd0b97
leaq 0x22d8a9(%rip), %rsi    # 0x2fe3f2
leaq 0x24b354(%rip), %rdx    # 0x31bea4
leaq 0x24b2dd(%rip), %rcx    # 0x31be34
leaq 0x24ad5a(%rip), %r8     # 0x31b8b8
movl $0x49f, %r9d            # imm = 0x49F
jmp 0xd0b8c
leaq 0x22d885(%rip), %rsi    # 0x2fe3f2
leaq 0x24b30f(%rip), %rdx    # 0x31be83
leaq 0x24b2b9(%rip), %rcx    # 0x31be34
leaq 0x24ad36(%rip), %r8     # 0x31b8b8
movq (%rsp), %rdi
movl $0x49e, %r9d            # imm = 0x49E
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r15
callq 0x92a76
testb %al, %al
je 0xd0bad
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
callq 0xcfa88
movq %rbx, 0x8(%rsp)
movq 0x18(%rsp), %rbx
leaq 0x24acfa(%rip), %r13    # 0x31b8b8
pushq $-0x1
popq %r12
xorl %r14d, %r14d
testl %r15d, %r15d
jne 0xd0c17
cmpq $0x17, %r14
ja 0xd0c17
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x705e4
cmpb %al, (%rbx,%r14)
je 0xd0c12
movq (%rsp), %rdi
leaq 0x22d801(%rip), %rsi    # 0x2fe3f2
leaq 0x24b302(%rip), %rdx    # 0x31befa
leaq 0x24b235(%rip), %rcx    # 0x31be34
movq %r13, %r8
movl $0x4a6, %r9d            # imm = 0x4A6
xorl %eax, %eax
callq 0x89dbb
movl %r12d, %r15d
incq %r14
jmp 0xd0bc5
testl %r15d, %r15d
jne 0xd0d54
leaq 0x80(%rsp), %r14
leaq 0x60(%rsp), %rdx
leaq 0x50(%rsp), %rcx
leaq 0x58(%rsp), %r8
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xce994
cmpq $0xf, (%r14)
jne 0xd0c95
cmpq $0x5, 0x60(%rsp)
movq (%rsp), %r15
jne 0xd0cea
xorl %eax, %eax
cmpq $0x4, 0x50(%rsp)
movl $0x0, %r14d
je 0xd0d1c
leaq 0x22d77d(%rip), %rsi    # 0x2fe3f2
leaq 0x24b3a7(%rip), %rdx    # 0x31c023
leaq 0x24b1b1(%rip), %rcx    # 0x31be34
leaq 0x24ac2e(%rip), %r8     # 0x31b8b8
movq %r15, %rdi
movl $0x4ae, %r9d            # imm = 0x4AE
jmp 0xd0d0f
leaq 0x22d756(%rip), %rsi    # 0x2fe3f2
leaq 0x24b362(%rip), %rdx    # 0x31c005
leaq 0x24b18a(%rip), %rcx    # 0x31be34
leaq 0x24ac07(%rip), %r8     # 0x31b8b8
movq (%rsp), %r15
movq %r15, %rdi
movl $0x4ac, %r9d            # imm = 0x4AC
jmp 0xd0d0f
leaq 0x22d72b(%rip), %rsi    # 0x2fe3f2
leaq 0x24b1b5(%rip), %rdx    # 0x31be83
leaq 0x24b15f(%rip), %rcx    # 0x31be34
leaq 0x24abdc(%rip), %r8     # 0x31b8b8
movq %r15, %rdi
movl $0x41a, %r9d            # imm = 0x41A
jmp 0xd0dd6
leaq 0x22d701(%rip), %rsi    # 0x2fe3f2
leaq 0x24b31b(%rip), %rdx    # 0x31c013
leaq 0x24b135(%rip), %rcx    # 0x31be34
leaq 0x24abb2(%rip), %r8     # 0x31b8b8
movq %r15, %rdi
movl $0x4ad, %r9d            # imm = 0x4AD
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r14
movb $0x1, %al
testb %al, %al
jne 0xd0d58
cmpq $0x4, 0x58(%rsp)
je 0xd0d58
leaq 0x22d6c3(%rip), %rsi    # 0x2fe3f2
leaq 0x24b2f8(%rip), %rdx    # 0x31c02e
leaq 0x24b0f7(%rip), %rcx    # 0x31be34
leaq 0x24ab74(%rip), %r8     # 0x31b8b8
movq %r15, %rdi
movl $0x4af, %r9d            # imm = 0x4AF
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r14
movq 0x8(%rsp), %rdi
callq 0xce497
movq 0x28(%rsp), %rdi
callq 0x568b5
movq 0x10(%rsp), %rdi
callq 0x735fd
movq %rbp, %rdi
callq 0x735fd
movq 0x30(%rsp), %rdi
callq 0x101766
leaq 0x24ab29(%rip), %rsi    # 0x31b8b8
movq %rbx, %rdi
movl $0x4b6, %edx            # imm = 0x4B6
callq 0x936f9
movl %r14d, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x22d63a(%rip), %rsi    # 0x2fe3f2
leaq 0x24b0e5(%rip), %rdx    # 0x31bea4
leaq 0x24b06e(%rip), %rcx    # 0x31be34
leaq 0x24aaeb(%rip), %r8     # 0x31b8b8
movq %r15, %rdi
movl $0x41b, %r9d            # imm = 0x41B
xorl %eax, %eax
callq 0x89dbb
pushq $-0x1
popq %r13
callq 0x92a76
testb %al, %al
je 0xd0480
movq %r12, %rdi
movq 0x28(%rsp), %rsi
callq 0xcfa88
jmp 0xd0480
movq 0x367161(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x214202(%rip), %rsi    # 0x2e5013
leaq 0x2143a7(%rip), %rdx    # 0x2e51bf
leaq 0x24b015(%rip), %rcx    # 0x31be34
leaq 0x24aa92(%rip), %r8     # 0x31b8b8
movl $0x3bc, %r9d            # imm = 0x3BC
xorl %eax, %eax
callq 0x17a50
callq 0x17390