// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/external/bzip2-1.0.6/blocksort.c
// Function: BZ2_blockSort
void BZ2_blockSort ( EState* s )
{
   UInt32* ptr    = s->ptr; 
   UChar*  block  = s->block;
   UInt32* ftab   = s->ftab;
   Int32   nblock = s->nblock;
   Int32   verb   = s->verbosity;
   Int32   wfact  = s->workFactor;
   UInt16* quadrant;
   Int32   budget;
   Int32   budgetInit;
   Int32   i;

   if (nblock < 10000) {
      fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
   } else {
      /* Calculate the location for quadrant, remembering to get
         the alignment right.  Assumes that &(block[0]) is at least
         2-byte aligned -- this should be ok since block is really
         the first section of arr2.
      */
      i = nblock+BZ_N_OVERSHOOT;
      if (i & 1) i++;
      quadrant = (UInt16*)(&(block[i]));

      /* (wfact-1) / 3 puts the default-factor-30
         transition point at very roughly the same place as 
         with v0.1 and v0.9.0.  
         Not that it particularly matters any more, since the
         resulting compressed stream is now the same regardless
         of whether or not we use the main sort or fallback sort.
      */
      if (wfact < 1  ) wfact = 1;
      if (wfact > 100) wfact = 100;
      budgetInit = nblock * ((wfact-1) / 3);
      budget = budgetInit;

      mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
      if (verb >= 3) 
         VPrintf3 ( "      %d work, %d block, ratio %5.2f\n",
                    budgetInit - budget,
                    nblock, 
                    (float)(budgetInit - budget) /
                    (float)(nblock==0 ? 1 : nblock) ); 
      if (budget < 0) {
         if (verb >= 2) 
            VPrintf0 ( "    too repetitive; using fallback"
                       " sorting algorithm\n" );
         fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
      }
   }

   s->origPtr = -1;
   for (i = 0; i < s->nblock; i++)
      if (ptr[i] == 0)
         { s->origPtr = i; break; };

   AssertH( s->origPtr != -1, 1003 );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x12a8, %rsp           # imm = 0x12A8
movq %rdi, %rbx
movq 0x28(%rdi), %r14
movq 0x38(%rdi), %r13
movl 0x6c(%rdi), %ecx
movl 0x290(%rdi), %eax
cmpl $0x2710, %ecx           # imm = 0x2710
jl 0xc5b52
movq 0x40(%rbx), %r15
movq %rbx, 0xe8(%rsp)
movq %rcx, %rdx
movl %eax, %esi
movl 0x58(%rbx), %eax
andl $0x1, %ecx
leal (%rdx,%rcx), %ebx
addl $0x22, %ebx
cmpl $0x2, %eax
pushq $0x1
popq %rcx
cmovll %ecx, %eax
cmpl $0x64, %eax
pushq $0x64
popq %rcx
cmovll %eax, %ecx
decb %cl
movzbl %cl, %eax
movb $0x3, %cl
divb %cl
movzbl %al, %eax
movq %rdx, 0x8(%rsp)
imull %edx, %eax
movl %eax, 0x74(%rsp)
movl %eax, 0x2c(%rsp)
movl %esi, 0x14(%rsp)
cmpl $0x4, %esi
jge 0xc5ae8
leaq (%r15,%rbx), %rax
movq %rax, 0x40(%rsp)
movl $0x10000, %eax          # imm = 0x10000
testl %eax, %eax
js 0xc4dc6
movl %eax, %ecx
andl $0x0, (%r14,%rcx,4)
decl %eax
jmp 0xc4db7
movq %r15, (%rsp)
movzbl (%r15), %ecx
shll $0x8, %ecx
movq 0x8(%rsp), %rax
leal -0x1(%rax), %edx
movl %edx, 0xa8(%rsp)
addl $-0x4, %eax
movq 0x40(%rsp), %r8
movq (%rsp), %rdi
leal 0x3(%rax), %edx
cmpl $0x2, %edx
jle 0xc4e83
movl %edx, %edx
andw $0x0, (%r8,%rdx,2)
shrl $0x8, %ecx
movzbl (%rdi,%rdx), %edx
shll $0x8, %edx
orl %ecx, %edx
incl (%r14,%rdx,4)
leal 0x2(%rax), %ecx
andw $0x0, (%r8,%rcx,2)
shrl $0x8, %edx
movzbl (%rdi,%rcx), %ecx
shll $0x8, %ecx
orl %edx, %ecx
incl (%r14,%rcx,4)
leal 0x1(%rax), %edx
andw $0x0, (%r8,%rdx,2)
movzbl (%rdi,%rdx), %edx
shrl $0x8, %ecx
movl %edx, %esi
shll $0xa, %esi
leal (%rsi,%rcx,4), %ecx
incl (%r14,%rcx)
movl %eax, %ecx
andw $0x0, (%r8,%rcx,2)
movzbl (%rdi,%rcx), %ecx
shll $0x8, %ecx
orl %edx, %ecx
incl (%r14,%rcx,4)
addl $-0x4, %eax
jmp 0xc4dec
movl %edx, %eax
movq 0x40(%rsp), %rsi
andw $0x0, (%rsi,%rax,2)
shrl $0x8, %ecx
movq (%rsp), %rsi
movzbl (%rsi,%rax), %eax
shll $0x8, %eax
orl %ecx, %eax
incl (%r14,%rax,4)
decl %edx
movl %eax, %ecx
testl %edx, %edx
jns 0xc4e5f
movq 0x8(%rsp), %rcx
leaq (%rbx,%rcx,2), %rax
movq (%rsp), %rdx
addq %rdx, %rax
addq %rdx, %rcx
xorl %edx, %edx
cmpq $0x22, %rdx
je 0xc4eb8
movq (%rsp), %rsi
movb (%rsi,%rdx), %sil
movb %sil, (%rcx,%rdx)
andw $0x0, (%rax,%rdx,2)
incq %rdx
jmp 0xc4e9c
cmpl $0x4, 0x14(%rsp)
jge 0xc5b09
xorl %eax, %eax
movq (%rsp), %rdx
cmpq $0x10000, %rax          # imm = 0x10000
je 0xc4edf
movl (%r14,%rax,4), %ecx
addl %ecx, 0x4(%r14,%rax,4)
incq %rax
jmp 0xc4ec9
movzbl (%rdx), %eax
shll $0x8, %eax
movq 0x8(%rsp), %rcx
addl $-0x4, %ecx
movq (%rsp), %rdi
leal 0x3(%rcx), %edx
cmpl $0x2, %edx
jle 0xc4fad
movl %edx, %esi
movzbl (%rdi,%rsi), %esi
shldw $0x8, %ax, %si
movzwl %si, %eax
movl (%r14,%rax,4), %esi
decl %esi
movl %esi, (%r14,%rax,4)
movslq %esi, %rsi
movl %edx, (%r13,%rsi,4)
leal 0x2(%rcx), %edx
movzbl (%rdi,%rdx), %esi
shrdw $0x8, %si, %ax
movzwl %ax, %eax
movl (%r14,%rax,4), %esi
decl %esi
movl %esi, (%r14,%rax,4)
movslq %esi, %rsi
movl %edx, (%r13,%rsi,4)
leal 0x1(%rcx), %edx
movzbl (%rdi,%rdx), %esi
shrdw $0x8, %si, %ax
movzwl %ax, %eax
movl (%r14,%rax,4), %esi
decl %esi
movl %esi, (%r14,%rax,4)
movslq %esi, %rsi
movl %edx, (%r13,%rsi,4)
movl %ecx, %edx
movzbl (%rdi,%rdx), %edx
shrdw $0x8, %dx, %ax
movzwl %ax, %edx
movl (%r14,%rdx,4), %esi
decl %esi
movl %esi, (%r14,%rdx,4)
movslq %esi, %rdx
movl %ecx, (%r13,%rdx,4)
addl $-0x4, %ecx
jmp 0xc4ef1
movl %edx, %ecx
movq (%rsp), %rsi
movzbl (%rsi,%rcx), %ecx
shrdw $0x8, %cx, %ax
movzwl %ax, %ecx
movl (%r14,%rcx,4), %esi
decl %esi
movl %esi, (%r14,%rcx,4)
movslq %esi, %rcx
movl %edx, (%r13,%rcx,4)
decl %edx
testl %edx, %edx
jns 0xc4f87
xorl %eax, %eax
cmpq $0x100, %rax            # imm = 0x100
je 0xc4fcf
movb $0x0, 0xf0(%rsp,%rax)
movl %eax, 0x6a0(%rsp,%rax,4)
incq %rax
jmp 0xc4fb3
movl $0x16c, %ecx            # imm = 0x16C
pushq $0x3
popq %rsi
movl %ecx, %eax
cltd
idivl %esi
movslq %eax, %rdx
xorl %edi, %edi
cmpq $0xff, %rdx
jg 0xc5068
movl 0x6a0(%rsp,%rdx,4), %r8d
movl %r8d, %r10d
shll $0x8, %r10d
leal 0x100(%r10), %r9d
movslq %r9d, %r9
movl (%r14,%r9,4), %r9d
movslq %r10d, %r10
subl (%r14,%r10,4), %r9d
movl %edi, %r10d
leal (%rax,%r10), %ebp
movslq %r10d, %r11
movl 0x6a0(%rsp,%r11,4), %ebx
movl %ebx, %r15d
shll $0x8, %r15d
leal 0x100(%r15), %r12d
movslq %r12d, %r12
movl (%r14,%r12,4), %r12d
movslq %r15d, %r15
subl (%r14,%r15,4), %r12d
movslq %ebp, %r15
cmpl %r9d, %r12d
jbe 0xc5053
movl %ebx, 0x6a0(%rsp,%r15,4)
subl %eax, %r10d
jge 0xc5011
jmp 0xc5056
movq %r15, %r11
movl %r8d, 0x6a0(%rsp,%r11,4)
incq %rdx
incl %edi
jmp 0xc4fe1
addl $-0x3, %ecx
cmpl $0x2, %ecx
movl %eax, %ecx
ja 0xc4fd7
leaq 0x4(%r14), %rax
movq %rax, 0xe0(%rsp)
movl 0x74(%rsp), %edi
xorl %ecx, %ecx
movq $0x0, 0x78(%rsp)
movq %r14, 0xa0(%rsp)
cmpq $0x100, %rcx            # imm = 0x100
movq 0x8(%rsp), %rdx
movl 0x14(%rsp), %eax
je 0xc5b2a
movl 0x6a0(%rsp,%rcx,4), %esi
movl %esi, %edx
shll $0x8, %edx
movl %edx, 0xb0(%rsp)
movslq %edx, %rdx
movq %rdx, 0x90(%rsp)
xorl %r8d, %r8d
movq (%rsp), %rdx
movq %rcx, 0x88(%rsp)
cmpq $0x100, %r8             # imm = 0x100
movl %edi, %ebp
je 0xc58b7
cmpq %rsi, %r8
je 0xc5829
movq %r8, %rcx
orq 0x90(%rsp), %rcx
movl (%r14,%rcx,4), %r10d
btl $0x15, %r10d
jb 0xc580e
movq %rcx, 0xd8(%rsp)
movl 0x4(%r14,%rcx,4), %r9d
movl $0xffdfffff, %ecx       # imm = 0xFFDFFFFF
andl %ecx, %r9d
leal -0x1(%r9), %r11d
movq %r11, 0xd0(%rsp)
cmpl %r10d, %r11d
movl %r10d, %ecx
jle 0xc5813
movq %r8, 0xc0(%rsp)
movq %rsi, 0xc8(%rsp)
cmpl $0x4, %eax
jge 0xc5874
movl %ecx, 0xac(%rsp)
movl %ecx, 0x510(%rsp)
movq 0xd0(%rsp), %rcx
movl %ecx, 0x380(%rsp)
movl $0x2, 0x1f0(%rsp)
pushq $0x1
popq %rcx
movq %rcx, 0x68(%rsp)
movq 0x68(%rsp), %rcx
movl %ecx, %ebx
movl %edi, 0x30(%rsp)
testl %ebx, %ebx
jle 0xc5831
leal -0x1(%rbx), %eax
movq %rax, 0x68(%rsp)
movq %rbx, 0x60(%rsp)
cmpl $0x62, %ebx
jb 0xc51b7
movl $0x3e9, %edi            # imm = 0x3E9
callq 0x77bd0
movq (%rsp), %rdx
movq 0x68(%rsp), %rax
movl 0x510(%rsp,%rax,4), %r11d
movl 0x380(%rsp,%rax,4), %r8d
movslq %r8d, %rsi
movl 0x1f0(%rsp,%rax,4), %ebp
movl %esi, %eax
subl %r11d, %eax
cmpl $0x14, %eax
movq %rbp, 0x20(%rsp)
movq %r11, 0x48(%rsp)
jl 0xc5531
cmpl $0xf, %ebp
jge 0xc5531
movslq %r11d, %rax
movq %rax, 0x80(%rsp)
movl (%r13,%rax,4), %eax
addl %ebp, %eax
movzbl (%rdx,%rax), %eax
movl (%r13,%rsi,4), %ecx
addl %ebp, %ecx
movzbl (%rdx,%rcx), %edi
leal (%r8,%r11), %ecx
sarl %ecx
movslq %ecx, %rcx
movl (%r13,%rcx,4), %ecx
addl %ebp, %ecx
cmpb %dil, %al
movq %rdx, %rsi
movl %edi, %edx
cmoval %eax, %edx
movzbl (%rsi,%rcx), %ecx
cmovbl %eax, %edi
cmpb %cl, %dil
cmovbel %ecx, %edi
cmpb %cl, %dl
cmovbel %edx, %edi
movl %r8d, %ecx
movl %r11d, %edx
movq %r8, 0x18(%rsp)
movl %r8d, %r10d
movl %r11d, %r8d
movslq %r10d, %r9
leaq 0x1(%r9), %rax
movslq %edx, %rdx
movl %edx, %esi
subl %r11d, %esi
movl %esi, 0x50(%rsp)
movq %rdx, 0x38(%rsp)
negl %edx
movl %edx, 0x58(%rsp)
movq (%rsp), %rdx
movslq %r8d, %rbx
leal 0x1(%rbx), %r8d
movq %rbx, %rsi
cmpq %r9, %rsi
jg 0xc52c6
movl (%r13,%rsi,4), %r15d
leal (%r15,%rbp), %r12d
cmpb %dil, (%rdx,%r12)
je 0xc52a0
ja 0xc52d0
incq %rsi
incl %r8d
jmp 0xc5282
movq 0x38(%rsp), %r11
movl (%r13,%r11,4), %ebx
movl %ebx, (%r13,%rsi,4)
movl %r15d, (%r13,%r11,4)
incq %r11
movq %r11, 0x38(%rsp)
incl 0x50(%rsp)
decl 0x58(%rsp)
jmp 0xc5278
cmpq %rbx, %rax
cmovgq %rax, %rbx
movq %rbx, %rsi
movq %r13, %rdx
movslq %esi, %r8
movslq %ecx, %r9
movq 0x18(%rsp), %rax
movl %eax, %ebx
subl %r9d, %ebx
movslq %r10d, %r12
movl %ecx, %r13d
subl %r12d, %r13d
movl %r12d, %r10d
negl %r10d
movq %r12, %rax
cmpq %r8, %rax
jl 0xc5364
movl (%rdx,%rax,4), %r15d
addl %r15d, %ebp
movq (%rsp), %r11
cmpb %dil, (%r11,%rbp)
je 0xc531d
jb 0xc5339
decq %rax
incl %r10d
incl %r13d
movq 0x20(%rsp), %rbp
jmp 0xc52f5
movl (%rdx,%r9,4), %ebp
movl %ebp, (%rdx,%rax,4)
movl %r15d, (%rdx,%r9,4)
decq %r9
notl %r10d
incl %ebx
decl %ecx
movq 0x20(%rsp), %rbp
jmp 0xc52e3
notl %r10d
movq %rdx, %r13
movl (%rdx,%r8,4), %ecx
movl %r15d, (%rdx,%r8,4)
movl %ecx, (%rdx,%rax,4)
incl %r8d
movl %r9d, %ecx
movq 0x20(%rsp), %rbp
movq 0x48(%rsp), %r11
movq 0x38(%rsp), %rdx
jmp 0xc5256
movq 0x38(%rsp), %rdi
cmpq %rdi, %r9
jge 0xc538d
incl %ebp
movq 0x68(%rsp), %rax
movl %ebp, 0x1f0(%rsp,%rax,4)
movq %rdx, %r13
movq (%rsp), %rdx
movq 0x60(%rsp), %rbx
jmp 0xc51a4
leaq -0x1(%r8), %rcx
movl %edi, %eax
subl 0x48(%rsp), %eax
subl %edi, %r8d
cmpl %r8d, %eax
cmovll %eax, %r8d
movl 0x58(%rsp), %edi
addl %esi, %edi
movl 0x50(%rsp), %eax
cmpl %edi, %eax
cmovll %eax, %edi
movl %esi, %eax
subl %edi, %eax
cltq
movq %rdx, %rdi
testl %r8d, %r8d
jle 0xc53df
movq 0x80(%rsp), %r15
movl (%rdi,%r15,4), %r10d
movl (%rdi,%rax,4), %r11d
movl %r11d, (%rdi,%r15,4)
movl %r10d, (%rdi,%rax,4)
decl %r8d
addq $0x4, %rdi
jmp 0xc53b9
cmpq %r12, %rcx
cmovlq %rcx, %r12
movq 0x18(%rsp), %rcx
movl %ecx, %eax
subl %r9d, %eax
subl %r12d, %r9d
cmpl %r9d, %eax
cmovgel %r9d, %eax
cmpl %r13d, %ebx
cmovll %ebx, %r13d
subl %r13d, %ecx
movslq %ecx, %rcx
movslq %esi, %rdi
movq %rdx, %r13
movq %rdx, %r8
movq 0x48(%rsp), %rbx
movq 0x38(%rsp), %rdx
testl %eax, %eax
jle 0xc5438
movl (%r8,%rdi,4), %r10d
movl 0x4(%r8,%rcx,4), %r11d
movl %r11d, (%r8,%rdi,4)
movl %r10d, 0x4(%r8,%rcx,4)
decl %eax
addq $0x4, %r8
jmp 0xc541a
movl %ebx, %r8d
subl %edx, %r8d
leal (%r8,%rsi), %r10d
decl %r10d
movq 0x18(%rsp), %r11
movl %r11d, %eax
subl %r9d, %eax
leal 0x1(%rax), %edx
movl %r10d, %edi
subl %ebx, %edi
movl %r11d, %ecx
subl %edx, %ecx
cmpl %ecx, %edi
jge 0xc5468
movl %ebx, %ecx
movl %r10d, %r9d
jmp 0xc5476
movl %ecx, %edi
movl %edx, %ecx
movl %ebx, %edx
movl %r11d, %r9d
movq %r10, 0x18(%rsp)
addl %esi, %r8d
leal 0x1(%rbp), %esi
movl %eax, %r11d
subl %r8d, %r11d
cmpl %r11d, %edi
jge 0xc5492
movl %r8d, %r10d
movl %r9d, %edi
movl %ebp, %r9d
jmp 0xc54a5
movl %edi, %r11d
movl %ecx, %r10d
movl %eax, %edi
movl %r9d, %eax
movl %esi, %r9d
movl %ebp, %esi
movl %r8d, %ecx
movq 0x18(%rsp), %rbx
movl %ebx, %r8d
subl %edx, %r8d
cmpl %r11d, %r8d
jge 0xc54bf
movl %edx, %r8d
movl %ebx, %edx
movl %ebp, %r11d
jmp 0xc54ce
movl %r10d, %r8d
movl %edx, %r10d
movl %eax, %edx
movl %ebx, %eax
movl %esi, %r11d
movl %ebp, %esi
movq 0x68(%rsp), %rbx
movl %r10d, 0x510(%rsp,%rbx,4)
movl %eax, 0x380(%rsp,%rbx,4)
movl %esi, 0x1f0(%rsp,%rbx,4)
movq 0x60(%rsp), %rbx
movl %ebx, %eax
movl %r8d, 0x510(%rsp,%rax,4)
movl %edx, 0x380(%rsp,%rax,4)
movl %r11d, 0x1f0(%rsp,%rax,4)
movl %ecx, 0x514(%rsp,%rax,4)
movl %edi, 0x384(%rsp,%rax,4)
movl %r9d, 0x1f4(%rsp,%rax,4)
addl $0x2, %ebx
movl 0x14(%rsp), %eax
movq (%rsp), %rdx
movl 0x30(%rsp), %edi
jmp 0xc518f
testl %eax, %eax
jle 0xc57f9
leaq 0x2fd20(%rip), %rcx     # 0xf5260
pushq $-0x1
popq %rdi
incq %rdi
leaq 0x4(%rcx), %rdx
cmpl %eax, (%rcx)
movq %rdx, %rcx
jle 0xc5543
leal 0x1(%r11), %eax
movl %eax, 0xb8(%rsp)
leal 0x2(%r11), %eax
movl %eax, 0xb4(%rsp)
movq 0x8(%rsp), %r8
movq (%rsp), %rdx
movq %rsi, 0x50(%rsp)
testq %rdi, %rdi
jle 0xc57f1
leaq 0x2fcdb(%rip), %rax     # 0xf5260
movl -0x4(%rax,%rdi,4), %r12d
decq %rdi
movq %rdi, 0x98(%rsp)
leal (%r12,%r11), %eax
movl %eax, 0x38(%rsp)
movslq %eax, %r9
movl 0xb4(%rsp), %eax
movl %eax, 0x60(%rsp)
movl 0xb8(%rsp), %eax
movl %eax, 0x80(%rsp)
movl %r11d, %r10d
cmpq %rsi, %r9
jg 0xc57c0
movq %r9, 0x58(%rsp)
movl (%r13,%r9,4), %eax
movq %rax, 0x30(%rsp)
addl %ebp, %eax
movl %eax, 0x18(%rsp)
movl %r10d, 0xbc(%rsp)
movl %r10d, %ebp
movq %r13, %r14
leal (%r12,%rbp), %ebx
movslq %ebp, %r13
movl (%r14,%r13,4), %r15d
movq 0x20(%rsp), %rax
leal (%r15,%rax), %edi
movl 0x18(%rsp), %esi
movq 0x40(%rsp), %rcx
leaq 0x2c(%rsp), %r9
callq 0xc64a1
movslq %ebx, %rcx
testb %al, %al
je 0xc5632
movl %r15d, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x38(%rsp), %ebp
movl %eax, %ebp
movq 0x8(%rsp), %r8
movq (%rsp), %rdx
jge 0xc55e8
jmp 0xc563e
movq %rcx, %r13
movq 0x8(%rsp), %r8
movq (%rsp), %rdx
movq 0x30(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rax
cmpq %rsi, %rax
movq %r14, %r13
jge 0xc57d2
movl 0x4(%r13,%rax,4), %esi
movq 0x20(%rsp), %rax
movq %rsi, 0x30(%rsp)
addl %esi, %eax
movl %eax, 0x18(%rsp)
movl 0x80(%rsp), %eax
movl %eax, %ebp
movq %r13, %r14
leal (%r12,%rbp), %ebx
movslq %ebp, %r13
movl (%r14,%r13,4), %r15d
movq 0x20(%rsp), %rax
leal (%r15,%rax), %edi
movl 0x18(%rsp), %esi
movq 0x40(%rsp), %rcx
movq 0x8(%rsp), %r8
leaq 0x2c(%rsp), %r9
callq 0xc64a1
movslq %ebx, %rcx
testb %al, %al
je 0xc56c8
movl %r15d, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x38(%rsp), %ebp
movl %eax, %ebp
movq (%rsp), %rdx
jge 0xc567e
jmp 0xc56cf
movq %rcx, %r13
movq (%rsp), %rdx
movq 0x30(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x58(%rsp), %rdi
leaq 0x2(%rdi), %rax
movq 0x50(%rsp), %rsi
cmpq %rsi, %rax
movq %r14, %r13
jg 0xc57cd
movl 0x8(%r13,%rdi,4), %esi
movq 0x20(%rsp), %rax
movq %rsi, 0x30(%rsp)
addl %esi, %eax
movl %eax, 0x18(%rsp)
movl 0x60(%rsp), %eax
movl %eax, %ebp
movq %r13, %r14
leal (%r12,%rbp), %ebx
movslq %ebp, %r13
movl (%r14,%r13,4), %r15d
movq 0x20(%rsp), %rax
leal (%r15,%rax), %edi
movl 0x18(%rsp), %esi
movq 0x40(%rsp), %rcx
movq 0x8(%rsp), %r8
leaq 0x2c(%rsp), %r9
callq 0xc64a1
movslq %ebx, %rcx
testb %al, %al
je 0xc575a
movl %r15d, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x38(%rsp), %ebp
movl %eax, %ebp
movq (%rsp), %rdx
jge 0xc5710
jmp 0xc5761
movq %rcx, %r13
movq (%rsp), %rdx
movq 0x30(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x58(%rsp), %r9
addq $0x3, %r9
movl 0x2c(%rsp), %edi
movl 0xbc(%rsp), %r10d
addl $0x3, %r10d
addl $0x3, 0x80(%rsp)
addl $0x3, 0x60(%rsp)
testl %edi, %edi
movq %r14, %r13
movq 0x8(%rsp), %r8
movl 0x14(%rsp), %eax
movq 0x20(%rsp), %rbp
movq 0x48(%rsp), %r11
movq 0x50(%rsp), %rsi
movq 0xa0(%rsp), %r14
jns 0xc55bc
jmp 0xc5b33
movq 0x98(%rsp), %rdi
jmp 0xc5575
movq 0x8(%rsp), %r8
movq 0x20(%rsp), %rbp
movq 0x48(%rsp), %r11
movq 0x98(%rsp), %rdi
movq 0xa0(%rsp), %r14
jmp 0xc5575
movl 0x2c(%rsp), %eax
movl %eax, 0x30(%rsp)
movl 0x30(%rsp), %edi
testl %edi, %edi
movl 0x14(%rsp), %eax
jns 0xc5184
jmp 0xc5b33
movl %r10d, %r9d
jmp 0xc581e
movl %ecx, %r9d
movq 0xd8(%rsp), %rcx
orl $0x200000, %r9d         # imm = 0x200000
movl %r9d, (%r14,%rcx,4)
incq %r8
jmp 0xc50dc
testl %edi, %edi
js 0xc5b33
movq 0x78(%rsp), %rcx
subl 0xac(%rsp), %ecx
movq 0xd0(%rsp), %rsi
addl %esi, %ecx
incl %ecx
movq %rcx, 0x78(%rsp)
movq 0xd8(%rsp), %rcx
movl (%r14,%rcx,4), %r9d
movq 0xc8(%rsp), %rsi
movq 0xc0(%rsp), %r8
jmp 0xc581e
movq 0x6873d(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
subl %ecx, %r9d
leaq 0x2f97c(%rip), %rsi     # 0xf5204
movq 0xc8(%rsp), %rdx
movl %ecx, %ebx
movq 0xc0(%rsp), %rcx
movq 0x78(%rsp), %r8
xorl %eax, %eax
callq 0xb8c0
movl %ebx, %ecx
movl %ebp, %edi
movq (%rsp), %rdx
movl 0x14(%rsp), %eax
jmp 0xc5154
movslq %esi, %rbx
cmpb $0x0, 0xf0(%rsp,%rbx)
je 0xc58d0
movl $0x3ee, %edi            # imm = 0x3EE
callq 0x77bd0
movl %ebp, %edi
leaq (%r14,%rbx,4), %r15
movq 0xe0(%rsp), %rax
leaq (%rax,%rbx,4), %rax
xorl %ecx, %ecx
cmpq $0x100, %rcx            # imm = 0x100
je 0xc5914
movl -0x4(%rax), %edx
movl $0xffdfffff, %esi       # imm = 0xFFDFFFFF
andl %esi, %edx
movl %edx, 0xea0(%rsp,%rcx,4)
movl (%rax), %edx
andl %esi, %edx
decl %edx
movl %edx, 0xaa0(%rsp,%rcx,4)
incq %rcx
addq $0x400, %rax            # imm = 0x400
jmp 0xc58e2
movq 0x90(%rsp), %rax
movslq (%r14,%rax,4), %rcx
andq $-0x200001, %rcx        # imm = 0xFFDFFFFF
movslq 0xea0(%rsp,%rbx,4), %rax
cmpq %rax, %rcx
jge 0xc597a
movl (%r13,%rcx,4), %eax
leal -0x1(%rax), %edx
sarl $0x1f, %edx
andl 0x8(%rsp), %edx
addl %edx, %eax
decl %eax
movslq %eax, %rdx
movq (%rsp), %rsi
movzbl (%rsi,%rdx), %edx
cmpb $0x0, 0xf0(%rsp,%rdx)
jne 0xc5975
movslq 0xea0(%rsp,%rdx,4), %rsi
leal 0x1(%rsi), %edi
movl %edi, 0xea0(%rsp,%rdx,4)
movl %ebp, %edi
movl %eax, (%r13,%rsi,4)
incq %rcx
jmp 0xc5927
movl 0xb0(%rsp), %ecx
addl $0x100, %ecx            # imm = 0x100
movslq %ecx, %r12
movl (%r14,%r12,4), %ecx
movl $0xffdfffff, %edx       # imm = 0xFFDFFFFF
andl %edx, %ecx
decl %ecx
movl 0xaa0(%rsp,%rbx,4), %edx
cmpl %edx, %ecx
jle 0xc59ec
movslq %ecx, %rdx
movl (%r13,%rdx,4), %edx
leal -0x1(%rdx), %esi
sarl $0x1f, %esi
andl 0x8(%rsp), %esi
addl %esi, %edx
decl %edx
movslq %edx, %rsi
movq (%rsp), %rdi
movzbl (%rdi,%rsi), %esi
cmpb $0x0, 0xf0(%rsp,%rsi)
jne 0xc59e6
movslq 0xaa0(%rsp,%rsi,4), %rdi
leal -0x1(%rdi), %r8d
movl %r8d, 0xaa0(%rsp,%rsi,4)
movl %edx, (%r13,%rdi,4)
decl %ecx
movl %ebp, %edi
jmp 0xc5997
leal -0x1(%rax), %ecx
cmpl %edx, %ecx
je 0xc5a0c
testl %eax, %eax
jne 0xc5a00
cmpl 0xa8(%rsp), %edx
je 0xc5a0c
movl $0x3ef, %edi            # imm = 0x3EF
callq 0x77bd0
movl %ebp, %edi
xorl %eax, %eax
movq 0x88(%rsp), %rcx
cmpq $0x40000, %rax          # imm = 0x40000
je 0xc5a2c
orb $0x20, 0x2(%r15,%rax)
addq $0x400, %rax            # imm = 0x400
jmp 0xc5a16
movb $0x1, 0xf0(%rsp,%rbx)
cmpq $0xff, %rcx
je 0xc5ae0
movq 0x90(%rsp), %rax
movslq (%r14,%rax,4), %rsi
andq $-0x200001, %rsi        # imm = 0xFFDFFFFF
movl (%r14,%r12,4), %eax
movl $0xffdfffff, %ecx       # imm = 0xFFDFFFFF
andl %ecx, %eax
subl %esi, %eax
pushq $-0x1
popq %rcx
incl %ecx
movl %eax, %edx
sarl %cl, %edx
cmpl $0xfffe, %edx           # imm = 0xFFFE
jg 0xc5a64
decl %eax
movslq %eax, %rdx
leaq (,%rsi,4), %rsi
addq %r13, %rsi
testq %rdx, %rdx
js 0xc5ab9
movl %edx, %edi
shrl %cl, %edi
movslq (%rsi,%rdx,4), %r8
movq 0x40(%rsp), %r9
movw %di, (%r9,%r8,2)
cmpq $0x21, %r8
jg 0xc5ab4
movq 0x8(%rsp), %r9
addl %r9d, %r8d
movslq %r8d, %r8
movq 0x40(%rsp), %r9
movw %di, (%r9,%r8,2)
decq %rdx
jmp 0xc5a82
sarl %cl, %eax
cmpl $0x10000, %eax          # imm = 0x10000
movq 0x88(%rsp), %rcx
movl %ebp, %edi
jl 0xc5ae0
movl $0x3ea, %edi            # imm = 0x3EA
callq 0x77bd0
movl %ebp, %edi
movq 0x88(%rsp), %rcx
incq %rcx
jmp 0xc5099
movq 0x684c9(%rip), %rax     # 0x12dfb8
movq (%rax), %rcx
leaq 0x2f6e9(%rip), %rdi     # 0xf51e2
pushq $0x21
popq %rsi
pushq $0x1
popq %rdx
callq 0xbca0
jmp 0xc4da9
movq 0x684a8(%rip), %rax     # 0x12dfb8
movq (%rax), %rcx
leaq 0x2f65b(%rip), %rdi     # 0xf5175
pushq $0x1b
popq %rsi
pushq $0x1
popq %rdx
callq 0xbca0
jmp 0xc4ec3
cmpl $0x4, %eax
jge 0xc5bdf
cmpl $0x3, %eax
jge 0xc5c06
testl %edi, %edi
movq 0xe8(%rsp), %rbx
jns 0xc5b65
cmpl $0x2, %eax
movq 0x8(%rsp), %rcx
jge 0xc5bb5
movq 0x18(%rbx), %rdi
movq 0x20(%rbx), %rsi
movq %r14, %rdx
movl %eax, %r8d
callq 0xc5c46
orl $-0x1, 0x30(%rbx)
movl 0x6c(%rbx), %ecx
xorl %eax, %eax
testl %ecx, %ecx
cmovlel %eax, %ecx
cmpq %rax, %rcx
je 0xc5b85
cmpl $0x0, (%r13,%rax,4)
je 0xc5ba0
incq %rax
jmp 0xc5b73
movl $0x3eb, %edi            # imm = 0x3EB
addq $0x12a8, %rsp           # imm = 0x12A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x77bd0
movl %eax, 0x30(%rbx)
addq $0x12a8, %rsp           # imm = 0x12A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x683fc(%rip), %rax     # 0x12dfb8
movq (%rax), %rcx
leaq 0x2f579(%rip), %rdi     # 0xf513f
pushq $0x35
popq %rsi
pushq $0x1
popq %rdx
callq 0xbca0
movl 0x14(%rsp), %eax
movq 0x8(%rsp), %rcx
jmp 0xc5b52
movq 0x683d2(%rip), %rax     # 0x12dfb8
movl %edi, %ebx
movq (%rax), %rdi
movl %edx, %r8d
movq 0x78(%rsp), %rcx
subl %ecx, %r8d
leaq 0x2f637(%rip), %rsi     # 0xf5234
xorl %eax, %eax
callq 0xb8c0
movl %ebx, %edi
movl 0x74(%rsp), %edx
subl %edi, %edx
cvtsi2ss %edx, %xmm0
movq 0x8(%rsp), %rcx
cvtsi2ss %ecx, %xmm1
movq 0x68398(%rip), %rax     # 0x12dfb8
movl %edi, %ebx
movq (%rax), %rdi
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2f4e5(%rip), %rsi     # 0xf5119
movb $0x1, %al
callq 0xb8c0
movl %ebx, %edi
movl 0x14(%rsp), %eax
jmp 0xc5b3c