// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/translator.c
// Function: gt_translator_unit_test
int gt_translator_unit_test(GtError *err)
{
  int had_err = 0;
  GtTranslatorStatus test_errnum;
  GtTranslator *tr;
  GtCodonIterator *ci;
  GtError *test_err;
  GtStrArray *codons, *invalidcodons;
  const char *seq = "AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGT"
                    "GGATTAAAAAAAGAGTGTCTGATAGCAGCTTCTGAACTGGT"
                    "TACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGG";
  const char *no_startcodon = "AAAAAAAAAATCATCTCCCCATTTTTTT";
  const char *invalidseq  = "ZAGCTTTTCATTCTGACTGCAAATATGTCTCTGTGT";
  const char *invalidseq2 = "AGCTTTTCATTCTGACZTGCAAATATGTCTCTGTGT";

  char translated;
  unsigned int frame;
  GtUword pos = 0;
  GtStr *protein[3];
  gt_error_check(err);

  test_err = gt_error_new();
  ci = gt_codon_iterator_simple_new(seq, (GtUword) strlen(seq), test_err);
  tr = gt_translator_new(ci);
  protein[0] = gt_str_new();
  protein[1] = gt_str_new();
  protein[2] = gt_str_new();
  codons = gt_str_array_new();
  gt_str_array_add_cstr(codons, "ACG");
  gt_str_array_add_cstr(codons, "ACT");
  invalidcodons = gt_str_array_new();
  gt_str_array_add_cstr(invalidcodons, "ACG");
  gt_str_array_add_cstr(invalidcodons, "AC");

  /* do 3-frame translation */
  gt_error_unset(test_err);
  test_errnum = gt_translator_next(tr, &translated, &frame, test_err);
  while (!test_errnum && translated) {
    gt_str_append_char(protein[frame], translated);
    test_errnum = gt_translator_next(tr, &translated, &frame, test_err);
    gt_ensure(
           test_errnum != GT_TRANSLATOR_ERROR && !gt_error_is_set(test_err));
  }
  gt_ensure(
         test_errnum == GT_TRANSLATOR_END && !gt_error_is_set(test_err));

  /* check 3-frame translation */
  gt_ensure(strcmp(gt_str_get(protein[0]),
                         "SFSF*LQRAICLCVD*KKSV**QLLNWLPAVSKLKFY*LR") == 0);
  gt_ensure(strcmp(gt_str_get(protein[1]),
                         "AFHSDCNGQYVSVWIKKRVSDSSF*TGYLP*VN*NFIDL") == 0);
  gt_ensure(strcmp(gt_str_get(protein[2]),
                         "LFILTATGNMSLCGLKKECLIAASELVTCRE*IKILLT*") == 0);

  /* find start codon -- positive */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_startcodon(tr, &pos, test_err);
  gt_ensure(!test_errnum && !gt_error_is_set(test_err));
  gt_ensure(pos == 11UL);

  /* find stop codon -- positive */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_stopcodon(tr, &pos, test_err);
  gt_ensure(!test_errnum && !gt_error_is_set(test_err));
  gt_ensure(pos == 12UL);

  /* find arbitrary codons -- positive */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_codon(tr, codons, &pos, test_err);
  gt_ensure(!test_errnum && !gt_error_is_set(test_err));
  gt_ensure(pos == 14UL);

  /* find arbitrary codons -- negative (invalid codons) */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_codon(tr, invalidcodons, &pos, test_err);
  gt_ensure(
         test_errnum == GT_TRANSLATOR_ERROR && gt_error_is_set(test_err));

  gt_error_unset(test_err);
  gt_codon_iterator_delete(ci);
  ci = gt_codon_iterator_simple_new(invalidseq,
                                    (GtUword) strlen(invalidseq),
                                    test_err);
  gt_ensure(ci && !gt_error_is_set(test_err));
  gt_translator_reset(tr, ci);
  /* check translation of sequence with invalid beginning */
  test_errnum = gt_translator_next(tr, &translated, &frame, test_err);
  gt_ensure(test_errnum && gt_error_is_set(test_err));

  /* check translation of sequence with invalid character within */
  gt_error_unset(test_err);
  gt_codon_iterator_delete(ci);
  ci = gt_codon_iterator_simple_new(invalidseq2,
                                    (GtUword) strlen(invalidseq2),
                                    test_err);
  gt_ensure(ci && !gt_error_is_set(test_err));
  gt_translator_reset(tr, ci);
  test_errnum = gt_translator_next(tr, &translated, &frame, test_err);
  while (!test_errnum && translated) {
    gt_str_append_char(protein[frame], translated);
    test_errnum = gt_translator_next(tr, &translated, &frame, test_err);
  }
  gt_ensure(
         test_errnum == GT_TRANSLATOR_ERROR && gt_error_is_set(test_err));

  /* find start codon -- fail */
  gt_error_unset(test_err);
  gt_codon_iterator_delete(ci);
  ci = gt_codon_iterator_simple_new(no_startcodon,
                                    (GtUword) strlen(no_startcodon),
                                    test_err);
  gt_ensure(ci && !gt_error_is_set(test_err));
  gt_translator_reset(tr, ci);
  test_errnum = gt_translator_find_startcodon(tr, &pos, test_err);
  gt_ensure(
         test_errnum == GT_TRANSLATOR_END && !gt_error_is_set(test_err));

  /* find stop codon -- fail */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_stopcodon(tr, &pos, test_err);
  gt_ensure(
         test_errnum == GT_TRANSLATOR_END && !gt_error_is_set(test_err));

  /* find arbitrary codons -- negative (none there) */
  gt_error_unset(test_err);
  gt_codon_iterator_rewind(ci);
  test_errnum = gt_translator_find_codon(tr, codons, &pos, test_err);
  gt_ensure(
         test_errnum == GT_TRANSLATOR_END && !gt_error_is_set(test_err));

  gt_codon_iterator_delete(ci);
  gt_translator_delete(tr);
  gt_str_delete(protein[0]);
  gt_str_delete(protein[1]);
  gt_str_delete(protein[2]);
  gt_str_array_delete(codons);
  gt_str_array_delete(invalidcodons);
  gt_error_delete(test_err);

  return had_err;
}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movl $0x0, 0xac(%rsp)
leaq 0x93391(%rip), %rax     # 0x179702
movq %rax, 0x78(%rsp)
leaq 0x933fe(%rip), %rax     # 0x17977b
movq %rax, 0x70(%rsp)
leaq 0x9340f(%rip), %rax     # 0x179798
movq %rax, 0x68(%rsp)
leaq 0x93428(%rip), %rax     # 0x1797bd
movq %rax, 0x60(%rsp)
movq $0x0, 0x50(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0xe63f9
movq 0xb0(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe63c1
jmp 0xe63f9
movq 0xcdc10(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x77c94(%rip), %rsi     # 0x15e066
leaq 0x7826f(%rip), %rdx     # 0x15e648
leaq 0x93402(%rip), %rcx     # 0x1797e2
leaq 0x93168(%rip), %r8      # 0x17954f
movl $0xe4, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe63fb
callq 0xc0b0
movq %rax, 0x90(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rdi
callq 0xb240
movq 0x28(%rsp), %rdi
movq %rax, %rsi
movq 0x90(%rsp), %rdx
callq 0xe0180
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rdi
callq 0xe59b0
movq %rax, 0xa0(%rsp)
callq 0x18f00
movq %rax, 0x30(%rsp)
callq 0x18f00
movq %rax, 0x38(%rsp)
callq 0x18f00
movq %rax, 0x40(%rsp)
callq 0x1b020
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rdi
leaq 0x93372(%rip), %rsi     # 0x1797fa
callq 0x1b180
movq 0x88(%rsp), %rdi
leaq 0x93362(%rip), %rsi     # 0x1797fe
callq 0x1b180
callq 0x1b020
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rdi
leaq 0x9333d(%rip), %rsi     # 0x1797fa
callq 0x1b180
movq 0x80(%rsp), %rdi
leaq 0x93331(%rip), %rsi     # 0x179802
callq 0x1b180
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rcx
leaq 0x5f(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0xe60e0
movl %eax, 0xa8(%rsp)
xorl %eax, %eax
cmpl $0x0, 0xa8(%rsp)
movb %al, 0x27(%rsp)
jne 0xe6528
movsbl 0x5f(%rsp), %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0xe6535
jmp 0xe65da
movl 0x58(%rsp), %eax
movq 0x30(%rsp,%rax,8), %rdi
movsbl 0x5f(%rsp), %esi
callq 0x194d0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rcx
leaq 0x5f(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0xe60e0
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe65d3
cmpl $-0x2, 0xa8(%rsp)
je 0xe6595
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6595
jmp 0xe65d1
movq 0xb0(%rsp), %rdi
leaq 0x79bd3(%rip), %rsi     # 0x160177
leaq 0x9325a(%rip), %rdx     # 0x179805
leaq 0x93230(%rip), %rcx     # 0x1797e2
leaq 0x92f96(%rip), %r8      # 0x17954f
movl $0xfa, %r9d
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe65d3
jmp 0xe65d5
jmp 0xe6509
jmp 0xe65dc
cmpl $0x0, 0xac(%rsp)
jne 0xe6641
cmpl $-0x1, 0xa8(%rsp)
jne 0xe6603
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6603
jmp 0xe663f
movq 0xb0(%rsp), %rdi
leaq 0x79b65(%rip), %rsi     # 0x160177
leaq 0x9322d(%rip), %rdx     # 0x179846
leaq 0x931c2(%rip), %rcx     # 0x1797e2
leaq 0x92f28(%rip), %r8      # 0x17954f
movl $0xfd, %r9d
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6641
jmp 0xe6643
jmp 0xe6645
cmpl $0x0, 0xac(%rsp)
jne 0xe66ab
movq 0x30(%rsp), %rdi
callq 0x19940
movq %rax, %rdi
leaq 0x93222(%rip), %rsi     # 0x179885
callq 0xb850
cmpl $0x0, %eax
je 0xe66a9
movq 0xb0(%rsp), %rdi
leaq 0x79afb(%rip), %rsi     # 0x160177
leaq 0x9322b(%rip), %rdx     # 0x1798ae
leaq 0x93158(%rip), %rcx     # 0x1797e2
leaq 0x92ebe(%rip), %r8      # 0x17954f
movl $0x101, %r9d            # imm = 0x101
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe66ab
jmp 0xe66ad
jmp 0xe66af
cmpl $0x0, 0xac(%rsp)
jne 0xe6715
movq 0x38(%rsp), %rdi
callq 0x19940
movq %rax, %rdi
leaq 0x93231(%rip), %rsi     # 0x1798fe
callq 0xb850
cmpl $0x0, %eax
je 0xe6713
movq 0xb0(%rsp), %rdi
leaq 0x79a91(%rip), %rsi     # 0x160177
leaq 0x93239(%rip), %rdx     # 0x179926
leaq 0x930ee(%rip), %rcx     # 0x1797e2
leaq 0x92e54(%rip), %r8      # 0x17954f
movl $0x103, %r9d            # imm = 0x103
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6715
jmp 0xe6717
jmp 0xe6719
cmpl $0x0, 0xac(%rsp)
jne 0xe677f
movq 0x40(%rsp), %rdi
callq 0x19940
movq %rax, %rdi
leaq 0x9323e(%rip), %rsi     # 0x179975
callq 0xb850
cmpl $0x0, %eax
je 0xe677d
movq 0xb0(%rsp), %rdi
leaq 0x79a27(%rip), %rsi     # 0x160177
leaq 0x93246(%rip), %rdx     # 0x17999d
leaq 0x93084(%rip), %rcx     # 0x1797e2
leaq 0x92dea(%rip), %r8      # 0x17954f
movl $0x105, %r9d            # imm = 0x105
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe677f
jmp 0xe6781
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rdx
leaq 0x50(%rsp), %rsi
callq 0xe5ba0
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6821
cmpl $0x0, 0xa8(%rsp)
jne 0xe67e3
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe67e3
jmp 0xe681f
movq 0xb0(%rsp), %rdi
leaq 0x79985(%rip), %rsi     # 0x160177
leaq 0x931f3(%rip), %rdx     # 0x1799ec
leaq 0x92fe2(%rip), %rcx     # 0x1797e2
leaq 0x92d48(%rip), %r8      # 0x17954f
movl $0x10b, %r9d            # imm = 0x10B
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6821
jmp 0xe6823
jmp 0xe6825
cmpl $0x0, 0xac(%rsp)
jne 0xe6875
cmpq $0xb, 0x50(%rsp)
je 0xe6873
movq 0xb0(%rsp), %rdi
leaq 0x79931(%rip), %rsi     # 0x160177
leaq 0x931ca(%rip), %rdx     # 0x179a17
leaq 0x92f8e(%rip), %rcx     # 0x1797e2
leaq 0x92cf4(%rip), %r8      # 0x17954f
movl $0x10c, %r9d            # imm = 0x10C
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6875
jmp 0xe6877
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rdx
leaq 0x50(%rsp), %rsi
callq 0xe5d00
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6917
cmpl $0x0, 0xa8(%rsp)
jne 0xe68d9
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe68d9
jmp 0xe6915
movq 0xb0(%rsp), %rdi
leaq 0x7988f(%rip), %rsi     # 0x160177
leaq 0x930fd(%rip), %rdx     # 0x1799ec
leaq 0x92eec(%rip), %rcx     # 0x1797e2
leaq 0x92c52(%rip), %r8      # 0x17954f
movl $0x112, %r9d            # imm = 0x112
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6917
jmp 0xe6919
jmp 0xe691b
cmpl $0x0, 0xac(%rsp)
jne 0xe696b
cmpq $0xc, 0x50(%rsp)
je 0xe6969
movq 0xb0(%rsp), %rdi
leaq 0x7983b(%rip), %rsi     # 0x160177
leaq 0x930e0(%rip), %rdx     # 0x179a23
leaq 0x92e98(%rip), %rcx     # 0x1797e2
leaq 0x92bfe(%rip), %r8      # 0x17954f
movl $0x113, %r9d            # imm = 0x113
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe696b
jmp 0xe696d
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rcx
leaq 0x50(%rsp), %rdx
callq 0xe5e60
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6a15
cmpl $0x0, 0xa8(%rsp)
jne 0xe69d7
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe69d7
jmp 0xe6a13
movq 0xb0(%rsp), %rdi
leaq 0x79791(%rip), %rsi     # 0x160177
leaq 0x92fff(%rip), %rdx     # 0x1799ec
leaq 0x92dee(%rip), %rcx     # 0x1797e2
leaq 0x92b54(%rip), %r8      # 0x17954f
movl $0x119, %r9d            # imm = 0x119
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6a15
jmp 0xe6a17
jmp 0xe6a19
cmpl $0x0, 0xac(%rsp)
jne 0xe6a69
cmpq $0xe, 0x50(%rsp)
je 0xe6a67
movq 0xb0(%rsp), %rdi
leaq 0x7973d(%rip), %rsi     # 0x160177
leaq 0x92fee(%rip), %rdx     # 0x179a2f
leaq 0x92d9a(%rip), %rcx     # 0x1797e2
leaq 0x92b00(%rip), %r8      # 0x17954f
movl $0x11a, %r9d            # imm = 0x11A
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6a69
jmp 0xe6a6b
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x90(%rsp), %rcx
leaq 0x50(%rsp), %rdx
callq 0xe5e60
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6b11
cmpl $-0x2, 0xa8(%rsp)
jne 0xe6ad3
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6b0f
movq 0xb0(%rsp), %rdi
leaq 0x79695(%rip), %rsi     # 0x160177
leaq 0x92f52(%rip), %rdx     # 0x179a3b
leaq 0x92cf2(%rip), %rcx     # 0x1797e2
leaq 0x92a58(%rip), %r8      # 0x17954f
movl $0x121, %r9d            # imm = 0x121
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6b11
jmp 0xe6b13
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfde0
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x68(%rsp), %rdi
callq 0xb240
movq 0x18(%rsp), %rdi
movq %rax, %rsi
movq 0x90(%rsp), %rdx
callq 0xe0180
movq %rax, 0x98(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6bc4
cmpq $0x0, 0x98(%rsp)
je 0xe6b86
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6b86
jmp 0xe6bc2
movq 0xb0(%rsp), %rdi
leaq 0x795e2(%rip), %rsi     # 0x160177
leaq 0x92edf(%rip), %rdx     # 0x179a7b
leaq 0x92c3f(%rip), %rcx     # 0x1797e2
leaq 0x929a5(%rip), %r8      # 0x17954f
movl $0x128, %r9d            # imm = 0x128
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6bc4
jmp 0xe6bc6
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xe5a30
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rcx
leaq 0x5f(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0xe60e0
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6c64
cmpl $0x0, 0xa8(%rsp)
je 0xe6c26
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6c62
movq 0xb0(%rsp), %rdi
leaq 0x79542(%rip), %rsi     # 0x160177
leaq 0x92e60(%rip), %rdx     # 0x179a9c
leaq 0x92b9f(%rip), %rcx     # 0x1797e2
leaq 0x92905(%rip), %r8      # 0x17954f
movl $0x12c, %r9d            # imm = 0x12C
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6c64
jmp 0xe6c66
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfde0
movq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x60(%rsp), %rdi
callq 0xb240
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movq 0x90(%rsp), %rdx
callq 0xe0180
movq %rax, 0x98(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6d17
cmpq $0x0, 0x98(%rsp)
je 0xe6cd9
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6cd9
jmp 0xe6d15
movq 0xb0(%rsp), %rdi
leaq 0x7948f(%rip), %rsi     # 0x160177
leaq 0x92d8c(%rip), %rdx     # 0x179a7b
leaq 0x92aec(%rip), %rcx     # 0x1797e2
leaq 0x92852(%rip), %r8      # 0x17954f
movl $0x134, %r9d            # imm = 0x134
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6d17
jmp 0xe6d19
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xe5a30
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rcx
leaq 0x5f(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0xe60e0
movl %eax, 0xa8(%rsp)
xorl %eax, %eax
cmpl $0x0, 0xa8(%rsp)
movb %al, 0xf(%rsp)
jne 0xe6d73
movsbl 0x5f(%rsp), %eax
cmpl $0x0, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xe6d7d
jmp 0xe6db8
movl 0x58(%rsp), %eax
movq 0x30(%rsp,%rax,8), %rdi
movsbl 0x5f(%rsp), %esi
callq 0x194d0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rcx
leaq 0x5f(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0xe60e0
movl %eax, 0xa8(%rsp)
jmp 0xe6d54
jmp 0xe6dba
cmpl $0x0, 0xac(%rsp)
jne 0xe6e1d
cmpl $-0x2, 0xa8(%rsp)
jne 0xe6ddf
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6e1b
movq 0xb0(%rsp), %rdi
leaq 0x79389(%rip), %rsi     # 0x160177
leaq 0x92c46(%rip), %rdx     # 0x179a3b
leaq 0x929e6(%rip), %rcx     # 0x1797e2
leaq 0x9274c(%rip), %r8      # 0x17954f
movl $0x13c, %r9d            # imm = 0x13C
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6e1d
jmp 0xe6e1f
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfde0
movq 0x70(%rsp), %rax
movq %rax, (%rsp)
movq 0x70(%rsp), %rdi
callq 0xb240
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x90(%rsp), %rdx
callq 0xe0180
movq %rax, 0x98(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6ece
cmpq $0x0, 0x98(%rsp)
je 0xe6e90
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6e90
jmp 0xe6ecc
movq 0xb0(%rsp), %rdi
leaq 0x792d8(%rip), %rsi     # 0x160177
leaq 0x92bd5(%rip), %rdx     # 0x179a7b
leaq 0x92935(%rip), %rcx     # 0x1797e2
leaq 0x9269b(%rip), %r8      # 0x17954f
movl $0x144, %r9d            # imm = 0x144
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6ece
jmp 0xe6ed0
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xe5a30
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rdx
leaq 0x50(%rsp), %rsi
callq 0xe5ba0
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe6f6b
cmpl $-0x1, 0xa8(%rsp)
jne 0xe6f2d
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6f2d
jmp 0xe6f69
movq 0xb0(%rsp), %rdi
leaq 0x7923b(%rip), %rsi     # 0x160177
leaq 0x92903(%rip), %rdx     # 0x179846
leaq 0x92898(%rip), %rcx     # 0x1797e2
leaq 0x925fe(%rip), %r8      # 0x17954f
movl $0x148, %r9d            # imm = 0x148
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe6f6b
jmp 0xe6f6d
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rdx
leaq 0x50(%rsp), %rsi
callq 0xe5d00
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe700d
cmpl $-0x1, 0xa8(%rsp)
jne 0xe6fcf
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe6fcf
jmp 0xe700b
movq 0xb0(%rsp), %rdi
leaq 0x79199(%rip), %rsi     # 0x160177
leaq 0x92861(%rip), %rdx     # 0x179846
leaq 0x927f6(%rip), %rcx     # 0x1797e2
leaq 0x9255c(%rip), %r8      # 0x17954f
movl $0x14f, %r9d            # imm = 0x14F
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe700d
jmp 0xe700f
movq 0x90(%rsp), %rdi
callq 0xc2d0
movq 0x98(%rsp), %rdi
callq 0xdfca0
movq 0xa0(%rsp), %rdi
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rcx
leaq 0x50(%rsp), %rdx
callq 0xe5e60
movl %eax, 0xa8(%rsp)
cmpl $0x0, 0xac(%rsp)
jne 0xe70b7
cmpl $-0x1, 0xa8(%rsp)
jne 0xe7079
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe7079
jmp 0xe70b5
movq 0xb0(%rsp), %rdi
leaq 0x790ef(%rip), %rsi     # 0x160177
leaq 0x927b7(%rip), %rdx     # 0x179846
leaq 0x9274c(%rip), %rcx     # 0x1797e2
leaq 0x924b2(%rip), %r8      # 0x17954f
movl $0x156, %r9d            # imm = 0x156
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xac(%rsp) # imm = 0xFFFFFFFF
jmp 0xe70b7
jmp 0xe70b9
movq 0x98(%rsp), %rdi
callq 0xdfde0
movq 0xa0(%rsp), %rdi
callq 0xe6310
movq 0x30(%rsp), %rdi
callq 0x1afc0
movq 0x38(%rsp), %rdi
callq 0x1afc0
movq 0x40(%rsp), %rdi
callq 0x1afc0
movq 0x88(%rsp), %rdi
callq 0x1b780
movq 0x80(%rsp), %rdi
callq 0x1b780
movq 0x90(%rsp), %rdi
callq 0xc490
movl 0xac(%rsp), %eax
addq $0xb8, %rsp
retq
nopw (%rax,%rax)