// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/mgth/mg_outputwriter.c
// Function: as_coding
static int as_coding(const ParseStruct *parsestruct_ptr,
                     char *contig_seq,
                      GtStr *as_seq,
                      GtUword from,
                      GtUword to,
                      unsigned short current_row, GtError * err)
{
  int had_err = 0;

  GtUword startpoint = from,
    endpoint = to,
    startpoint_start,
    startpoint_atg,
    startpoint_safe,
    contig_len;

  char contig_triplet[3],
   *contig_seq_tri = NULL,
    contig_as;

  short current_frame,
    current_frame_tmp,
    found = 0,
    found_start = 0,
    found_end = 0,
    start_codon = 0;

  gt_error_check(err);
  gt_assert(contig_seq);

  contig_len = strlen(contig_seq);
  current_frame = get_current_frame(current_row);
  current_frame_tmp = current_frame;

  if (current_frame_tmp < 0)
  {
    current_frame_tmp *= -1;

    had_err = mg_reverse_complement(contig_seq, contig_len, err);

    startpoint = contig_len - 1 - to;
    endpoint = contig_len - from;
  }

  if (!had_err)
  {
    if (startpoint < 3)
    {
      startpoint = current_frame_tmp - 1;
      startpoint_start = startpoint;
    }
    else
    {
      startpoint -= (((startpoint) - current_frame_tmp) % 3);
      startpoint -= 1;
      startpoint_start = startpoint;
    }

    startpoint_safe = startpoint;

    while ((startpoint <= endpoint) && (startpoint <= contig_len - 3))
    {
      /* Aktuelles Query-Triplet */
      contig_triplet[0] = contig_seq[startpoint];
      contig_triplet[1] = contig_seq[startpoint + 1];
      contig_triplet[2] = contig_seq[startpoint + 2];
      /* XXX gt_assert(contig_triplet); */

      /* Bestimmen der AS der jeweiligen Triplets */
      contig_as = mg_codon2amino(contig_triplet[0],
                                 contig_triplet[1], contig_triplet[2]);
      gt_assert(contig_as);

      gt_str_append_char(as_seq, contig_as);
      startpoint += 3;
    }

    if (ARGUMENTSSTRUCT(extended_mode))
    {
      GtStr *as_seq_start;

      as_seq_start = gt_str_new();

      contig_seq_tri = gt_malloc(4*sizeof (char));

      /* DNA-Basen-Triplet einlesen */
      contig_seq_tri[0] = tolower(contig_seq[startpoint - 3]);
      contig_seq_tri[1] = tolower(contig_seq[startpoint - 2]);
      contig_seq_tri[2] = tolower(contig_seq[startpoint - 1]);
      contig_seq_tri[3] = '\0';
      gt_assert(contig_seq_tri);

      found = gt_check_stopcodon(contig_seq_tri);

      while (startpoint <= contig_len - 3 && !found_end && found)
      {
        /* DNA-Basen-Triplet einlesen */
        contig_seq_tri[0] = tolower(contig_seq[startpoint - 3]);
        contig_seq_tri[1] = tolower(contig_seq[startpoint - 2]);
        contig_seq_tri[2] = tolower(contig_seq[startpoint - 1]);
        contig_seq_tri[3] = '\0';
        gt_assert(contig_seq_tri);

        found_end = gt_check_stopcodon(contig_seq_tri);

        if (found_end)
        {
          /* Aktuelles Query-Triplet */
          contig_triplet[0] = contig_seq[startpoint];
          contig_triplet[1] = contig_seq[startpoint + 1];
          contig_triplet[2] = contig_seq[startpoint + 2];
          /* XXX gt_assert(contig_triplet); */

          /* Bestimmen der AS der jeweiligen Triplets */
          contig_as = mg_codon2amino(contig_triplet[0],
                                     contig_triplet[1], contig_triplet[2]);
          gt_assert(contig_as);

          gt_str_append_char(as_seq, contig_as);
        }
        /* Startwert um 3 Basen weitersetzen */
        startpoint += 3;
      }

      /* DNA-Basen-Triplet einlesen */
      contig_seq_tri[0] = tolower(contig_seq[startpoint_start]);
      contig_seq_tri[1] = tolower(contig_seq[startpoint_start + 1]);
      contig_seq_tri[2] = tolower(contig_seq[startpoint_start + 2]);
      contig_seq_tri[3] = '\0';
      gt_assert(contig_seq_tri);

      start_codon = check_startcodon(parsestruct_ptr, contig_seq_tri);

      found = 0;

      if (!start_codon)
      {
        while (startpoint_start > 2 && !found)
        {
          /* DNA-Basen-Triplet einlesen */
          contig_seq_tri[0] = tolower(contig_seq[startpoint_start - 3]);
          contig_seq_tri[1] =
            tolower(contig_seq[startpoint_start - 2]);
          contig_seq_tri[2] =
            tolower(contig_seq[startpoint_start - 1]);
          contig_seq_tri[3] = '\0';
          gt_assert(contig_seq_tri);

          found = gt_check_stopcodon(contig_seq_tri);

          startpoint_atg = startpoint_start;

          if (found || startpoint_start < 3)
          {
            while (startpoint_atg <= startpoint_safe - 2)
            {
              if (!found_start)
              {
                /* DNA-Basen-Triplet einlesen */
                contig_seq_tri[0] = tolower(contig_seq[startpoint_atg]);
                contig_seq_tri[1] =
                  tolower(contig_seq[startpoint_atg + 1]);
                contig_seq_tri[2] =
                  tolower(contig_seq[startpoint_atg + 2]);
                contig_seq_tri[3] = '\0';
                gt_assert(contig_seq_tri);

                start_codon = check_startcodon(parsestruct_ptr,
                                               contig_seq_tri);

                /* ueberpruefen auf Start-Codon */
                if (start_codon)
                {
                  gt_str_append_char(as_seq_start, 'M');
                  found_start = 1;
                }
              }
              else
              {
                /* Aktuelles Query-Triplet */
                contig_triplet[0] = contig_seq[startpoint_atg];
                contig_triplet[1] = contig_seq[startpoint_atg + 1];
                contig_triplet[2] = contig_seq[startpoint_atg + 2];
                /* XXX gt_assert(contig_triplet); */

                /* Bestimmen der AS der jeweiligen Triplets */
                contig_as = mg_codon2amino(contig_triplet[0],
                                           contig_triplet[1],
                                           contig_triplet[2]);
                gt_assert(contig_as);

                gt_str_append_char(as_seq_start, contig_as);
              }
              /* Startwert um 3 Basen weitersetzen */
              startpoint_atg += 3;
            }
          }
          startpoint_start -= 3;
        }
        gt_str_append_str(as_seq_start, as_seq);
        gt_str_reset(as_seq);
        gt_str_append_str(as_seq, as_seq_start);
      }
      gt_str_reset(as_seq_start);
      gt_str_delete(as_seq_start);
      gt_free(contig_seq_tri);
    }

    if (current_frame < 0)
    {
      had_err = mg_reverse_complement(contig_seq, contig_len, err);
    }
  }
  return had_err;
}

// Assembly:
subq $0x98, %rsp
movw %r9w, %ax
movq 0xa0(%rsp), %r9
movq %rdi, 0x90(%rsp)
movq %rsi, 0x88(%rsp)
movq %rdx, 0x80(%rsp)
movq %rcx, 0x78(%rsp)
movq %r8, 0x70(%rsp)
movw %ax, 0x6e(%rsp)
movl $0x0, 0x68(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x58(%rsp)
movq $0x0, 0x28(%rsp)
movw $0x0, 0x20(%rsp)
movw $0x0, 0x1e(%rsp)
movw $0x0, 0x1c(%rsp)
movw $0x0, 0x1a(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x3182b1
movq 0xa0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x318279
jmp 0x3182b1
movq 0x323d20(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fdd89(%rip), %rsi    # 0x516013
leaq 0x1fdf2e(%rip), %rdx    # 0x5161bf
leaq 0x27d339(%rip), %rcx    # 0x5955d1
leaq 0x27d050(%rip), %r8     # 0x5952ef
movl $0x48d, %r9d            # imm = 0x48D
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x3182b3
jmp 0x3182b5
cmpq $0x0, 0x88(%rsp)
jne 0x3182f8
movq 0x323cd9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fdd42(%rip), %rsi    # 0x516013
leaq 0x27d2ba(%rip), %rdx    # 0x595592
leaq 0x27d2f2(%rip), %rcx    # 0x5955d1
leaq 0x27d009(%rip), %r8     # 0x5952ef
movl $0x48e, %r9d            # imm = 0x48E
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x3182fa
movq 0x88(%rsp), %rdi
callq 0x192b0
movq %rax, 0x38(%rsp)
movzwl 0x6e(%rsp), %eax
movl %eax, %edi
callq 0x4eb870
movw %ax, 0x24(%rsp)
movw 0x24(%rsp), %ax
movw %ax, 0x22(%rsp)
movswl 0x22(%rsp), %eax
cmpl $0x0, %eax
jge 0x31837e
movswl 0x22(%rsp), %eax
imull $-0x1, %eax, %eax
movw %ax, 0x22(%rsp)
movq 0x88(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0xa0(%rsp), %rdx
callq 0x31ac60
movl %eax, 0x68(%rsp)
movq 0x38(%rsp), %rax
subq $0x1, %rax
subq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x38(%rsp), %rax
subq 0x78(%rsp), %rax
movq %rax, 0x58(%rsp)
cmpl $0x0, 0x68(%rsp)
jne 0x318c06
cmpq $0x3, 0x60(%rsp)
jae 0x3183ac
movswl 0x22(%rsp), %eax
subl $0x1, %eax
cltq
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x3183e9
movq 0x60(%rsp), %rax
movswq 0x22(%rsp), %rcx
subq %rcx, %rax
movl $0x3, %ecx
xorl %edx, %edx
divq %rcx
movq 0x60(%rsp), %rax
subq %rdx, %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x60(%rsp), %rcx
xorl %eax, %eax
cmpq 0x58(%rsp), %rcx
movb %al, 0xf(%rsp)
ja 0x31841d
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
subq $0x3, %rcx
cmpq %rcx, %rax
setbe %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x31842a
jmp 0x3184ea
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0x35(%rsp)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, 0x36(%rsp)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, 0x37(%rsp)
movb 0x35(%rsp), %cl
movb 0x36(%rsp), %al
movsbl %cl, %edi
movsbl %al, %esi
movsbl 0x37(%rsp), %edx
callq 0x4e9cd0
movb %al, 0x27(%rsp)
cmpb $0x0, 0x27(%rsp)
jne 0x3184c3
movq 0x323b0e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fdb77(%rip), %rsi    # 0x516013
leaq 0x27d138(%rip), %rdx    # 0x5955db
leaq 0x27d127(%rip), %rcx    # 0x5955d1
leaq 0x27ce3e(%rip), %r8     # 0x5952ef
movl $0x4b9, %r9d            # imm = 0x4B9
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x3184c5
movq 0x80(%rsp), %rdi
movsbl 0x27(%rsp), %esi
callq 0x11da70
movq 0x60(%rsp), %rax
addq $0x3, %rax
movq %rax, 0x60(%rsp)
jmp 0x3183f3
movq 0x90(%rsp), %rax
testb $0x1, 0x1ea(%rax)
je 0x318bdc
callq 0x11d4a0
movq %rax, 0x10(%rsp)
movl $0x4, %edi
leaq 0x27cdda(%rip), %rsi    # 0x5952ef
movl $0x4c5, %edx            # imm = 0x4C5
callq 0xe80f0
movq %rax, 0x28(%rsp)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x3, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, (%rax)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x2, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x1(%rax)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x2(%rax)
movq 0x28(%rsp), %rax
movb $0x0, 0x3(%rax)
cmpq $0x0, 0x28(%rsp)
jne 0x3185d8
movq 0x3239f9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fda62(%rip), %rsi    # 0x516013
leaq 0x27d02d(%rip), %rdx    # 0x5955e5
leaq 0x27d012(%rip), %rcx    # 0x5955d1
leaq 0x27cd29(%rip), %r8     # 0x5952ef
movl $0x4cc, %r9d            # imm = 0x4CC
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x3185da
movq 0x28(%rsp), %rdi
callq 0x4ed810
movw %ax, 0x20(%rsp)
movq 0x60(%rsp), %rcx
movq 0x38(%rsp), %rdx
subq $0x3, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0xe(%rsp)
ja 0x31861f
xorl %eax, %eax
cmpw $0x0, 0x1c(%rsp)
movb %al, 0xe(%rsp)
jne 0x31861f
movswl 0x20(%rsp), %eax
cmpl $0x0, %eax
setne %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0x31862c
jmp 0x3187bd
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x3, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, (%rax)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x2, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x1(%rax)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x2(%rax)
movq 0x28(%rsp), %rax
movb $0x0, 0x3(%rax)
cmpq $0x0, 0x28(%rsp)
jne 0x3186e0
movq 0x3238f1(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd95a(%rip), %rsi    # 0x516013
leaq 0x27cf25(%rip), %rdx    # 0x5955e5
leaq 0x27cf0a(%rip), %rcx    # 0x5955d1
leaq 0x27cc21(%rip), %r8     # 0x5952ef
movl $0x4d7, %r9d            # imm = 0x4D7
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x3186e2
movq 0x28(%rsp), %rdi
callq 0x4ed810
movw %ax, 0x1c(%rsp)
cmpw $0x0, 0x1c(%rsp)
je 0x3187aa
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0x35(%rsp)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, 0x36(%rsp)
movq 0x88(%rsp), %rax
movq 0x60(%rsp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, 0x37(%rsp)
movb 0x35(%rsp), %cl
movb 0x36(%rsp), %al
movsbl %cl, %edi
movsbl %al, %esi
movsbl 0x37(%rsp), %edx
callq 0x4e9cd0
movb %al, 0x27(%rsp)
cmpb $0x0, 0x27(%rsp)
jne 0x318796
movq 0x32383b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd8a4(%rip), %rsi    # 0x516013
leaq 0x27ce65(%rip), %rdx    # 0x5955db
leaq 0x27ce54(%rip), %rcx    # 0x5955d1
leaq 0x27cb6b(%rip), %r8     # 0x5952ef
movl $0x4e6, %r9d            # imm = 0x4E6
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x318798
movq 0x80(%rsp), %rdi
movsbl 0x27(%rsp), %esi
callq 0x11da70
movq 0x60(%rsp), %rax
addq $0x3, %rax
movq %rax, 0x60(%rsp)
jmp 0x3185e9
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, (%rax)
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
movsbl 0x1(%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x1(%rax)
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
movsbl 0x2(%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x2(%rax)
movq 0x28(%rsp), %rax
movb $0x0, 0x3(%rax)
cmpq $0x0, 0x28(%rsp)
jne 0x318867
movq 0x32376a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd7d3(%rip), %rsi    # 0x516013
leaq 0x27cd9e(%rip), %rdx    # 0x5955e5
leaq 0x27cd83(%rip), %rcx    # 0x5955d1
leaq 0x27ca9a(%rip), %r8     # 0x5952ef
movl $0x4f3, %r9d            # imm = 0x4F3
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x318869
movq 0x90(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x319620
movw %ax, 0x1a(%rsp)
movw $0x0, 0x20(%rsp)
cmpw $0x0, 0x1a(%rsp)
jne 0x318bb2
jmp 0x318895
xorl %eax, %eax
cmpq $0x2, 0x50(%rsp)
movb %al, 0xd(%rsp)
jbe 0x3188b2
cmpw $0x0, 0x20(%rsp)
setne %al
xorb $-0x1, %al
movb %al, 0xd(%rsp)
movb 0xd(%rsp), %al
testb $0x1, %al
jne 0x3188bf
jmp 0x318b81
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
subq $0x3, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, (%rax)
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
subq $0x2, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x1(%rax)
movq 0x88(%rsp), %rax
movq 0x50(%rsp), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x2(%rax)
movq 0x28(%rsp), %rax
movb $0x0, 0x3(%rax)
cmpq $0x0, 0x28(%rsp)
jne 0x318973
movq 0x32365e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd6c7(%rip), %rsi    # 0x516013
leaq 0x27cc92(%rip), %rdx    # 0x5955e5
leaq 0x27cc77(%rip), %rcx    # 0x5955d1
leaq 0x27c98e(%rip), %r8     # 0x5952ef
movl $0x504, %r9d            # imm = 0x504
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x318975
movq 0x28(%rsp), %rdi
callq 0x4ed810
movw %ax, 0x20(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x48(%rsp)
movswl 0x20(%rsp), %eax
cmpl $0x0, %eax
jne 0x3189a4
cmpq $0x3, 0x50(%rsp)
jae 0x318b6e
jmp 0x3189a6
movq 0x48(%rsp), %rax
movq 0x40(%rsp), %rcx
subq $0x2, %rcx
cmpq %rcx, %rax
ja 0x318b6c
cmpw $0x0, 0x1e(%rsp)
jne 0x318aaf
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, (%rax)
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movsbl 0x1(%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x1(%rax)
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movsbl 0x2(%rax,%rcx), %edi
callq 0x19a20
movb %al, %cl
movq 0x28(%rsp), %rax
movb %cl, 0x2(%rax)
movq 0x28(%rsp), %rax
movb $0x0, 0x3(%rax)
cmpq $0x0, 0x28(%rsp)
jne 0x318a73
movq 0x32355e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd5c7(%rip), %rsi    # 0x516013
leaq 0x27cb92(%rip), %rdx    # 0x5955e5
leaq 0x27cb77(%rip), %rcx    # 0x5955d1
leaq 0x27c88e(%rip), %r8     # 0x5952ef
movl $0x517, %r9d            # imm = 0x517
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x318a75
movq 0x90(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x319620
movw %ax, 0x1a(%rsp)
cmpw $0x0, 0x1a(%rsp)
je 0x318aaa
movq 0x10(%rsp), %rdi
movl $0x4d, %esi
callq 0x11da70
movw $0x1, 0x1e(%rsp)
jmp 0x318b59
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0x35(%rsp)
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, 0x36(%rsp)
movq 0x88(%rsp), %rax
movq 0x48(%rsp), %rcx
movb 0x2(%rax,%rcx), %al
movb %al, 0x37(%rsp)
movb 0x35(%rsp), %cl
movb 0x36(%rsp), %al
movsbl %cl, %edi
movsbl %al, %esi
movsbl 0x37(%rsp), %edx
callq 0x4e9cd0
movb %al, 0x27(%rsp)
cmpb $0x0, 0x27(%rsp)
jne 0x318b48
movq 0x323489(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1fd4f2(%rip), %rsi    # 0x516013
leaq 0x27cab3(%rip), %rdx    # 0x5955db
leaq 0x27caa2(%rip), %rcx    # 0x5955d1
leaq 0x27c7b9(%rip), %r8     # 0x5952ef
movl $0x52f, %r9d            # imm = 0x52F
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x318b4a
movq 0x10(%rsp), %rdi
movsbl 0x27(%rsp), %esi
callq 0x11da70
movq 0x48(%rsp), %rax
addq $0x3, %rax
movq %rax, 0x48(%rsp)
jmp 0x3189a6
jmp 0x318b6e
movq 0x50(%rsp), %rax
subq $0x3, %rax
movq %rax, 0x50(%rsp)
jmp 0x318895
movq 0x10(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x11d750
movq 0x80(%rsp), %rdi
callq 0x11e110
movq 0x80(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x11d750
movq 0x10(%rsp), %rdi
callq 0x11e110
movq 0x10(%rsp), %rdi
callq 0x11f560
movq 0x28(%rsp), %rdi
leaq 0x27c71d(%rip), %rsi    # 0x5952ef
movl $0x53f, %edx            # imm = 0x53F
callq 0xe88c0
movswl 0x24(%rsp), %eax
cmpl $0x0, %eax
jge 0x318c04
movq 0x88(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0xa0(%rsp), %rdx
callq 0x31ac60
movl %eax, 0x68(%rsp)
jmp 0x318c06
movl 0x68(%rsp), %eax
addq $0x98, %rsp
retq
nopw %cs:(%rax,%rax)