// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/rdj-ovlfind-gusfield.c
// Function: gt_rdj_gusfield
void gt_rdj_gusfield(Sequentialsuffixarrayreader *ssar,
    GtUword min_length, bool find_submaximal, bool show_progressbar,
    GtUword firstrevcompl, GtSpmproc proc, void* procdata)
{

  /* index */
  const Suffixarray *sarr;
  const GtEncseq *encseq;
  const GtUword *suftab;
  GtUword nofsequences;
  GtReadmode readmode;
  GtUword totallength;
  unsigned int numofchars;
  GtBitsequence *sspbittab;

  /* splitting */
  GtArrayRdjGusfieldIndexBounds stack;
  GtArrayBoundswithchar bwci;
  RdjGusfieldIndexBounds parent, child, *parent_stack_ptr;
  GtUword seqpos_idx;
  GtUword idx;

  /* stacks for spm determination */
  GtArrayGtUword *matchlen_stacks;
  GtBitsequence *has_match;

  /* progressbar */
  GtUint64 progress;

  gt_assert(min_length>0);
  gt_assert(ssar != NULL);

  sarr             = gt_suffixarraySequentialsuffixarrayreader(ssar);
  encseq           = gt_encseqSequentialsuffixarrayreader(ssar);
  suftab           = gt_suftabSequentialsuffixarrayreader(ssar);
  nofsequences     = gt_encseq_num_of_sequences(encseq);
  readmode         = gt_readmodeSequentialsuffixarrayreader(ssar);
  totallength      = gt_encseq_total_length(encseq);
  numofchars       = gt_alphabet_num_of_chars(gt_encseq_alphabet(encseq));

  /* prepare sspbittab */
  GT_INITBITTAB(sspbittab, totallength+1);
  for (idx = 1UL; idx <= nofsequences - 1; idx++)
  {
    GT_SETIBIT(sspbittab, gt_encseq_seqstartpos(encseq, idx) - 1);
  }
  GT_SETIBIT(sspbittab, totallength);

  matchlen_stacks = gt_malloc(sizeof *matchlen_stacks * nofsequences);
  GT_INITBITTAB(has_match, nofsequences);

  for (idx = 0UL; idx < nofsequences; idx++)
  {
    GT_INITARRAY(&(matchlen_stacks[idx]), GtUword);
  }

  if (show_progressbar)
  {
    progress = 0ULL;
    gt_progressbar_start(&progress, (GtUint64)totallength);
  }

  GT_INITARRAY(&stack, RdjGusfieldIndexBounds);

  /* prepare bwci array */
  bwci.spaceBoundswithchar = gt_malloc(sizeof *bwci.spaceBoundswithchar *
                                       (numofchars + 1));
  bwci.nextfreeBoundswithchar = 0UL;
  bwci.allocatedBoundswithchar = (GtUword) (numofchars + 1);

  /* get rid of compiler warnings */
  parent.specials_leftbound = 0UL;
  child.specials_leftbound = 0UL;

  /* start at [0,n] */
  parent.offset = 0UL;
  parent.leftbound = 0UL;
  parent.rightbound = totallength;
  parent.visited = false;
  GT_STOREINARRAY(&stack, RdjGusfieldIndexBounds, 1UL, parent);

  while (stack.nextfreeRdjGusfieldIndexBounds > 0UL)
  {
    parent_stack_ptr = stack.spaceRdjGusfieldIndexBounds +
                          stack.nextfreeRdjGusfieldIndexBounds - 1;
    parent = *parent_stack_ptr;

    if (parent.visited)
    {
      /* search terminal edges and pop spm stacks */
      if (parent.specials_leftbound <= parent.rightbound &&
           parent.offset >= min_length)
        processspecials(parent.specials_leftbound, parent.rightbound,
                        parent.offset, parent.visited, suftab, encseq,
                        totallength, nofsequences, matchlen_stacks, has_match,
                        sspbittab);
      stack.nextfreeRdjGusfieldIndexBounds--;
      continue;
    }

    parent_stack_ptr->visited = true;

    /* split interval */
    gt_lcpintervalsplitwithoutspecial(&bwci, encseq, readmode,
                                   totallength, suftab,
                                   parent.offset,
                                   parent.leftbound,
                                   parent.rightbound);

    if (bwci.nextfreeBoundswithchar > 0)
    {
      parent.specials_leftbound = bwci.spaceBoundswithchar[
                                    bwci.nextfreeBoundswithchar-1].rbound+1;
    }
    else
    {
      parent.specials_leftbound = parent.leftbound;
    }
    parent_stack_ptr->specials_leftbound = parent.specials_leftbound;

    /* search terminal edges and push on spm stacks */
    if (parent.specials_leftbound <= parent.rightbound &&
         parent.offset >= min_length)
      processspecials(parent.specials_leftbound, parent.rightbound,
                      parent.offset, parent.visited, suftab, encseq,
                      totallength, nofsequences, matchlen_stacks, has_match,
                      sspbittab);

    for (idx = bwci.nextfreeBoundswithchar; idx > 0; idx--)
    {
      child.leftbound = bwci.spaceBoundswithchar[idx-1].lbound;
      child.rightbound = bwci.spaceBoundswithchar[idx-1].rbound;
      child.visited = false;

      if (child.leftbound == child.rightbound)
      {
        if (parent.offset >= min_length)
          rdj_gusfield_processleafedge(suftab[child.leftbound], encseq,
                          nofsequences, matchlen_stacks, has_match, sspbittab,
                          find_submaximal, firstrevcompl, proc, procdata);
        if (show_progressbar) progress++;
      }
      else
      {
        maximize_child_offset(&child, sarr);
        GT_STOREINARRAY(&stack, RdjGusfieldIndexBounds, 1, child);
      }
    }

    for (seqpos_idx = parent.specials_leftbound;
         seqpos_idx <= parent.rightbound;
         seqpos_idx++)
    {
      if (parent.offset >= min_length)
        rdj_gusfield_processleafedge(suftab[seqpos_idx], encseq,
                        nofsequences, matchlen_stacks, has_match, sspbittab,
                        find_submaximal, firstrevcompl, proc, procdata);
      if (show_progressbar) progress++;
    }
  }

  GT_FREEARRAY(&stack, RdjGusfieldIndexBounds);
  GT_FREEARRAY(&bwci,Boundswithchar);

  if (show_progressbar) gt_progressbar_stop();

  for (idx = 0; idx < nofsequences; idx++)
  {
    GT_FREEARRAY(&(matchlen_stacks[idx]), GtUword);
  }
  gt_free(has_match);
  gt_free(sspbittab);
  gt_free(matchlen_stacks);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movb %cl, %al
movb %dl, %cl
movq 0x1a0(%rsp), %rdx
movq %rdi, 0x180(%rsp)
movq %rsi, 0x178(%rsp)
andb $0x1, %cl
movb %cl, 0x177(%rsp)
andb $0x1, %al
movb %al, 0x176(%rsp)
movq %r8, 0x168(%rsp)
movq %r9, 0x160(%rsp)
cmpq $0x0, 0x178(%rsp)
ja 0x2849ec
movq 0x3b75e5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x29164e(%rip), %rsi    # 0x516013
leaq 0x2fc275(%rip), %rdx    # 0x580c41
leaq 0x2fc27b(%rip), %rcx    # 0x580c4e
leaq 0x2fc284(%rip), %r8     # 0x580c5e
movl $0xdb, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2849ee
jmp 0x2849f0
cmpq $0x0, 0x180(%rsp)
jne 0x284a33
movq 0x3b759e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x291607(%rip), %rsi    # 0x516013
leaq 0x2a6248(%rip), %rdx    # 0x52ac5b
leaq 0x2fc234(%rip), %rcx    # 0x580c4e
leaq 0x2fc23d(%rip), %r8     # 0x580c5e
movl $0xdc, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x284a35
movq 0x180(%rsp), %rdi
callq 0x23be80
movq %rax, 0x158(%rsp)
movq 0x180(%rsp), %rdi
callq 0x23bd50
movq %rax, 0x150(%rsp)
movq 0x180(%rsp), %rdi
callq 0x23bdf0
movq %rax, 0x148(%rsp)
movq 0x150(%rsp), %rdi
callq 0xa9d50
movq %rax, 0x140(%rsp)
movq 0x180(%rsp), %rdi
callq 0x23bda0
movl %eax, 0x13c(%rsp)
movq 0x150(%rsp), %rdi
callq 0xa9d00
movq %rax, 0x130(%rsp)
movq 0x150(%rsp), %rdi
callq 0xb0f00
movq %rax, %rdi
callq 0x7e8c0
movl %eax, 0x12c(%rsp)
movq 0x130(%rsp), %rax
addq $0x1, %rax
shrq $0x6, %rax
cmpq $0x0, %rax
jne 0x284af0
movl $0x1, %eax
movq %rax, 0x48(%rsp)
jmp 0x284b0d
movq 0x130(%rsp), %rax
addq $0x1, %rax
subq $0x1, %rax
shrq $0x6, %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rsi
shlq $0x3, %rsi
xorl %eax, %eax
movl %eax, %edi
leaq 0x2fc133(%rip), %rdx    # 0x580c5e
movl $0xe7, %ecx
callq 0xe8540
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rdi
movq 0x68(%rsp), %rdx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x19360
movq $0x1, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq 0x140(%rsp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
ja 0x284c08
movq 0x150(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xb0530
movq %rax, %rcx
subq $0x1, %rcx
andq $0x3f, %rcx
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
shrq %cl, %rax
movq %rax, 0x38(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x150(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xb0530
movq 0x38(%rsp), %rdx
movq %rax, %rcx
movq 0x40(%rsp), %rax
subq $0x1, %rcx
shrq $0x6, %rcx
orq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x284b61
movq 0x130(%rsp), %rcx
andq $0x3f, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
shrq %cl, %rdx
movq 0x120(%rsp), %rax
movq 0x130(%rsp), %rcx
shrq $0x6, %rcx
orq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
imulq $0x18, 0x140(%rsp), %rdi
leaq 0x2fc011(%rip), %rsi    # 0x580c5e
movl $0xee, %edx
callq 0xe80f0
movq %rax, 0x80(%rsp)
movq 0x140(%rsp), %rax
shrq $0x6, %rax
cmpq $0x0, %rax
jne 0x284c7d
movl $0x1, %eax
movq %rax, 0x30(%rsp)
jmp 0x284c96
movq 0x140(%rsp), %rax
subq $0x1, %rax
shrq $0x6, %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rsi
shlq $0x3, %rsi
xorl %eax, %eax
movl %eax, %edi
leaq 0x2fbfaa(%rip), %rdx    # 0x580c5e
movl $0xef, %ecx
callq 0xe8540
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rdx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x19360
movq $0x0, 0x88(%rsp)
movq 0x88(%rsp), %rax
cmpq 0x140(%rsp), %rax
jae 0x284d63
jmp 0x284cf8
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, 0x10(%rax)
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, 0x8(%rax)
jmp 0x284d4d
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x284ce4
testb $0x1, 0x176(%rsp)
je 0x284d88
movq $0x0, 0x70(%rsp)
movq 0x130(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0xf9830
jmp 0x284d8a
movq $0x0, 0x108(%rsp)
movq $0x0, 0x118(%rsp)
movq $0x0, 0x110(%rsp)
movl 0x12c(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
imulq $0x18, %rax, %rdi
leaq 0x2fbe99(%rip), %rsi    # 0x580c5e
movl $0x100, %edx            # imm = 0x100
callq 0xe80f0
movq %rax, 0xf0(%rsp)
movq $0x0, 0x100(%rsp)
movl 0x12c(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
movq %rax, 0xf8(%rsp)
movq $0x0, 0xe0(%rsp)
movq $0x0, 0xb8(%rsp)
movq $0x0, 0xc8(%rsp)
movq $0x0, 0xd0(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0xd8(%rsp)
movb $0x0, 0xe8(%rsp)
jmp 0x284e41
movq 0x118(%rsp), %rax
addq $0x0, %rax
cmpq 0x110(%rsp), %rax
jb 0x284ee6
movq $0x1, 0x58(%rsp)
xorl %eax, %eax
cmpq 0x58(%rsp), %rax
jbe 0x284ea5
movq 0x3b712c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x291195(%rip), %rsi    # 0x516013
leaq 0x294322(%rip), %rdx    # 0x5191a7
leaq 0x2fbdc2(%rip), %rcx    # 0x580c4e
leaq 0x2fbdcb(%rip), %r8     # 0x580c5e
movl $0x10d, %r9d            # imm = 0x10D
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x284ea7
movq 0x58(%rsp), %rax
addq 0x110(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x108(%rsp), %rdi
imulq $0x28, 0x110(%rsp), %rsi
leaq 0x2fbd8a(%rip), %rdx    # 0x580c5e
movl $0x10d, %ecx            # imm = 0x10D
callq 0xe8540
movq %rax, 0x108(%rsp)
jmp 0x284ee8
cmpq $0x0, 0x108(%rsp)
jne 0x284f2b
movq 0x3b70a6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x29110f(%rip), %rsi    # 0x516013
leaq 0x2fbd74(%rip), %rdx    # 0x580c7f
leaq 0x2fbd3c(%rip), %rcx    # 0x580c4e
leaq 0x2fbd45(%rip), %r8     # 0x580c5e
movl $0x10d, %r9d            # imm = 0x10D
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x284f2d
jmp 0x284f2f
movq 0x108(%rsp), %rdi
movq 0x118(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x118(%rsp)
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0xc8(%rsp), %rsi
movl $0x28, %edx
callq 0x19610
jmp 0x284f69
cmpq $0x0, 0x118(%rsp)
jbe 0x285539
movq 0x108(%rsp), %rax
imulq $0x28, 0x118(%rsp), %rcx
addq %rcx, %rax
addq $-0x28, %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rsi
leaq 0xc8(%rsp), %rdi
movl $0x28, %edx
callq 0x19610
testb $0x1, 0xe8(%rsp)
je 0x285078
movq 0xe0(%rsp), %rax
cmpq 0xd8(%rsp), %rax
ja 0x28505f
movq 0xc8(%rsp), %rax
cmpq 0x178(%rsp), %rax
jb 0x28505f
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
movq 0xc8(%rsp), %rdx
movb 0xe8(%rsp), %cl
movq 0x148(%rsp), %r8
movq 0x150(%rsp), %r9
movq 0x130(%rsp), %r14
movq 0x140(%rsp), %rbx
movq 0x80(%rsp), %r11
movq 0x78(%rsp), %r10
movq 0x120(%rsp), %rax
andb $0x1, %cl
movzbl %cl, %ecx
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x285710
movq 0x118(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x118(%rsp)
jmp 0x284f69
movq 0x98(%rsp), %rax
movb $0x1, 0x20(%rax)
movq 0x150(%rsp), %rsi
movl 0x13c(%rsp), %edx
movq 0x130(%rsp), %rcx
movq 0x148(%rsp), %r8
movq 0xc8(%rsp), %r9
movq 0xd0(%rsp), %r10
movq 0xd8(%rsp), %rax
leaq 0xf0(%rsp), %rdi
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x23fcb0
cmpq $0x0, 0x100(%rsp)
jbe 0x285109
movq 0xf0(%rsp), %rax
movq 0x100(%rsp), %rcx
subq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, 0xe0(%rsp)
jmp 0x285119
movq 0xd0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rcx
movq 0x98(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0xe0(%rsp), %rax
cmpq 0xd8(%rsp), %rax
ja 0x2851cc
movq 0xc8(%rsp), %rax
cmpq 0x178(%rsp), %rax
jb 0x2851cc
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
movq 0xc8(%rsp), %rdx
movb 0xe8(%rsp), %cl
movq 0x148(%rsp), %r8
movq 0x150(%rsp), %r9
movq 0x130(%rsp), %r14
movq 0x140(%rsp), %rbx
movq 0x80(%rsp), %r11
movq 0x78(%rsp), %r10
movq 0x120(%rsp), %rax
andb $0x1, %cl
movzbl %cl, %ecx
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x285710
movq 0x100(%rsp), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
jbe 0x285454
movq 0xf0(%rsp), %rax
movq 0x88(%rsp), %rcx
subq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0xf0(%rsp), %rax
movq 0x88(%rsp), %rcx
subq $0x1, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, 0xb0(%rsp)
movb $0x0, 0xc0(%rsp)
movq 0xa8(%rsp), %rax
cmpq 0xb0(%rsp), %rax
jne 0x2852fa
movq 0xc8(%rsp), %rax
cmpq 0x178(%rsp), %rax
jb 0x2852dd
movq 0x148(%rsp), %rax
movq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x150(%rsp), %rsi
movq 0x140(%rsp), %rdx
movq 0x80(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x120(%rsp), %r9
movb 0x177(%rsp), %bl
movq 0x168(%rsp), %r11
movq 0x160(%rsp), %r10
movq 0x1a0(%rsp), %rax
andb $0x1, %bl
movzbl %bl, %ebx
movl %ebx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x285ac0
testb $0x1, 0x176(%rsp)
je 0x2852f5
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x285439
movq 0x158(%rsp), %rsi
leaq 0xa0(%rsp), %rdi
callq 0x286020
jmp 0x285311
movq 0x118(%rsp), %rax
addq $0x0, %rax
cmpq 0x110(%rsp), %rax
jb 0x2853b6
movq $0x1, 0x50(%rsp)
xorl %eax, %eax
cmpq 0x50(%rsp), %rax
jbe 0x285375
movq 0x3b6c5c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x290cc5(%rip), %rsi    # 0x516013
leaq 0x293e52(%rip), %rdx    # 0x5191a7
leaq 0x2fb8f2(%rip), %rcx    # 0x580c4e
leaq 0x2fb8fb(%rip), %r8     # 0x580c5e
movl $0x14f, %r9d            # imm = 0x14F
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x285377
movq 0x50(%rsp), %rax
addq 0x110(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x108(%rsp), %rdi
imulq $0x28, 0x110(%rsp), %rsi
leaq 0x2fb8ba(%rip), %rdx    # 0x580c5e
movl $0x14f, %ecx            # imm = 0x14F
callq 0xe8540
movq %rax, 0x108(%rsp)
jmp 0x2853b8
cmpq $0x0, 0x108(%rsp)
jne 0x2853fb
movq 0x3b6bd6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x290c3f(%rip), %rsi    # 0x516013
leaq 0x2fb8a4(%rip), %rdx    # 0x580c7f
leaq 0x2fb86c(%rip), %rcx    # 0x580c4e
leaq 0x2fb875(%rip), %r8     # 0x580c5e
movl $0x14f, %r9d            # imm = 0x14F
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2853fd
jmp 0x2853ff
movq 0x108(%rsp), %rdi
movq 0x118(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x118(%rsp)
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0xa0(%rsp), %rsi
movl $0x28, %edx
callq 0x19610
jmp 0x285439
jmp 0x28543b
movq 0x88(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x2851dc
movq 0xe0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
cmpq 0xd8(%rsp), %rax
ja 0x285534
movq 0xc8(%rsp), %rax
cmpq 0x178(%rsp), %rax
jb 0x285501
movq 0x148(%rsp), %rax
movq 0x90(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x150(%rsp), %rsi
movq 0x140(%rsp), %rdx
movq 0x80(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x120(%rsp), %r9
movb 0x177(%rsp), %bl
movq 0x168(%rsp), %r11
movq 0x160(%rsp), %r10
movq 0x1a0(%rsp), %rax
andb $0x1, %bl
movzbl %bl, %ebx
movl %ebx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x285ac0
testb $0x1, 0x176(%rsp)
je 0x285519
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x28551b
movq 0x90(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x90(%rsp)
jmp 0x285464
jmp 0x284f69
jmp 0x28553b
cmpq $0x0, 0x108(%rsp)
je 0x285583
movq 0x108(%rsp), %rdi
leaq 0x2fb709(%rip), %rsi    # 0x580c5e
movl $0x15f, %edx            # imm = 0x15F
callq 0xe88c0
movq $0x0, 0x110(%rsp)
movq $0x0, 0x118(%rsp)
movq $0x0, 0x108(%rsp)
jmp 0x285585
jmp 0x285587
cmpq $0x0, 0xf0(%rsp)
je 0x2855cf
movq 0xf0(%rsp), %rdi
leaq 0x2fb6bd(%rip), %rsi    # 0x580c5e
movl $0x160, %edx            # imm = 0x160
callq 0xe88c0
movq $0x0, 0xf8(%rsp)
movq $0x0, 0x100(%rsp)
movq $0x0, 0xf0(%rsp)
jmp 0x2855d1
testb $0x1, 0x176(%rsp)
je 0x2855e0
callq 0xfa220
movq $0x0, 0x88(%rsp)
movq 0x88(%rsp), %rax
cmpq 0x140(%rsp), %rax
jae 0x2856b6
jmp 0x285604
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x285699
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq (%rax), %rdi
leaq 0x2fb622(%rip), %rsi    # 0x580c5e
movl $0x166, %edx            # imm = 0x166
callq 0xe88c0
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, 0x8(%rax)
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, 0x10(%rax)
movq 0x80(%rsp), %rax
imulq $0x18, 0x88(%rsp), %rcx
addq %rcx, %rax
movq $0x0, (%rax)
jmp 0x28569b
jmp 0x28569d
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x2855ec
movq 0x78(%rsp), %rdi
leaq 0x2fb59c(%rip), %rsi    # 0x580c5e
movl $0x168, %edx            # imm = 0x168
callq 0xe88c0
movq 0x120(%rsp), %rdi
leaq 0x2fb583(%rip), %rsi    # 0x580c5e
movl $0x169, %edx            # imm = 0x169
callq 0xe88c0
movq 0x80(%rsp), %rdi
leaq 0x2fb56a(%rip), %rsi    # 0x580c5e
movl $0x16a, %edx            # imm = 0x16A
callq 0xe88c0
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r14
retq
nopl (%rax)