// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/rcr.c
// Function: rcr_get_read_infos
static int rcr_get_read_infos(const bam1_t *alignment, GtRcrEncoder *rcr_enc)
{
  uint32_t *cigar;
  const bam1_core_t *bam_core;
  GtUword i,
                j,
                rel_readpos,
                readpos,
                readlength,
                varpos,
                prev_varpos,
                rel_varpos,
                q,
                read_i,
                ref_i;
  int cigar_op,
      cigar_len;
  uint8_t *qual_string,
          *seq_string;
  bool exact_match = true;
  GtUchar base,
          ref;
  bam_core = &alignment->core;
  qual_string = bam1_qual(alignment);
  seq_string = bam1_seq(alignment);
  cigar = bam1_cigar(alignment);

  /* read is unmapped */
  if (bam_core->flag & BAM_FUNMAP)
    return 0;
  if (rcr_enc->store_mapping_qual)
    gt_disc_distri_add(rcr_enc->qual_mapping_distr,
                       (GtUword) bam_core->qual);

  readlength = (GtUword) bam_core->l_qseq;
  gt_disc_distri_add(rcr_enc->readlength_distr, readlength);
  if (rcr_enc->readlength == 0) {
    rcr_enc->readlength = readlength;
    rcr_enc->max_read_length = readlength;
  }
  else {
    if (rcr_enc->readlength != readlength) {
      if (readlength > rcr_enc->max_read_length)
        rcr_enc->max_read_length = readlength;
      rcr_enc->cons_readlength = false;
    }
  }

  if (rcr_enc->store_all_qual) {
    for (j = 0; j < readlength; j++) {
      q = ((GtUword) qual_string[j]) + PHREDOFFSET;
      gt_disc_distri_add(rcr_enc->qual_distr, q);
    }
  }

  readpos = (GtUword) bam_core->pos;
  ref_i = readpos;
  read_i = 0;

  rel_readpos = ref_i - rcr_enc->prev_readpos;
  gt_disc_distri_add(rcr_enc->readpos_distr, rel_readpos);
  rcr_enc->prev_readpos = readpos;

  varpos = 0;
  prev_varpos = 0;

  for (i = 0; i < (GtUword) bam_core->n_cigar; i++) {
    GtAlphabet *alpha = gt_encseq_alphabet(rcr_enc->encseq);
    unsigned int alpha_size = gt_alphabet_size(alpha);

    gt_safe_assign(cigar_op, (cigar[i] & 0xf));
    gt_safe_assign(cigar_len, (cigar[i] >> 4));

    /* cequal and cdiff are matches in the alignment */
    if (cigar_op == BAM_CEQUAL || cigar_op == BAM_CDIFF)
      cigar_op = BAM_CMATCH;
    switch (cigar_op) {
      case BAM_CMATCH:
        for (j = 0; j < (GtUword) cigar_len; j++) {
          base = rcr_bambase2gtbase((uint8_t) bam1_seqi(seq_string, read_i + j),
                                alpha);
          ref = gt_encseq_get_encoded_char(rcr_enc->encseq,
                                         ref_i + j + rcr_enc->cur_seq_startpos,
                                         GT_READMODE_FORWARD);
          if (ref != base) {
            rcr_enc->present_cigar_ops[BAM_CMATCH]++;
            exact_match = false;
            varpos = read_i + j;

            if (rcr_enc->store_var_qual) {
              q = ((GtUword) qual_string[read_i + j]) + PHREDOFFSET;
              gt_disc_distri_add(rcr_enc->qual_distr, q);
            }
          }
        }
        read_i += cigar_len;
        ref_i += cigar_len;
        break;

      case BAM_CSOFT_CLIP:
        rcr_enc->present_cigar_ops[BAM_CSOFT_CLIP]++;
        exact_match = false;
        varpos = read_i;

        for (j = 0; j < (GtUword) cigar_len; j++) {
          base = rcr_bambase2gtbase((uint8_t) bam1_seqi(seq_string, read_i + j),
                                   alpha);

          if (base ==
                gt_alphabet_encode(alpha,
                                   (char) gt_alphabet_wildcard_show(
                                     alpha)))
            base = (GtUchar) (alpha_size - 1);
          rcr_enc->ins_bases[base]++;
        }

        if (rcr_enc->store_var_qual) {
          for (j = 0; j < (GtUword) cigar_len; j++) {
            q = ((GtUword) qual_string[read_i + j]) + PHREDOFFSET;
            gt_disc_distri_add(rcr_enc->qual_distr, q);
          }
        }
        read_i += cigar_len;
        break;

      case BAM_CDEL:
        rcr_enc->present_cigar_ops[BAM_CDEL]++;
        exact_match = false;
        varpos = read_i;
        ref_i += cigar_len;
        break;

      case BAM_CREF_SKIP:
        rcr_enc->present_cigar_ops[BAM_CREF_SKIP]++;
        exact_match = false;
        varpos = read_i;
        ref_i += cigar_len;
        break;

      case BAM_CINS:
        rcr_enc->present_cigar_ops[BAM_CINS]++;
        exact_match = false;
        varpos = read_i;

        for (j = 0; j < (GtUword) cigar_len; j++) {
          base = rcr_bambase2gtbase((uint8_t) bam1_seqi(seq_string, read_i + j),
                                   alpha);

          if (base == gt_alphabet_encode(alpha,
                                         (char) gt_alphabet_wildcard_show(
                                         alpha)))
            base = (GtUchar) (alpha_size - 1);
          rcr_enc->ins_bases[base]++;
        }

        rcr_enc->ins_bases[alpha_size]++;

        if (rcr_enc->store_var_qual) {
          for (j = 0; j < (GtUword) cigar_len; j++) {
            q = ((GtUword) qual_string[read_i + j]) + PHREDOFFSET;
            gt_disc_distri_add(rcr_enc->qual_distr, q);
          }
        }
        read_i += cigar_len;
        break;

      default:
        ;
    }
    rel_varpos = varpos - prev_varpos;
    gt_disc_distri_add(rcr_enc->varpos_distr, rel_varpos);
    prev_varpos = varpos;
  }

  /* store read number of inexact matches */
  if (!exact_match)
    gt_queue_add(rcr_enc->not_exact_matches, (void*) rcr_enc->cur_read);

  gt_safe_assign(rcr_enc->prev_readpos, bam_core->pos);
  rcr_enc->cur_read = rcr_enc->cur_read + 1;
  return 0;
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x108(%rsp)
movq %rsi, 0x100(%rsp)
movb $0x1, 0x7f(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0x108(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x108(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x30, %rcx
shll $0x2, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq 0x108(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x18, %rcx
andq $0xff, %rcx
movslq %ecx, %rcx
addq %rcx, %rax
movq 0x108(%rsp), %rcx
movl 0x10(%rcx), %ecx
addl $0x1, %ecx
sarl %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x88(%rsp)
movq 0x108(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x108(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x30, %rcx
shll $0x2, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq 0x108(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x18, %rcx
andq $0xff, %rcx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x80(%rsp)
movq 0x108(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x108(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x18, %rcx
andq $0xff, %rcx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0xf8(%rsp)
movq 0xf0(%rsp), %rax
movq 0x8(%rax), %rax
shrq $0x20, %rax
andq $0xffff, %rax           # imm = 0xFFFF
andl $0x4, %eax
cmpl $0x0, %eax
je 0x1bf385
movl $0x0, 0x114(%rsp)
jmp 0x1bfee0
movq 0x100(%rsp), %rax
testb $0x1, 0x1bc(%rax)
je 0x1bf3c1
movq 0x100(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0xf0(%rsp), %rax
movq 0x8(%rax), %rax
shrq $0x10, %rax
andq $0xff, %rax
movl %eax, %eax
movl %eax, %esi
callq 0xa50a0
movq 0xf0(%rsp), %rax
movslq 0x10(%rax), %rax
movq %rax, 0xc8(%rsp)
movq 0x100(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0xc8(%rsp), %rsi
callq 0xa50a0
movq 0x100(%rsp), %rax
cmpq $0x0, 0x1b0(%rax)
jne 0x1bf430
movq 0xc8(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x1b0(%rax)
movq 0xc8(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x190(%rax)
jmp 0x1bf48a
movq 0x100(%rsp), %rax
movq 0x1b0(%rax), %rax
cmpq 0xc8(%rsp), %rax
je 0x1bf488
movq 0xc8(%rsp), %rax
movq 0x100(%rsp), %rcx
cmpq 0x190(%rcx), %rax
jbe 0x1bf479
movq 0xc8(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x190(%rax)
movq 0x100(%rsp), %rax
movb $0x0, 0x1b8(%rax)
jmp 0x1bf48a
movq 0x100(%rsp), %rax
testb $0x1, 0x1bb(%rax)
je 0x1bf50a
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
cmpq 0xc8(%rsp), %rax
jae 0x1bf508
movq 0x88(%rsp), %rax
movq 0xe0(%rsp), %rcx
movzbl (%rax,%rcx), %eax
addq $0x21, %rax
movq %rax, 0xa8(%rsp)
movq 0x100(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0xa8(%rsp), %rsi
callq 0xa50a0
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bf4a7
jmp 0x1bf50a
movq 0xf0(%rsp), %rax
movslq 0x4(%rax), %rax
movq %rax, 0xd0(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
movq 0x98(%rsp), %rax
movq 0x100(%rsp), %rcx
subq 0x1a8(%rcx), %rax
movq %rax, 0xd8(%rsp)
movq 0x100(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0xd8(%rsp), %rsi
callq 0xa50a0
movq 0xd0(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x1a8(%rax)
movq $0x0, 0xc0(%rsp)
movq $0x0, 0xb8(%rsp)
movq $0x0, 0xe8(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf0(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x30, %rcx
movl %ecx, %ecx
cmpq %rcx, %rax
jae 0x1bfddb
movq 0x100(%rsp), %rax
movq 0x98(%rax), %rdi
callq 0xb0f00
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
callq 0x7e920
movl %eax, 0x6c(%rsp)
movq 0xf8(%rsp), %rax
movq 0xe8(%rsp), %rcx
movl (%rax,%rcx,4), %eax
andl $0xf, %eax
movl %eax, 0x68(%rsp)
movl 0x68(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0x68(%rsp), %eax
cmpl 0x64(%rsp), %eax
jne 0x1bf655
cmpl $0x1, 0x68(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x64(%rsp)
setl %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1bf655
movl 0x64(%rsp), %eax
movl %eax, 0x94(%rsp)
xorl %eax, %eax
movl %eax, 0x40(%rsp)
jmp 0x1bf660
movl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x1bf660
movl 0x40(%rsp), %eax
movl %eax, 0x60(%rsp)
cmpl $0x0, 0x60(%rsp)
je 0x1bf69d
movq 0x47c92a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3589a5(%rip), %rsi    # 0x518025
leaq 0x3a1e58(%rip), %rdx    # 0x5614df
movl $0x34f, %ecx            # imm = 0x34F
movb $0x0, %al
callq 0x199f0
movl $0x1, %edi
callq 0x19890
jmp 0x1bf69f
jmp 0x1bf6a1
movq 0xf8(%rsp), %rax
movq 0xe8(%rsp), %rcx
movl (%rax,%rcx,4), %eax
shrl $0x4, %eax
movl %eax, 0x5c(%rsp)
movl 0x5c(%rsp), %eax
movl %eax, 0x58(%rsp)
movl 0x5c(%rsp), %eax
cmpl 0x58(%rsp), %eax
jne 0x1bf6ff
cmpl $0x1, 0x5c(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x58(%rsp)
setl %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1bf6ff
movl 0x58(%rsp), %eax
movl %eax, 0x90(%rsp)
xorl %eax, %eax
movl %eax, 0x3c(%rsp)
jmp 0x1bf70a
movl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x1bf70a
movl 0x3c(%rsp), %eax
movl %eax, 0x54(%rsp)
cmpl $0x0, 0x54(%rsp)
je 0x1bf747
movq 0x47c880(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3588fb(%rip), %rsi    # 0x518025
leaq 0x3a1dae(%rip), %rdx    # 0x5614df
movl $0x350, %ecx            # imm = 0x350
movb $0x0, %al
callq 0x199f0
movl $0x1, %edi
callq 0x19890
jmp 0x1bf749
cmpl $0x7, 0x94(%rsp)
je 0x1bf75d
cmpl $0x8, 0x94(%rsp)
jne 0x1bf768
movl $0x0, 0x94(%rsp)
movl 0x94(%rsp), %eax
movq %rax, 0x30(%rsp)
subq $0x4, %rax
ja 0x1bfd7f
movq 0x30(%rsp), %rax
leaq 0x3a1cba(%rip), %rcx    # 0x561444
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x90(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1bf8fe
movq 0x80(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
shrq %rcx
movzbl (%rax,%rcx), %eax
movq 0xa0(%rsp), %rdx
addq 0xe0(%rsp), %rdx
andq $0x1, %rdx
movl $0x1, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
sarl %cl, %eax
andl $0xf, %eax
movq 0x70(%rsp), %rsi
movzbl %al, %edi
callq 0x1bfef0
movb %al, 0x7e(%rsp)
movq 0x100(%rsp), %rax
movq 0x98(%rax), %rdi
movq 0x98(%rsp), %rsi
addq 0xe0(%rsp), %rsi
movq 0x100(%rsp), %rax
addq 0x188(%rax), %rsi
xorl %edx, %edx
callq 0xa9da0
movb %al, 0x7d(%rsp)
movzbl 0x7d(%rsp), %eax
movzbl 0x7e(%rsp), %ecx
cmpl %ecx, %eax
je 0x1bf8e3
movq 0x100(%rsp), %rax
movq 0xf0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xf0(%rax)
movb $0x0, 0x7f(%rsp)
movq 0xa0(%rsp), %rax
addq 0xe0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x100(%rsp), %rax
testb $0x1, 0x1be(%rax)
je 0x1bf8e1
movq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
movzbl (%rax,%rcx), %eax
addq $0x21, %rax
movq %rax, 0xa8(%rsp)
movq 0x100(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0xa8(%rsp), %rsi
callq 0xa50a0
jmp 0x1bf8e3
jmp 0x1bf8e5
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bf79f
movslq 0x90(%rsp), %rax
addq 0xa0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movslq 0x90(%rsp), %rax
addq 0x98(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x1bfd81
movq 0x100(%rsp), %rax
movq 0x110(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x110(%rax)
movb $0x0, 0x7f(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x90(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1bfa57
movq 0x80(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
shrq %rcx
movzbl (%rax,%rcx), %eax
movq 0xa0(%rsp), %rdx
addq 0xe0(%rsp), %rdx
andq $0x1, %rdx
movl $0x1, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
sarl %cl, %eax
andl $0xf, %eax
movq 0x70(%rsp), %rsi
movzbl %al, %edi
callq 0x1bfef0
movb %al, 0x7e(%rsp)
movzbl 0x7e(%rsp), %eax
movl %eax, 0x2c(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x70(%rsp), %rdi
callq 0x7e9d0
movq 0x20(%rsp), %rdi
movsbl %al, %esi
callq 0x7f6f0
movb %al, %cl
movl 0x2c(%rsp), %eax
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1bfa1e
movl 0x6c(%rsp), %eax
subl $0x1, %eax
movb %al, 0x7e(%rsp)
movq 0x100(%rsp), %rax
movq 0xa8(%rax), %rax
movzbl 0x7e(%rsp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bf96e
movq 0x100(%rsp), %rax
testb $0x1, 0x1be(%rax)
je 0x1bfae2
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x90(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1bfae0
movq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
movzbl (%rax,%rcx), %eax
addq $0x21, %rax
movq %rax, 0xa8(%rsp)
movq 0x100(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0xa8(%rsp), %rsi
callq 0xa50a0
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bfa74
jmp 0x1bfae2
movslq 0x90(%rsp), %rax
addq 0xa0(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x1bfd81
movq 0x100(%rsp), %rax
movq 0x100(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x100(%rax)
movb $0x0, 0x7f(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movslq 0x90(%rsp), %rax
addq 0x98(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x1bfd81
movq 0x100(%rsp), %rax
movq 0x108(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x108(%rax)
movb $0x0, 0x7f(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movslq 0x90(%rsp), %rax
addq 0x98(%rsp), %rax
movq %rax, 0x98(%rsp)
jmp 0x1bfd81
movq 0x100(%rsp), %rax
movq 0xf8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xf8(%rax)
movb $0x0, 0x7f(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x90(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1bfcbb
movq 0x80(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
shrq %rcx
movzbl (%rax,%rcx), %eax
movq 0xa0(%rsp), %rdx
addq 0xe0(%rsp), %rdx
andq $0x1, %rdx
movl $0x1, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
sarl %cl, %eax
andl $0xf, %eax
movq 0x70(%rsp), %rsi
movzbl %al, %edi
callq 0x1bfef0
movb %al, 0x7e(%rsp)
movzbl 0x7e(%rsp), %eax
movl %eax, 0x1c(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x70(%rsp), %rdi
callq 0x7e9d0
movq 0x10(%rsp), %rdi
movsbl %al, %esi
callq 0x7f6f0
movb %al, %cl
movl 0x1c(%rsp), %eax
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1bfc82
movl 0x6c(%rsp), %eax
subl $0x1, %eax
movb %al, 0x7e(%rsp)
movq 0x100(%rsp), %rax
movq 0xa8(%rax), %rax
movzbl 0x7e(%rsp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bfbd2
movq 0x100(%rsp), %rax
movq 0xa8(%rax), %rax
movl 0x6c(%rsp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq 0x100(%rsp), %rax
testb $0x1, 0x1be(%rax)
je 0x1bfd65
movq $0x0, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x90(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1bfd63
movq 0x88(%rsp), %rax
movq 0xa0(%rsp), %rcx
addq 0xe0(%rsp), %rcx
movzbl (%rax,%rcx), %eax
addq $0x21, %rax
movq %rax, 0xa8(%rsp)
movq 0x100(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0xa8(%rsp), %rsi
callq 0xa50a0
movq 0xe0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x1bfcf7
jmp 0x1bfd65
movslq 0x90(%rsp), %rax
addq 0xa0(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x1bfd81
jmp 0x1bfd81
movq 0xc0(%rsp), %rax
subq 0xb8(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x100(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0xb0(%rsp), %rsi
callq 0xa50a0
movq 0xc0(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xe8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe8(%rsp)
jmp 0x1bf5ad
testb $0x1, 0x7f(%rsp)
jne 0x1bfe05
movq 0x100(%rsp), %rax
movq 0xb0(%rax), %rdi
movq 0x100(%rsp), %rax
movq 0x180(%rax), %rsi
callq 0xfd170
jmp 0x1bfe07
movq 0xf0(%rsp), %rax
movl 0x4(%rax), %eax
movl %eax, 0x50(%rsp)
movslq 0x50(%rsp), %rax
movq %rax, 0x48(%rsp)
movl 0x50(%rsp), %eax
movq 0x48(%rsp), %rcx
cmpl %ecx, %eax
jne 0x1bfe69
cmpl $0x1, 0x50(%rsp)
setl %al
andb $0x1, %al
movzbl %al, %eax
cmpq $0x1, 0x48(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1bfe69
movq 0x48(%rsp), %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x1a8(%rax)
xorl %eax, %eax
movl %eax, 0xc(%rsp)
jmp 0x1bfe74
movl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x1bfe74
movl 0xc(%rsp), %eax
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
je 0x1bfeb1
movq 0x47c116(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x358191(%rip), %rsi    # 0x518025
leaq 0x3a1644(%rip), %rdx    # 0x5614df
movl $0x3bb, %ecx            # imm = 0x3BB
movb $0x0, %al
callq 0x199f0
movl $0x1, %edi
callq 0x19890
jmp 0x1bfeb3
movq 0x100(%rsp), %rax
movq 0x180(%rax), %rcx
addq $0x1, %rcx
movq 0x100(%rsp), %rax
movq %rcx, 0x180(%rax)
movl $0x0, 0x114(%rsp)
movl 0x114(%rsp), %eax
addq $0x118, %rsp            # imm = 0x118
retq
nop