// File: /workspace/github_c_makefile_star2_O3/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 $0x98, %rsp
movq %rdi, %r14
callq 0xd0ece
movq %rax, %rbx
movq %rax, %rdi
callq 0xf259c
movq %rax, 0x50(%rsp)
callq 0x161d3c
movq %rax, 0x18(%rsp)
leaq 0x24207e(%rip), %rdx    # 0x37b518
movl $0x18, %edi
movl $0x1, %esi
movl $0x3a2, %ecx            # imm = 0x3A2
callq 0x10436a
movq %rax, 0x10(%rsp)
movq $0x18, 0x28(%rsp)
movq %rbx, 0x38(%rsp)
movq %rbx, %rdi
callq 0x13771c
movq %rax, %r8
testq %r14, %r14
movq %rax, (%rsp)
je 0x1394e9
movq %r14, %rdi
callq 0xfcc32
movq (%rsp), %r8
testb %al, %al
jne 0x13a3ea
movq %r14, 0x8(%rsp)
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x48(%rsp)
movq %rax, 0x40(%rsp)
movb 0x15(%r8), %cl
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
shll %cl, %eax
notl %eax
movq %rax, 0x20(%rsp)
xorl %r13d, %r13d
movq $-0x1, %rbp
movb $0x40, %al
movzbl %al, %eax
movw %ax, 0x36(%rsp)
movl $0x40, %r10d
movl $0x40, %r14d
xorl %r15d, %r15d
movzbl 0x15(%r8), %r12d
cmpl $0x0, 0x8(%r8)
je 0x139548
movq (%r8), %rdi
jmp 0x13958a
movzwl 0x36(%rsp), %eax
divb %r12b
incb %al
movzbl %al, %edi
movl %edi, 0x8(%r8)
shll $0x3, %edi
leaq 0x241fb5(%rip), %rsi    # 0x37b518
movl $0x6f, %edx
movl %r13d, %ebx
movl %r10d, %r13d
callq 0x104226
movl %r13d, %r10d
movl %ebx, %r13d
movq (%rsp), %r8
movq %rax, %rdi
movq %rax, (%r8)
movq $0x0, (%rax)
incl 0xc(%r8)
incq %rbp
movl %r10d, %ecx
movl %r13d, %ebx
subl %r12d, %ecx
jbe 0x1395ae
movq %rbp, %rax
shlq %cl, %rax
orq %rax, (%rdi,%rbx,8)
movl %ecx, %r10d
jmp 0x13964a
incl %r13d
movl 0x8(%r8), %ecx
cmpl %ecx, %r13d
jb 0x139611
movzwl 0x36(%rsp), %eax
divb 0x15(%r8)
movzbl %al, %eax
addl %ecx, %eax
incl %eax
cvtsi2sd %rax, %xmm0
mulsd 0x20e741(%rip), %xmm0   # 0x347d18
cvttsd2si %xmm0, %rax
movl %eax, 0x8(%r8)
movl %eax, %esi
shlq $0x3, %rsi
leaq 0x241f2b(%rip), %rdx    # 0x37b518
movl $0x7b, %ecx
movq %r15, 0x58(%rsp)
movl %r10d, %r15d
callq 0x104461
movl %r15d, %r10d
movq 0x58(%rsp), %r15
movq (%rsp), %r8
movq %rax, %rdi
movq %rax, (%r8)
movl %r12d, %ecx
subl %r10d, %ecx
movq %rbp, %rax
shrq %cl, %rax
orq %rax, (%rdi,%rbx,8)
movl %r13d, %eax
movq $0x0, (%rdi,%rax,8)
subl %r10d, %r12d
movl $0x40, %r10d
je 0x13964a
subl %r12d, %r10d
negl %r12d
movq %rbp, %rdx
movl %r12d, %ecx
shlq %cl, %rdx
movq %rdx, (%rdi,%rax,8)
xorl %eax, %eax
testl %r14d, %r14d
sete %al
movl $0x40, %ecx
cmovel %ecx, %r14d
addl %eax, %r15d
movq (%rdi,%r15,8), %rax
movl %r14d, %ecx
negb %cl
shlq %cl, %rax
movzbl 0x15(%r8), %edx
cmpl %edx, %r14d
jae 0x139688
incl %r15d
movq (%rdi,%r15,8), %rsi
movl %r14d, %ecx
shrq %cl, %rsi
orq %rsi, %rax
addl $0x40, %r14d
movl %edx, %ecx
negb %cl
shrq %cl, %rax
cmpq %rax, %rbp
jne 0x139af7
subl %edx, %r14d
cmpq 0x20(%rsp), %rbp
jb 0x139537
leaq 0x78(%rsp), %rbx
movl $0x0, (%rbx)
leaq 0x48(%rsp), %r14
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, (%r14)
leaq 0x40(%rsp), %r12
movq %rax, (%r12)
movq %r8, %rdi
movq %r8, %r15
callq 0x1377b3
movb 0x15(%r15), %cl
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
shll %cl, %ebp
notl %ebp
movq %r15, %rdi
movq %r12, %rsi
movq %rbp, %rdx
callq 0x13a4b5
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x137ea7
cmpq %rbp, %rax
jne 0x139b3e
movq $-0x1, %r15
leaq 0x40(%rsp), %rbx
leaq 0x48(%rsp), %r14
leaq 0x78(%rsp), %r12
movq (%rsp), %r13
incq %r15
movb 0x15(%r13), %cl
movq %r15, %rbp
shlq %cl, %rbp
orq %r15, %rbp
movq %r13, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x13a4b5
movq %r13, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x137ea7
cmpq %rax, %rbp
jne 0x139b67
cmpq 0x20(%rsp), %r15
jb 0x139723
movl 0x78(%rsp), %eax
movq (%rsp), %rbx
cmpl 0xc(%rbx), %eax
jne 0x139b90
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x40(%rsp)
leaq 0x2422dc(%rip), %rsi    # 0x37ba62
leaq 0x255d31(%rip), %rcx    # 0x38f4be
movl $0x18, %edx
movq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0xf26be
movq %r15, %rdi
movq 0x8(%rsp), %r14
movq %r14, %rsi
callq 0xf2e3b
movq %rax, %r12
movq %r15, %rdi
callq 0xf2da2
leaq 0x2422ba(%rip), %rsi    # 0x37ba7b
leaq 0x25606a(%rip), %rcx    # 0x38f832
movl $0x18, %edx
movq %r15, %rdi
callq 0xf26be
movq %r15, %rdi
movq %r14, %rsi
callq 0xf2e3b
movq %rax, %rbp
movq %r15, %rdi
callq 0xf63c5
leaq 0x78(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x137969
movq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fca
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fd9
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fe8
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fe8
movq %r15, %rdi
callq 0x161fe8
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fd9
movq %r15, %rdi
callq 0x161fd9
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fca
movq %r15, %rdi
callq 0x161fca
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fe8
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fca
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fd9
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161fe8
movq %r15, %rdi
callq 0x161ff7
movq %r15, %rdi
callq 0x161ff7
movq %r13, %rdi
callq 0x1379ab
movq %r13, %rdi
callq 0x1379ab
movl $0x2, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movq (%r13), %rax
movzbl 0x14(%rax), %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movq %r13, %rdi
callq 0x1379ab
movl $0x6, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x137b34
movq %r13, %rdi
callq 0x1379ab
movq %r13, %rdi
callq 0x1379ab
movq %r13, %rdi
callq 0x1379ab
movl $0xa, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movl $0xc, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x137b34
movl $0xd, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x137b34
movq %r13, %rdi
callq 0x1379ab
movq (%r13), %rax
movzbl 0x14(%rax), %esi
movq %r13, %rdi
callq 0x1379c9
movq (%r13), %rax
movzbl 0x14(%rax), %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movl $0x10, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x1379c9
movl $0x11, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movl $0x13, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movq (%r13), %rax
movzbl 0x14(%rax), %esi
movq %r13, %rdi
callq 0x1379c9
movq %r13, %rdi
callq 0x1379ab
movl $0x16, %esi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
movzbl %al, %esi
movq %r13, %rdi
callq 0x137b34
movq %r13, %rdi
callq 0x1379ab
leaq 0x10(%rsp), %r8
leaq 0x28(%rsp), %r9
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x138d4b
cmpq $0x18, %rax
jne 0x139c24
movq %rbx, %rdi
callq 0x1381ec
cmpq $0x18, %rax
jne 0x139c4d
movq %rbx, %rdi
callq 0x13808b
movb $0x1, %bl
cmpq $0x18, %rax
je 0x139c7b
leaq 0x22496c(%rip), %rsi    # 0x35e43e
leaq 0x242056(%rip), %rdx    # 0x37bb2f
leaq 0x241fb4(%rip), %rcx    # 0x37ba94
leaq 0x241a31(%rip), %r8     # 0x37b518
xorl %ebx, %ebx
movq %r14, %rdi
movl $0x41c, %r9d            # imm = 0x41C
jmp 0x139c74
leaq 0x224940(%rip), %rsi    # 0x35e43e
leaq 0x241fa7(%rip), %rdx    # 0x37baac
leaq 0x241f88(%rip), %rcx    # 0x37ba94
leaq 0x241a05(%rip), %r8     # 0x37b518
xorl %r12d, %r12d
movq 0x8(%rsp), %rdi
movl $0x3c4, %r9d            # imm = 0x3C4
xorl %eax, %eax
callq 0xfcb67
movq (%rsp), %rdi
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
xorl %ebp, %ebp
movq 0x18(%rsp), %r15
jmp 0x139bd2
leaq 0x2248f9(%rip), %rsi    # 0x35e43e
leaq 0x241f73(%rip), %rdx    # 0x37babf
leaq 0x241f41(%rip), %rcx    # 0x37ba94
leaq 0x2419be(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x3ce, %r9d            # imm = 0x3CE
jmp 0x139bb7
leaq 0x2248d0(%rip), %rsi    # 0x35e43e
leaq 0x241f4a(%rip), %rdx    # 0x37babf
leaq 0x241f18(%rip), %rcx    # 0x37ba94
leaq 0x241995(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x3d3, %r9d            # imm = 0x3D3
jmp 0x139bb7
leaq 0x2248a7(%rip), %rsi    # 0x35e43e
leaq 0x241f2d(%rip), %rdx    # 0x37bacb
leaq 0x241eef(%rip), %rcx    # 0x37ba94
leaq 0x24196c(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x3d5, %r9d            # imm = 0x3D5
xorl %eax, %eax
callq 0xfcb67
movq 0x18(%rsp), %r15
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
xorl %r12d, %r12d
xorl %ebp, %ebp
movq (%rsp), %rdi
callq 0x137778
movq 0x38(%rsp), %rdi
callq 0xd0e1c
movq %r12, %rdi
callq 0xea375
movq %rbp, %rdi
callq 0xea375
movq %r15, %rdi
callq 0x161e59
movq 0x10(%rsp), %rdi
leaq 0x241913(%rip), %rsi    # 0x37b518
movl $0x4b6, %edx            # imm = 0x4B6
callq 0x1045eb
movl %r13d, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x224813(%rip), %rsi    # 0x35e43e
leaq 0x241eb1(%rip), %rdx    # 0x37bae3
leaq 0x241e5b(%rip), %rcx    # 0x37ba94
leaq 0x2418d8(%rip), %r8     # 0x37b518
xorl %ebx, %ebx
movq %r14, %rdi
movl $0x41a, %r9d            # imm = 0x41A
jmp 0x139c74
leaq 0x2247ea(%rip), %rsi    # 0x35e43e
leaq 0x241ea9(%rip), %rdx    # 0x37bb04
leaq 0x241e32(%rip), %rcx    # 0x37ba94
leaq 0x2418af(%rip), %r8     # 0x37b518
xorl %ebx, %ebx
movq %r14, %rdi
movl $0x41b, %r9d            # imm = 0x41B
xorl %eax, %eax
callq 0xfcb67
callq 0x103d66
testb %al, %al
je 0x139c92
movq (%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x139018
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
testb %bl, %bl
je 0x139bce
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb (%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a076
jne 0x139ccf
leaq 0x1(%rbx), %rax
cmpq $0x17, %rbx
movq %rax, %rbx
jb 0x139ca7
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rdx
xorl %esi, %esi
callq 0x173a0
movl $0x17, %r9d
movq (%rsp), %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
leaq 0x28(%rsp), %rax
pushq %rax
leaq 0x18(%rsp), %rax
pushq %rax
callq 0x138667
addq $0x10, %rsp
cmpq $0x18, %rax
jne 0x13a0a2
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb (%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a0cb
jne 0x139d42
leaq 0x1(%rbx), %rax
cmpq $0x17, %rbx
movq %rax, %rbx
jb 0x139d1a
movq 0x10(%rsp), %rbx
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x173a0
subq $0x8, %rsp
movl $0x17, %r9d
movq 0x8(%rsp), %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %rbx
callq 0x138a96
addq $0x10, %rsp
cmpq $0x18, %rax
jne 0x13a0f4
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb (%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a11d
jne 0x139db2
leaq 0x1(%rbx), %rax
cmpq $0x17, %rbx
movq %rax, %rbx
jb 0x139d8a
movq %r12, 0x20(%rsp)
xorl %ebx, %ebx
leaq 0x2416c0(%rip), %r15    # 0x37b480
leaq 0x241709(%rip), %r12    # 0x37b4d0
xorl %r14d, %r14d
leaq 0x24165f(%rip), %rax    # 0x37b430
movq (%rbx,%rax), %rsi
movq (%rbx,%r15), %rdx
movq (%rsp), %rdi
callq 0x138333
movq (%rbx,%r12), %rcx
cmpq %rcx, %rax
jne 0x13a150
jne 0x139e02
leaq 0x1(%r14), %rax
addq $0x8, %rbx
cmpq $0x5, %r14
movq %rax, %r14
jb 0x139dca
movq 0x10(%rsp), %rbx
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x173a0
subq $0x8, %rsp
movl $0xc, %r9d
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %r12
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
pushq %rbx
callq 0x138a96
addq $0x10, %rsp
cmpq $0xd, %rax
movq 0x18(%rsp), %r15
jne 0x13a191
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb (%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a1ba
jne 0x139e7c
leaq 0x1(%rbx), %rax
cmpq $0xc, %rbx
movq %rax, %rbx
jb 0x139e54
movq 0x10(%rsp), %r14
movq 0x28(%rsp), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x173a0
subq $0x8, %rsp
movl $0xd, %ebx
movl $0xd, %r8d
movl $0x17, %r9d
movq 0x8(%rsp), %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
pushq %r14
callq 0x138a96
addq $0x10, %rsp
cmpq $0xb, %rax
jne 0x13a1e6
movq 0x10(%rsp), %r14
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb -0xd(%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a212
jne 0x139ef4
leaq 0x1(%rbx), %rax
cmpq $0x17, %rbx
movq %rax, %rbx
jb 0x139ecb
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rdx
xorl %esi, %esi
callq 0x173a0
movl $0xc, %r9d
movq (%rsp), %rdi
movq 0x20(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
leaq 0x28(%rsp), %rax
pushq %rax
leaq 0x18(%rsp), %rax
pushq %rax
callq 0x138667
addq $0x10, %rsp
cmpq $0xf, %rax
jne 0x13a23e
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
cmpb %al, (%r14,%rbx)
jne 0x13a26a
leaq 0x1(%rbx), %rax
cmpq $0xe, %rbx
movq %rax, %rbx
jb 0x139f41
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rdx
xorl %esi, %esi
callq 0x173a0
movl $0xc, %r8d
movl $0x17, %r9d
movq (%rsp), %rdi
movq 0x20(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
leaq 0x28(%rsp), %rax
pushq %rax
leaq 0x18(%rsp), %rax
pushq %rax
callq 0x138667
addq $0x10, %rsp
cmpq $0xa, %rax
jne 0x13a296
movq $-0x1, %rbx
movq 0x10(%rsp), %r14
leaq 0xf(%rbx), %rsi
movq %rbp, %rdi
xorl %edx, %edx
callq 0xe7bbc
cmpb %al, 0x1(%r14,%rbx)
jne 0x13a2c2
incq %rbx
cmpq $0x9, %rbx
jb 0x139fba
movq (%rsp), %rdi
callq 0x137778
movq %rbp, %rdi
movq 0x18(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1377d5
movq %rax, %r15
leaq 0x10(%rsp), %rbx
movq (%rbx), %rdi
leaq 0x28(%rsp), %r14
movq (%r14), %rdx
xorl %esi, %esi
callq 0x173a0
movq %r15, %r12
movq %r15, %rdi
movq 0x20(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movq %rbx, %r8
movq %r14, %r9
callq 0x138d4b
cmpq $0x18, %rax
jne 0x13a2ee
movq %r12, %rdi
callq 0x1381ec
movb $0x1, %bl
cmpq $0x18, %rax
je 0x13a31e
leaq 0x2243ef(%rip), %rsi    # 0x35e43e
leaq 0x241aae(%rip), %rdx    # 0x37bb04
leaq 0x241a37(%rip), %rcx    # 0x37ba94
leaq 0x2414b4(%rip), %r8     # 0x37b518
xorl %ebx, %ebx
movq 0x8(%rsp), %rdi
movl $0x49f, %r9d            # imm = 0x49F
jmp 0x13a317
leaq 0x2243c1(%rip), %rsi    # 0x35e43e
leaq 0x241ad6(%rip), %rdx    # 0x37bb5a
leaq 0x241a09(%rip), %rcx    # 0x37ba94
leaq 0x241486(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x424, %r9d            # imm = 0x424
jmp 0x13a144
leaq 0x224395(%rip), %rsi    # 0x35e43e
leaq 0x241a33(%rip), %rdx    # 0x37bae3
leaq 0x2419dd(%rip), %rcx    # 0x37ba94
leaq 0x24145a(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x42b, %r9d            # imm = 0x42B
jmp 0x13a144
leaq 0x22436c(%rip), %rsi    # 0x35e43e
leaq 0x241a81(%rip), %rdx    # 0x37bb5a
leaq 0x2419b4(%rip), %rcx    # 0x37ba94
leaq 0x241431(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x430, %r9d            # imm = 0x430
jmp 0x13a144
leaq 0x224343(%rip), %rsi    # 0x35e43e
leaq 0x2419e1(%rip), %rdx    # 0x37bae3
leaq 0x24198b(%rip), %rcx    # 0x37ba94
leaq 0x241408(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x436, %r9d            # imm = 0x436
jmp 0x13a144
leaq 0x22431a(%rip), %rsi    # 0x35e43e
leaq 0x241a2f(%rip), %rdx    # 0x37bb5a
leaq 0x241962(%rip), %rcx    # 0x37ba94
leaq 0x2413df(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x43b, %r9d            # imm = 0x43B
xorl %eax, %eax
callq 0xfcb67
jmp 0x139bce
leaq 0x2242e7(%rip), %rsi    # 0x35e43e
leaq 0x241a0f(%rip), %rdx    # 0x37bb6d
leaq 0x24192f(%rip), %rcx    # 0x37ba94
leaq 0x2413ac(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x456, %r9d            # imm = 0x456
xorl %eax, %eax
callq 0xfcb67
movq 0x18(%rsp), %r15
movq (%rsp), %rdi
movq 0x20(%rsp), %r12
jmp 0x139bd2
leaq 0x2242a6(%rip), %rsi    # 0x35e43e
leaq 0x2419ea(%rip), %rdx    # 0x37bb89
leaq 0x2418ee(%rip), %rcx    # 0x37ba94
leaq 0x24136b(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x461, %r9d            # imm = 0x461
jmp 0x13a144
leaq 0x22427d(%rip), %rsi    # 0x35e43e
leaq 0x241992(%rip), %rdx    # 0x37bb5a
leaq 0x2418c5(%rip), %rcx    # 0x37ba94
leaq 0x241342(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x466, %r9d            # imm = 0x466
jmp 0x13a144
leaq 0x224251(%rip), %rsi    # 0x35e43e
leaq 0x2419c3(%rip), %rdx    # 0x37bbb7
leaq 0x241899(%rip), %rcx    # 0x37ba94
leaq 0x241316(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x472, %r9d            # imm = 0x472
jmp 0x13a144
leaq 0x224225(%rip), %rsi    # 0x35e43e
leaq 0x2419de(%rip), %rdx    # 0x37bbfe
leaq 0x24186d(%rip), %rcx    # 0x37ba94
leaq 0x2412ea(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x478, %r9d            # imm = 0x478
jmp 0x13a177
leaq 0x2241f9(%rip), %rsi    # 0x35e43e
leaq 0x2419eb(%rip), %rdx    # 0x37bc37
leaq 0x241841(%rip), %rcx    # 0x37ba94
leaq 0x2412be(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x482, %r9d            # imm = 0x482
jmp 0x13a177
leaq 0x2241cd(%rip), %rsi    # 0x35e43e
leaq 0x2418e2(%rip), %rdx    # 0x37bb5a
leaq 0x241815(%rip), %rcx    # 0x37ba94
leaq 0x241292(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x486, %r9d            # imm = 0x486
jmp 0x13a177
leaq 0x2241a1(%rip), %rsi    # 0x35e43e
leaq 0x2419aa(%rip), %rdx    # 0x37bc4e
leaq 0x2417e9(%rip), %rcx    # 0x37ba94
leaq 0x241266(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x490, %r9d            # imm = 0x490
jmp 0x13a177
leaq 0x224175(%rip), %rsi    # 0x35e43e
leaq 0x24188a(%rip), %rdx    # 0x37bb5a
leaq 0x2417bd(%rip), %rcx    # 0x37ba94
leaq 0x24123a(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x495, %r9d            # imm = 0x495
jmp 0x13a177
leaq 0x224149(%rip), %rsi    # 0x35e43e
leaq 0x2417e7(%rip), %rdx    # 0x37bae3
leaq 0x241791(%rip), %rcx    # 0x37ba94
leaq 0x24120e(%rip), %r8     # 0x37b518
xorl %ebx, %ebx
movq 0x8(%rsp), %rdi
movl $0x49e, %r9d            # imm = 0x49E
xorl %eax, %eax
callq 0xfcb67
callq 0x103d66
testb %al, %al
je 0x13a334
movq %r12, %rdi
movq 0x38(%rsp), %rsi
callq 0x139018
testb %bl, %bl
je 0x13a4a8
movq 0x10(%rsp), %r14
xorl %ebx, %ebx
movq %rbp, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xe7bbc
movb (%r14,%rbx), %cl
cmpb %al, %cl
jne 0x13a3ef
jne 0x13a36b
leaq 0x1(%rbx), %rax
cmpq $0x17, %rbx
movq %rax, %rbx
jb 0x13a343
leaq 0x90(%rsp), %rbx
leaq 0x70(%rsp), %rdx
leaq 0x60(%rsp), %rcx
leaq 0x68(%rsp), %r8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x137cab
cmpq $0xf, (%rbx)
jne 0x13a422
cmpq $0x5, 0x70(%rsp)
jne 0x13a44b
cmpq $0x4, 0x60(%rsp)
jne 0x13a474
xorl %r13d, %r13d
cmpq $0x4, 0x68(%rsp)
je 0x13a4a8
leaq 0x224079(%rip), %rsi    # 0x35e43e
leaq 0x2418c2(%rip), %rdx    # 0x37bc8e
leaq 0x2416c1(%rip), %rcx    # 0x37ba94
leaq 0x24113e(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x4af, %r9d            # imm = 0x4AF
jmp 0x13a49b
callq 0x401d5
leaq 0x224048(%rip), %rsi    # 0x35e43e
leaq 0x24175d(%rip), %rdx    # 0x37bb5a
leaq 0x241690(%rip), %rcx    # 0x37ba94
leaq 0x24110d(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x4a6, %r9d            # imm = 0x4A6
xorl %eax, %eax
callq 0xfcb67
jmp 0x13a4a8
leaq 0x224015(%rip), %rsi    # 0x35e43e
leaq 0x241835(%rip), %rdx    # 0x37bc65
leaq 0x24165d(%rip), %rcx    # 0x37ba94
leaq 0x2410da(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x4ac, %r9d            # imm = 0x4AC
jmp 0x13a49b
leaq 0x223fec(%rip), %rsi    # 0x35e43e
leaq 0x24181a(%rip), %rdx    # 0x37bc73
leaq 0x241634(%rip), %rcx    # 0x37ba94
leaq 0x2410b1(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x4ad, %r9d            # imm = 0x4AD
jmp 0x13a49b
leaq 0x223fc3(%rip), %rsi    # 0x35e43e
leaq 0x241801(%rip), %rdx    # 0x37bc83
leaq 0x24160b(%rip), %rcx    # 0x37ba94
leaq 0x241088(%rip), %r8     # 0x37b518
movq 0x8(%rsp), %rdi
movl $0x4ae, %r9d            # imm = 0x4AE
xorl %eax, %eax
callq 0xfcb67
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movq 0x18(%rsp), %r15
movq %r12, %rdi
jmp 0x13a187