// File: /workspace/github_c_makefile_star2_O3/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 $0x12b8, %rsp           # imm = 0x12B8
movq %rdi, %rbx
movq 0x28(%rdi), %r14
movq 0x38(%rdi), %rbp
movslq 0x6c(%rdi), %r12
movl 0x290(%rdi), %r8d
cmpq $0x2710, %r12           # imm = 0x2710
jl 0xdd10b
movq 0x40(%rbx), %r13
movq %rbx, 0x78(%rsp)
movl 0x58(%rbx), %eax
movl %r12d, %ecx
andl $0x1, %ecx
cmpl $0x2, %eax
movl $0x1, %edx
cmovgel %eax, %edx
cmpl $0x64, %edx
movl $0x64, %eax
cmovll %edx, %eax
leal (%r12,%rcx), %r15d
addl $0x22, %r15d
decb %al
movzbl %al, %eax
imull $0xab, %eax, %eax
shrl $0x9, %eax
imull %r12d, %eax
movl %eax, 0x60(%rsp)
movl %eax, 0x30(%rsp)
movl %r8d, 0xc(%rsp)
cmpl $0x4, %r8d
movq %r12, %rbx
jge 0xdd16f
leaq (%r15,%r13), %rax
movq %rax, 0x58(%rsp)
xorl %r12d, %r12d
movl $0x40004, %edx          # imm = 0x40004
movq %r14, %rdi
xorl %esi, %esi
callq 0xb2f0
movzbl (%r13), %edi
movq %rbx, 0x38(%rsp)
leal -0x1(%rbx), %eax
leaq 0x4(%rax), %rdx
leaq (%r13,%rax), %rbx
movq %rax, 0x80(%rsp)
leaq (%r15,%rax,2), %rax
movq %r13, 0x20(%rsp)
addq %r13, %rax
xorl %ecx, %ecx
movw %r12w, (%rax,%rcx,2)
movzbl (%rbx,%rcx), %esi
movl %esi, %r8d
shll $0x8, %r8d
orl %edi, %r8d
incl (%r14,%r8,4)
movw %r12w, -0x2(%rax,%rcx,2)
movzbl -0x1(%rbx,%rcx), %edi
movl %edi, %r8d
shll $0xa, %r8d
leal (%r8,%rsi,4), %esi
incl (%r14,%rsi)
movw %r12w, -0x4(%rax,%rcx,2)
movzbl -0x2(%rbx,%rcx), %r8d
movl %r8d, %esi
shll $0xa, %esi
leal (%rsi,%rdi,4), %esi
incl (%r14,%rsi)
movw %r12w, -0x6(%rax,%rcx,2)
movzbl -0x3(%rbx,%rcx), %edi
movl %edi, %esi
shll $0x8, %esi
orl %r8d, %esi
incl (%r14,%rsi,4)
leaq (%rdx,%rcx), %r8
addq $-0x4, %r8
addq $-0x4, %rcx
cmpq $0x6, %r8
ja 0xdc38f
movq 0x80(%rsp), %rdi
leaq (%rdi,%rcx), %rdx
addq $0x4, %rdx
cmpq $0x4, %rdx
jb 0xdc43e
movq %rdi, %rdx
notq %rdx
movw $0x0, (%rax,%rcx,2)
shrl $0x8, %esi
movzbl (%rbx,%rcx), %edi
shll $0x8, %edi
orl %esi, %edi
incl (%r14,%rdi,4)
decq %rcx
movl %edi, %esi
cmpq %rcx, %rdx
jne 0xdc41e
movq 0x38(%rsp), %r12
leaq (%r15,%r12,2), %rax
movq 0x20(%rsp), %rdi
addq %rdi, %rax
leaq (%rdi,%r12), %rcx
xorl %edx, %edx
movb (%rdi,%rdx), %sil
movb %sil, (%rcx,%rdx)
movw $0x0, (%rax,%rdx,2)
incq %rdx
cmpq $0x22, %rdx
jne 0xdc455
cmpl $0x4, 0xc(%rsp)
jge 0xdd179
movl (%r14), %eax
xorl %ecx, %ecx
addl 0x4(%r14,%rcx,4), %eax
movl %eax, 0x4(%r14,%rcx,4)
incq %rcx
cmpq $0x10000, %rcx          # imm = 0x10000
jne 0xdc47c
movq 0x20(%rsp), %rax
movzbl (%rax), %edx
shll $0x8, %edx
leal -0x4(%r12), %esi
leal -0x3(%r12), %edi
leal -0x2(%r12), %r8d
xorl %eax, %eax
movq 0x80(%rsp), %r11
movl %r11d, %ecx
movzbl (%rbx,%rax), %r9d
shldw $0x8, %dx, %r9w
movzwl %r9w, %edx
movl (%r14,%rdx,4), %r9d
decl %r9d
movl %r9d, (%r14,%rdx,4)
movslq %r9d, %r9
movl %ecx, (%rbp,%r9,4)
movzbl -0x1(%rbx,%rax), %r9d
shrdw $0x8, %r9w, %dx
movzwl %dx, %edx
movl (%r14,%rdx,4), %r9d
decl %r9d
movl %r9d, (%r14,%rdx,4)
movslq %r9d, %r9
leal (%r8,%rax), %r10d
movl %r10d, (%rbp,%r9,4)
movzbl -0x2(%rbx,%rax), %r9d
shrdw $0x8, %r9w, %dx
movzwl %dx, %edx
movl (%r14,%rdx,4), %r9d
decl %r9d
movl %r9d, (%r14,%rdx,4)
movslq %r9d, %r9
leal (%rdi,%rax), %r10d
movl %r10d, (%rbp,%r9,4)
movzbl -0x3(%rbx,%rax), %r9d
shrdw $0x8, %r9w, %dx
movzwl %dx, %r9d
movl (%r14,%r9,4), %r10d
decl %r10d
movl %r10d, (%r14,%r9,4)
movslq %r10d, %r9
leal (%rsi,%rax), %r10d
movl %r10d, (%rbp,%r9,4)
addl $-0x4, %ecx
leaq (%r11,%rax), %r9
addq $-0x4, %r9
addq $-0x4, %rax
addq $0x4, %r9
cmpq $0x6, %r9
ja 0xdc4b9
leaq (%r11,%rax), %rsi
addq $0x4, %rsi
cmpq $0x4, %rsi
movq 0x20(%rsp), %r8
jb 0xdc5a7
addq %r11, %rax
movzbl (%r8,%rax), %esi
shrdw $0x8, %si, %dx
movzwl %dx, %esi
movl (%r14,%rsi,4), %edi
decl %edi
movl %edi, (%r14,%rsi,4)
movslq %edi, %rsi
movl %ecx, (%rbp,%rsi,4)
decl %ecx
addq $-0x1, %rax
jb 0xdc581
movq %rbp, 0x10(%rsp)
leaq 0x100(%rsp), %rdi
xorl %ebx, %ebx
movl $0x100, %edx            # imm = 0x100
xorl %esi, %esi
callq 0xb2f0
movdqa 0x2f896(%rip), %xmm0    # 0x10be60
movdqa 0x2f89e(%rip), %xmm1    # 0x10be70
movdqa %xmm0, 0x6b0(%rsp,%rbx,4)
addq $0x4, %rbx
paddd %xmm1, %xmm0
cmpq $0x100, %rbx            # imm = 0x100
jne 0xdc5d2
movl $0x16c, %eax            # imm = 0x16C
movslq %eax, %rdx
imulq $0x55555556, %rdx, %rcx # imm = 0x55555556
movq %rcx, %rsi
shrq $0x3f, %rsi
shrq $0x20, %rcx
addl %esi, %ecx
cmpl $0x2ff, %edx            # imm = 0x2FF
jg 0xdc6a7
movslq %ecx, %rdx
cmpl $0x100, %edx            # imm = 0x100
movl $0xff, %esi
cmovgel %ecx, %esi
incl %esi
xorl %edi, %edi
movl 0x6b0(%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 (%rcx,%r10), %ebp
movslq %r10d, %r11
movl 0x6b0(%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 0xdc692
movl %ebx, 0x6b0(%rsp,%r15,4)
subl %ecx, %r10d
jge 0xdc650
jmp 0xdc695
movq %r15, %r11
movl %r8d, 0x6b0(%rsp,%r11,4)
incq %rdx
incl %edi
cmpq %rsi, %rdx
jne 0xdc629
addl $-0x3, %eax
cmpl $0x2, %eax
movl %ecx, %eax
ja 0xdc5f1
leaq 0x4(%r14), %rax
movq %rax, 0xe8(%rsp)
movq 0x10(%rsp), %rbp
leaq -0x4(%rbp), %rax
movq %rax, 0xd8(%rsp)
movl $0xffdfffff, %ebx       # imm = 0xFFDFFFFF
movl 0x60(%rsp), %eax
movl %eax, 0x8(%rsp)
xorl %eax, %eax
movq $0x0, 0x70(%rsp)
movq %r14, 0xd0(%rsp)
movq 0x38(%rsp), %r12
movq %rax, 0xb8(%rsp)
movl 0x6b0(%rsp,%rax,4), %edx
movslq %edx, %rcx
movq %rcx, %rax
movq %rcx, 0x40(%rsp)
movq %rdx, %rcx
shll $0x8, %eax
movl %eax, 0xa4(%rsp)
cltq
leaq (%r14,%rax,4), %r13
xorl %edx, %edx
movl 0xc(%rsp), %eax
cmpq %rcx, %rdx
je 0xdce56
movl (%r13,%rdx,4), %esi
btl $0x15, %esi
movl %esi, 0x34(%rsp)
jb 0xdce47
movl 0x4(%r13,%rdx,4), %r9d
andl %ebx, %r9d
leal -0x1(%r9), %r8d
movq %r8, 0xc0(%rsp)
cmpl %esi, %r8d
jle 0xdce47
movq %rcx, 0xb0(%rsp)
movq %r13, 0xe0(%rsp)
cmpl $0x4, %eax
movq %rdx, 0xc8(%rsp)
movl 0x34(%rsp), %ebx
jge 0xdce68
movl %ebx, 0x520(%rsp)
movq 0xc0(%rsp), %rax
movl %eax, 0x390(%rsp)
movl $0x2, 0x200(%rsp)
movl $0x1, %ebx
movl 0x8(%rsp), %eax
movl %eax, 0x8(%rsp)
leal -0x1(%rbx), %eax
movq %rax, 0x50(%rsp)
movq 0x20(%rsp), %r14
cmpl $0x62, %ebx
jb 0xdc7d2
movl $0x3e9, %edi            # imm = 0x3E9
callq 0x97178
movq 0x50(%rsp), %rcx
movl 0x520(%rsp,%rcx,4), %r10d
movl 0x390(%rsp,%rcx,4), %eax
movslq %eax, %r8
movl 0x200(%rsp,%rcx,4), %esi
movl %r8d, %ecx
subl %r10d, %ecx
cmpl $0x14, %ecx
movq %rsi, 0x18(%rsp)
movq %r10, 0x88(%rsp)
jl 0xdc99d
cmpl $0xf, %esi
jge 0xdc99d
movslq %r10d, %rdi
movl (%rbp,%rdi,4), %ecx
addl %esi, %ecx
movzbl (%r14,%rcx), %ecx
movl (%rbp,%r8,4), %edx
addl %esi, %edx
movzbl (%r14,%rdx), %r8d
leal (%rax,%r10), %edx
sarl %edx
movslq %edx, %rdx
movl (%rbp,%rdx,4), %edx
addl %esi, %edx
cmpb %r8b, %cl
movl %r8d, %esi
cmoval %ecx, %esi
movzbl (%r14,%rdx), %edx
cmovbl %ecx, %r8d
cmpb %dl, %r8b
cmovbel %edx, %r8d
cmpb %dl, %sil
cmovbel %esi, %r8d
movl %eax, %ecx
movl %r10d, %edx
movl %eax, %r9d
cmpl %r9d, %r10d
jg 0xdc8c4
movslq %r9d, %r11
movslq %edx, %rdx
movslq %r10d, %r12
decq %r12
movl %r10d, %esi
movl 0x4(%rbp,%r12,4), %r13d
movq 0x18(%rsp), %r15
addl %r13d, %r15d
cmpb %r8b, (%r14,%r15)
je 0xdc89b
ja 0xdc8c7
incl %esi
incq %r12
cmpq %r11, %r12
jl 0xdc87a
jmp 0xdc8ba
movl (%rbp,%rdx,4), %r10d
movl %r10d, 0x4(%rbp,%r12,4)
movl %r13d, (%rbp,%rdx,4)
incq %rdx
leal 0x1(%rsi), %r10d
cmpl %esi, %r9d
jg 0xdc871
incl %esi
jmp 0xdc8c7
cmpl %r9d, %r10d
cmovlel %r9d, %r10d
incl %r10d
movl %r10d, %esi
cmpl %r9d, %esi
jg 0xdc975
movslq %esi, %r10
movslq %ecx, %rcx
movslq %r9d, %r13
leaq 0x1(%r13), %r12
movl %r9d, %r11d
movl -0x4(%rbp,%r12,4), %r9d
movq 0x18(%rsp), %r15
addl %r9d, %r15d
cmpb %r8b, (%r14,%r15)
je 0xdc902
jb 0xdc932
decq %r12
decl %r11d
cmpq %r10, %r12
jg 0xdc8e0
jmp 0xdc968
movq 0x10(%rsp), %r14
movl (%r14,%rcx,4), %ebp
movq 0x10(%rsp), %r14
movl %ebp, -0x4(%r14,%r12,4)
movq 0x20(%rsp), %r14
movq 0x10(%rsp), %rbp
movl %r9d, (%rbp,%rcx,4)
decq %rcx
leal -0x1(%r11), %r9d
cmpl %r11d, %esi
jl 0xdc8d6
jmp 0xdc995
movq 0x10(%rsp), %r14
movl (%r14,%r10,4), %ebp
movq 0x10(%rsp), %r14
movl %r9d, (%r14,%r10,4)
movq 0x20(%rsp), %r14
movq 0x10(%rsp), %r9
movl %ebp, -0x4(%r9,%r12,4)
movq 0x10(%rsp), %rbp
incl %esi
decl %r11d
movl %r11d, %r9d
movl %esi, %r10d
jmp 0xdc866
cmpq %r10, %r13
cmovlq %r13, %r10
decl %r10d
movl %r10d, %r9d
cmpl %edx, %ecx
jge 0xdcc44
movq 0x18(%rsp), %rcx
incl %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x200(%rsp,%rax,4)
jmp 0xdc7c3
decl %r11d
movl %r11d, %r9d
jmp 0xdc975
testl %ecx, %ecx
jle 0xdcc33
movq $-0x1, %rdi
leaq 0x2f61d(%rip), %rax     # 0x10bfd0
incq %rdi
leaq 0x4(%rax), %rdx
cmpl %ecx, (%rax)
movq %rdx, %rax
jle 0xdc9b3
testq %rdi, %rdi
je 0xdcc33
leal 0x1(%r10), %eax
movl %eax, 0xac(%rsp)
leal 0x2(%r10), %eax
movl %eax, 0xa8(%rsp)
movq %r8, 0x90(%rsp)
movq %rdi, 0xf0(%rsp)
leaq -0x1(%rdi), %rax
movq %rax, 0xf8(%rsp)
movl %eax, %eax
leaq 0x2f5cb(%rip), %rcx     # 0x10bfd0
movl (%rcx,%rax,4), %r12d
leal (%r12,%r10), %eax
movl %eax, 0x8(%rsp)
movslq %eax, %rcx
movl 0xa8(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0xac(%rsp), %eax
movl %eax, 0x68(%rsp)
movl %r10d, 0x6c(%rsp)
cmpq %r8, %rcx
jg 0xdcc0c
movq %rcx, 0x98(%rsp)
movl (%rbp,%rcx,4), %eax
movq %rax, 0x48(%rsp)
addl %esi, %eax
movl %eax, 0x2c(%rsp)
movq %rbp, %r14
movl 0x6c(%rsp), %eax
movl %eax, %ebp
leal (%r12,%rbp), %r15d
movslq %ebp, %r13
movl (%r14,%r13,4), %ebx
leal (%rbx,%rsi), %edi
movl 0x2c(%rsp), %esi
movq 0x20(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq 0x38(%rsp), %r8
leaq 0x30(%rsp), %r9
callq 0xdd9fd
movslq %r15d, %rcx
testb %al, %al
je 0xdcaa2
movl %ebx, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x8(%rsp), %ebp
movl %eax, %ebp
movq 0x18(%rsp), %rsi
jge 0xdca58
jmp 0xdcaaa
movq %rcx, %r13
movq 0x18(%rsp), %rsi
movq 0x48(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x90(%rsp), %r8
movq 0x98(%rsp), %rax
cmpq %r8, %rax
movq %r14, %rbp
jge 0xdcc0c
movl 0x4(%rbp,%rax,4), %eax
movq %rax, 0x48(%rsp)
addl %esi, %eax
movl %eax, 0x2c(%rsp)
movq %rbp, %r14
movl 0x68(%rsp), %eax
movl %eax, %ebp
leal (%r12,%rbp), %r15d
movslq %ebp, %r13
movl (%r14,%r13,4), %ebx
leal (%rbx,%rsi), %edi
movl 0x2c(%rsp), %esi
movq 0x20(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq 0x38(%rsp), %r8
leaq 0x30(%rsp), %r9
callq 0xdd9fd
movslq %r15d, %rcx
testb %al, %al
je 0xdcb31
movl %ebx, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x8(%rsp), %ebp
movl %eax, %ebp
movq 0x18(%rsp), %rsi
jge 0xdcae7
jmp 0xdcb39
movq %rcx, %r13
movq 0x18(%rsp), %rsi
movq 0x48(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x98(%rsp), %rcx
leaq 0x2(%rcx), %rax
movq 0x90(%rsp), %r8
cmpq %r8, %rax
movq %r14, %rbp
jg 0xdcc0c
movl 0x8(%rbp,%rcx,4), %eax
movq %rax, 0x48(%rsp)
addl %esi, %eax
movl %eax, 0x2c(%rsp)
movq %rbp, %r14
movl 0x64(%rsp), %eax
movl %eax, %ebp
leal (%r12,%rbp), %r15d
movslq %ebp, %r13
movl (%r14,%r13,4), %ebx
leal (%rbx,%rsi), %edi
movl 0x2c(%rsp), %esi
movq 0x20(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq 0x38(%rsp), %r8
leaq 0x30(%rsp), %r9
callq 0xdd9fd
movslq %r15d, %rcx
testb %al, %al
je 0xdcbc4
movl %ebx, (%r14,%rcx,4)
movl %ebp, %eax
subl %r12d, %eax
cmpl 0x8(%rsp), %ebp
movl %eax, %ebp
movq 0x18(%rsp), %rsi
jge 0xdcb7a
jmp 0xdcbcc
movq %rcx, %r13
movq 0x18(%rsp), %rsi
movq 0x48(%rsp), %rax
movl %eax, (%r14,%r13,4)
movq 0x98(%rsp), %rcx
addq $0x3, %rcx
movl 0x30(%rsp), %eax
addl $0x3, 0x6c(%rsp)
addl $0x3, 0x68(%rsp)
addl $0x3, 0x64(%rsp)
testl %eax, %eax
movq %r14, %rbp
movq 0x90(%rsp), %r8
jns 0xdca2f
jmp 0xdd0e0
cmpq $0x1, 0xf0(%rsp)
movq 0x88(%rsp), %r10
movq 0xf8(%rsp), %rdi
jg 0xdc9e8
movl 0x30(%rsp), %eax
movl %eax, 0x8(%rsp)
movl 0x8(%rsp), %eax
testl %eax, %eax
jns 0xdcdd6
jmp 0xdd0e0
movl %edx, %r10d
subl 0x88(%rsp), %r10d
movl %esi, %r8d
subl %edx, %r8d
cmpl %r8d, %r10d
cmovll %r10d, %r8d
testl %r8d, %r8d
jle 0xdcc9a
movl %esi, %r10d
subl %r8d, %r10d
movslq %r10d, %r10
movq 0x10(%rsp), %r11
leaq (%r11,%rdi,4), %rdi
leaq (%r11,%r10,4), %r10
incl %r8d
xorl %r11d, %r11d
movl (%rdi,%r11), %ebp
movl (%r10,%r11), %r15d
movl %r15d, (%rdi,%r11)
movl %ebp, (%r10,%r11)
addq $0x4, %r11
decl %r8d
cmpl $0x1, %r8d
ja 0xdcc7d
movl %eax, %edi
subl %ecx, %edi
subl %r9d, %ecx
cmpl %ecx, %edi
cmovgel %ecx, %edi
testl %edi, %edi
jle 0xdccda
movl %eax, %r8d
subl %edi, %r8d
movslq %r8d, %r8
movslq %esi, %r9
incl %edi
movq 0x10(%rsp), %r10
movl (%r10,%r9,4), %r11d
movl 0x4(%r10,%r8,4), %ebp
movl %ebp, (%r10,%r9,4)
movl %r11d, 0x4(%r10,%r8,4)
addq $0x4, %r10
decl %edi
cmpl $0x1, %edi
ja 0xdccbd
movq 0x88(%rsp), %r10
movl %r10d, %r9d
subl %edx, %r9d
leal (%r9,%rsi), %r11d
decl %r11d
movl %eax, %edx
subl %ecx, %edx
leal 0x1(%rdx), %edi
movl %r11d, %r8d
subl %r10d, %r8d
movl %eax, %ecx
subl %edi, %ecx
cmpl %ecx, %r8d
jge 0xdcd0d
movl %r10d, %ecx
movl %r11d, %r10d
jmp 0xdcd1b
movl %ecx, %r8d
movl %edi, %ecx
movl %r10d, %edi
movl %eax, %r10d
movl %r11d, %eax
addl %esi, %r9d
movq 0x18(%rsp), %r14
leal 0x1(%r14), %esi
movl %edx, %ebp
subl %r9d, %ebp
cmpl %ebp, %r8d
jge 0xdcd3c
movl %r9d, %r11d
movl %r10d, %r8d
movl %r14d, %r10d
jmp 0xdcd51
movl %r8d, %ebp
movl %ecx, %r11d
movl %edx, %r8d
movl %r10d, %edx
movl %esi, %r10d
movl %r14d, %esi
movl %r9d, %ecx
movl %eax, %r9d
subl %edi, %r9d
cmpl %ebp, %r9d
jge 0xdcd68
movl %edi, %r9d
movl %eax, %edi
movq 0x18(%rsp), %rax
jmp 0xdcd79
movl %r11d, %r9d
movl %edi, %r11d
movl %edx, %edi
movl %eax, %edx
movl %esi, %eax
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rbp
movq 0x50(%rsp), %r14
movl %r11d, 0x520(%rsp,%r14,4)
movl %edx, 0x390(%rsp,%r14,4)
movl %esi, 0x200(%rsp,%r14,4)
movl %ebx, %edx
movl %r9d, 0x520(%rsp,%rdx,4)
movl %edi, 0x390(%rsp,%rdx,4)
movl %eax, 0x200(%rsp,%rdx,4)
movl %ecx, 0x524(%rsp,%rdx,4)
movl %r8d, 0x394(%rsp,%rdx,4)
movl %r10d, 0x204(%rsp,%rdx,4)
addl $0x2, %ebx
movq %rbx, 0x50(%rsp)
movl 0x8(%rsp), %eax
movq 0x50(%rsp), %rcx
movl %ecx, %ebx
testl %ecx, %ecx
movq 0xd0(%rsp), %r14
movq 0xc8(%rsp), %rdx
jg 0xdc7b2
testl %eax, %eax
movq 0x78(%rsp), %rbx
js 0xdd0ed
movl %eax, 0x8(%rsp)
movq 0x70(%rsp), %rax
subl 0x34(%rsp), %eax
movq 0xc0(%rsp), %rcx
addl %ecx, %eax
incl %eax
movq %rax, 0x70(%rsp)
movq 0xe0(%rsp), %r13
movl (%r13,%rdx,4), %eax
movl %eax, 0x34(%rsp)
movq 0x38(%rsp), %r12
movl 0xc(%rsp), %eax
movl $0xffdfffff, %ebx       # imm = 0xFFDFFFFF
movq 0xb0(%rsp), %rcx
movl 0x34(%rsp), %esi
orl $0x200000, %esi         # imm = 0x200000
movl %esi, (%r13,%rdx,4)
incq %rdx
cmpq $0x100, %rdx            # imm = 0x100
jne 0xdc72a
jmp 0xdce9d
movq 0x74151(%rip), %rax     # 0x150fc0
movq (%rax), %rdi
subl %ebx, %r9d
leaq 0x2f0ef(%rip), %rsi     # 0x10bf6b
movq 0xb0(%rsp), %rdx
movq 0xc8(%rsp), %rcx
movq 0x70(%rsp), %r8
xorl %eax, %eax
callq 0xb8d0
jmp 0xdc788
movq 0x40(%rsp), %rax
cmpb $0x0, 0x100(%rsp,%rax)
je 0xdceb6
movl $0x3ee, %edi            # imm = 0x3EE
callq 0x97178
movq 0x40(%rsp), %rcx
leaq (%r14,%rcx,4), %rbx
movq 0xe8(%rsp), %rax
leaq (%rax,%rcx,4), %rax
xorl %ecx, %ecx
movl $0xffdfffff, %esi       # imm = 0xFFDFFFFF
movl -0x4(%rax), %edx
andl %esi, %edx
movl %edx, 0xeb0(%rsp,%rcx,4)
movl (%rax), %edx
andl %esi, %edx
decl %edx
movl %edx, 0xab0(%rsp,%rcx,4)
incq %rcx
addq $0x400, %rax            # imm = 0x400
cmpq $0x100, %rcx            # imm = 0x100
jne 0xdced2
movl $0xffdfffff, %r8d       # imm = 0xFFDFFFFF
movslq (%r13), %rcx
andq $-0x200001, %rcx        # imm = 0xFFDFFFFF
movq 0x40(%rsp), %rax
movl 0xeb0(%rsp,%rax,4), %eax
cmpl %eax, %ecx
jge 0xdcf72
movl (%rbp,%rcx,4), %edx
leal -0x1(%rdx), %esi
sarl $0x1f, %esi
andl %r12d, %esi
addl %esi, %edx
decl %edx
movslq %edx, %rsi
movq 0x20(%rsp), %rdi
movzbl (%rdi,%rsi), %esi
cmpb $0x0, 0x100(%rsp,%rsi)
jne 0xdcf67
movslq 0xeb0(%rsp,%rsi,4), %rax
leal 0x1(%rax), %edi
movl %edi, 0xeb0(%rsp,%rsi,4)
movl %edx, (%rbp,%rax,4)
movq 0x40(%rsp), %rax
movl 0xeb0(%rsp,%rax,4), %eax
incq %rcx
movslq %eax, %rdx
cmpq %rdx, %rcx
jl 0xdcf1e
movl 0xa4(%rsp), %ecx
addl $0x100, %ecx            # imm = 0x100
movslq %ecx, %r15
movl (%r14,%r15,4), %edx
andl %r8d, %edx
decl %edx
movq 0x40(%rsp), %rcx
movl 0xab0(%rsp,%rcx,4), %ecx
cmpl %ecx, %edx
jle 0xdcff5
movslq %edx, %rdx
movl (%rbp,%rdx,4), %esi
leal -0x1(%rsi), %edi
sarl $0x1f, %edi
andl %r12d, %edi
addl %edi, %esi
decl %esi
movslq %esi, %rdi
movq 0x20(%rsp), %r8
movzbl (%r8,%rdi), %edi
cmpb $0x0, 0x100(%rsp,%rdi)
jne 0xdcfea
movslq 0xab0(%rsp,%rdi,4), %rcx
leal -0x1(%rcx), %r8d
movl %r8d, 0xab0(%rsp,%rdi,4)
movl %esi, (%rbp,%rcx,4)
movq 0x40(%rsp), %rcx
movl 0xab0(%rsp,%rcx,4), %ecx
decq %rdx
movslq %ecx, %rsi
cmpq %rsi, %rdx
jg 0xdcf9e
leal -0x1(%rax), %edx
cmpl %ecx, %edx
je 0xdd013
testl %eax, %eax
jne 0xdd009
cmpl 0x80(%rsp), %ecx
je 0xdd013
movl $0x3ef, %edi            # imm = 0x3EF
callq 0x97178
xorl %eax, %eax
orb $0x20, 0x2(%rbx,%rax)
addq $0x400, %rax            # imm = 0x400
cmpq $0x40000, %rax          # imm = 0x40000
jne 0xdd015
movq 0x40(%rsp), %rax
movb $0x1, 0x100(%rsp,%rax)
cmpq $0xff, 0xb8(%rsp)
je 0xdd192
movslq (%r13), %rsi
andq $-0x200001, %rsi        # imm = 0xFFDFFFFF
movl (%r14,%r15,4), %eax
movl $0xffdfffff, %ebx       # imm = 0xFFDFFFFF
andl %ebx, %eax
subl %esi, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
incl %ecx
movl %eax, %edx
sarl %cl, %edx
cmpl $0xfffe, %edx           # imm = 0xFFFE
jg 0xdd064
testl %eax, %eax
jle 0xdd0bb
movl %eax, %edx
movq 0xd8(%rsp), %rdi
leaq (%rdi,%rsi,4), %rsi
movslq (%rsi,%rdx,4), %rdi
decq %rdx
movl %edx, %r8d
shrl %cl, %r8d
movq 0x58(%rsp), %r9
movw %r8w, (%r9,%rdi,2)
cmpq $0x21, %rdi
jg 0xdd0b1
addl %r12d, %edi
movslq %edi, %rdi
movq 0x58(%rsp), %r9
movw %r8w, (%r9,%rdi,2)
leaq 0x1(%rdx), %rdi
cmpq $0x1, %rdi
ja 0xdd084
decl %eax
sarl %cl, %eax
cmpl $0x10000, %eax          # imm = 0x10000
jl 0xdd0d0
movl $0x3ea, %edi            # imm = 0x3EA
callq 0x97178
movq 0xb8(%rsp), %rax
incq %rax
jmp 0xdc6f7
movq 0x78(%rsp), %rbx
movq 0xd0(%rsp), %r14
movq 0x38(%rsp), %r12
movl 0xc(%rsp), %r8d
cmpl $0x3, %r8d
jge 0xdd1d5
testl %eax, %eax
jns 0xdd11e
cmpl $0x2, %r8d
jge 0xdd183
movq 0x18(%rbx), %rdi
movq 0x20(%rbx), %rsi
movq %r14, %rdx
movl %r12d, %ecx
callq 0xdd217
movl $0xffffffff, 0x30(%rbx) # imm = 0xFFFFFFFF
movslq 0x6c(%rbx), %rax
testq %rax, %rax
jle 0xdd13f
xorl %ecx, %ecx
cmpl $0x0, (%rbp,%rcx,4)
je 0xdd15a
incq %rcx
cmpq %rcx, %rax
jne 0xdd130
movl $0x3eb, %edi            # imm = 0x3EB
addq $0x12b8, %rsp           # imm = 0x12B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x97178
movl %ecx, 0x30(%rbx)
addq $0x12b8, %rsp           # imm = 0x12B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x33c1a
jmp 0xdc348
callq 0x33c36
jmp 0xdc477
callq 0x33c52
movl 0xc(%rsp), %r8d
jmp 0xdd10b
movl 0xc(%rsp), %r8d
cmpl $0x4, %r8d
movq 0x78(%rsp), %rbx
jge 0xdd1ab
movl 0x8(%rsp), %eax
jmp 0xdd0f7
movq 0x73e0e(%rip), %rax     # 0x150fc0
movq (%rax), %rdi
movl %r12d, %r8d
movq 0x70(%rsp), %rcx
subl %ecx, %r8d
leaq 0x2edd4(%rip), %rsi     # 0x10bf9b
movl %r12d, %edx
xorl %eax, %eax
callq 0xb8d0
movl 0x8(%rsp), %eax
movl 0x60(%rsp), %edx
subl %eax, %edx
cvtsi2ss %edx, %xmm0
cvtsi2ss %r12d, %xmm1
movl %eax, %r15d
movq 0x73dd2(%rip), %rax     # 0x150fc0
movq (%rax), %rdi
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2ec80(%rip), %rsi     # 0x10be80
movl %r12d, %ecx
movb $0x1, %al
callq 0xb8d0
movl %r15d, %eax
movl 0xc(%rsp), %r8d
jmp 0xdd101