Function at 0x485db0
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe4
mov eax, dword [0x4d6fd0]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x80], eax
mov eax, dword [ecx + 8]
push ebx
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x54], eax
movzx eax, word [edx]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x6c], edx
push edi
mov edi, dword [ebp + 0x18]
cmp ax, 0x40
jle 0x485e0e
push 0x40
push str.at_most__d_tables_in_a_join
push ecx
call fcn.004585a0
add esp, 0xc
xor eax, eax
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
test byte [ebp + 0x1c], 0x40
je 0x485e1b
mov eax, 1
jmp 0x485e1c
cwde
mov ecx, dword [ecx]
push esi
lea esi, [eax + eax*4]
mov dword [ebp - 0x58], eax
shl esi, 4
add esi, 0x3f
mov dword [ebp - 0x5c], ecx
and esi, 0xfffffff8
lea eax, [esi + 0x26c]
push eax
push ecx
call fcn.004565a0
mov edx, dword [ebp - 0x5c]
add esp, 8
mov ecx, eax
mov dword [ebp - 0x44], ecx
cmp byte [edx + 0x36], 0
je 0x485f0e
mov eax, dword [edx + 0x1f0]
test eax, eax
je 0x485eb7
test ecx, ecx
je 0x485e8d
cmp ecx, dword [edx + 0x104]
jb 0x485e8d
cmp ecx, dword [edx + 0x108]
jae 0x485e8d
movzx ecx, word [edx + 0xe8]
add dword [eax], ecx
xor eax, eax
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
push ecx
call dword [0x4d6498]
mov edx, dword [ebp - 0x5c]
add esp, 4
mov ecx, eax
mov eax, dword [edx + 0x1f0]
pop esi
pop edi
pop ebx
add dword [eax], ecx
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
test ecx, ecx
je 0x485ef2
cmp ecx, dword [edx + 0x104]
jb 0x485ef2
cmp ecx, dword [edx + 0x108]
jae 0x485ef2
mov eax, dword [edx + 0x100]
pop esi
mov dword [ecx], eax
dec dword [edx + 0xec]
xor eax, eax
pop edi
mov dword [edx + 0x100], ecx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
push ecx
call fcn.00422010
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x58]
push dword [ebp - 0x54]
mov dword [ecx + 0x1c], eax
mov eax, dword [ebp - 0x40]
mov dword [ecx], eax
mov eax, dword [ebp - 0x6c]
mov dword [ecx + 0xc], eax
call fcn.00481450
mov edx, dword [ebp - 0x44]
push 0x104
push 0
mov dword [edx + 0x18], eax
lea ecx, [edx + esi]
mov eax, dword [ebp + 0x1c]
lea esi, [ecx + 0x168]
mov word [edx + 4], ax
mov eax, dword [ebp - 0x40]
mov dword [edx + 0x20], ecx
push esi
mov dword [ebp - 0x4c], ecx
movsd xmm0, qword [eax + 0x1b8]
mov eax, 0
movsd qword [edx + 0x28], xmm0
mov edx, dword [ebp - 0x5c]
mov dword [ebp - 0xb0], esi
test byte [edx + 0x18], 0x80
cmove eax, edi
mov dword [ebp - 0x64], eax
call fcn.00498c70
mov edi, dword [ebp - 0x4c]
add esp, 0x10
mov ecx, dword [ebp - 0x40]
lea eax, [edi + 0x28]
mov dword [edi + 4], esi
mov dword [edi + 0x20], eax
xor esi, esi
mov eax, dword [ebp + 0x1c]
mov dword [edi], ecx
mov dword [edi + 0x10], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x1c], 8
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
mov word [edi + 0x16], ax
cmp dword [ecx + 0x15c], esi
jne 0x485fe5
mov eax, dword [ecx]
test byte [eax + 0x18], 0x40
jne 0x485fe5
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0x434c80
push ebx
push eax
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], ecx
call fcn.00485a60
mov esi, dword [edi + 0x18]
add esp, 8
mov byte [edi + 0x14], 0x45
test ebx, ebx
je 0x486214
cmp byte [ebx], 0x45
je 0x4861d4
mov ecx, dword [edi + 0x1c]
cmp esi, ecx
jl 0x4861b2
mov edx, dword [ebp - 0x4c]
mov edi, dword [edi + 0x20]
mov eax, dword [edx]
lea edx, [ecx + ecx*4]
shl edx, 4
mov esi, dword [eax]
test esi, esi
je 0x486041
cmp byte [esi + 0x36], 0
jne 0x48610f
cmp byte [esi + 0xea], 0
je 0x486041
movzx eax, word [esi + 0xe8]
cmp edx, eax
jle 0x4860c6
inc dword [esi + 0xf8]
push edx
call fcn.00465240
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x486058
test esi, esi
je 0x486058
mov byte [esi + 0x36], 1
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x20], ecx
test ecx, ecx
je 0x486112
mov eax, dword [eax + 0x18]
lea eax, [eax + eax*4]
shl eax, 3
push eax
push edi
push ecx
call fcn.004986f0
mov eax, dword [ebp - 0x4c]
add esp, 0xc
add eax, 0x28
cmp edi, eax
je 0x48616f
test esi, esi
je 0x486166
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x486136
test edi, edi
je 0x48611a
cmp edi, dword [esi + 0x104]
jb 0x48611a
cmp edi, dword [esi + 0x108]
jae 0x48611a
mov edi, dword [ebp - 0x4c]
movzx ecx, word [esi + 0xe8]
add dword [eax], ecx
mov eax, dword [edi + 0x20]
jmp 0x486179
mov ecx, dword [esi + 0x100]
test ecx, ecx
jne 0x4860db
inc dword [esi + 0xfc]
jmp 0x486041
mov eax, dword [ecx]
mov dword [esi + 0x100], eax
mov eax, dword [esi + 0xec]
inc eax
mov dword [esi + 0xec], eax
inc dword [esi + 0xf4]
cmp eax, dword [esi + 0xf0]
jle 0x486104
mov dword [esi + 0xf0], eax
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x20], ecx
jmp 0x486066
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x20], edi
jmp 0x4861ed
push edi
call dword [0x4d6498]
mov edi, dword [ebp - 0x4c]
mov ecx, eax
mov eax, dword [esi + 0x1f0]
add esp, 4
add dword [eax], ecx
mov eax, dword [edi + 0x20]
jmp 0x486179
test edi, edi
je 0x486166
cmp edi, dword [esi + 0x104]
jb 0x486166
cmp edi, dword [esi + 0x108]
jae 0x486166
mov eax, dword [esi + 0x100]
mov dword [edi], eax
dec dword [esi + 0xec]
mov dword [esi + 0x100], edi
mov edi, dword [ebp - 0x4c]
mov eax, dword [edi + 0x20]
jmp 0x486179
push edi
call fcn.00422010
add esp, 4
mov edi, dword [ebp - 0x4c]
mov eax, dword [edi + 0x20]
test esi, esi
je 0x486196
test eax, eax
je 0x486196
cmp eax, dword [esi + 0x104]
jb 0x486196
cmp eax, dword [esi + 0x108]
jae 0x486196
movzx ecx, word [esi + 0xe8]
jmp 0x4861a2
push eax
call dword [0x4d6498]
add esp, 4
mov ecx, eax
mov esi, dword [edi + 0x18]
mov eax, 0xcccccccd
mul ecx
shr edx, 5
mov dword [edi + 0x1c], edx
mov ecx, dword [edi + 0x20]
lea edx, [esi + esi*4]
lea eax, [esi + 1]
mov dword [edi + 0x18], eax
mov dword [ecx + edx*8], ebx
mov byte [ecx + edx*8 + 0x12], 0
mov dword [ecx + edx*8 + 0x14], edi
mov dword [ecx + edx*8 + 4], 0xffffffff
jmp 0x4861ed
push 0x45
push dword [ebx + 8]
push edi
call fcn.0048de20
push 0x45
push dword [ebx + 0xc]
push edi
call fcn.0048de20
add esp, 0x18
cmp dword [ebp - 0x58], 0
je 0x486200
push ebx
call fcn.0045b640
add esp, 4
test eax, eax
je 0x486214
mov eax, dword [ebp - 0x44]
push 8
push dword [eax + 0x18]
push ebx
push dword [ebp - 0x40]
call fcn.0045b010
add esp, 0x10
mov ebx, dword [ebp - 0x6c]
xor eax, eax
xor esi, esi
cmp ax, word [ebx]
jge 0x486278
mov edx, dword [ebp - 0xb0]
lea edi, [ebx + 0x14]
nop dword [eax]
mov ecx, dword [edx]
mov eax, dword [edi + 0x14]
mov dword [edx + ecx*4 + 4], eax
inc dword [edx]
mov eax, dword [edi]
test eax, eax
je 0x48626d
test byte [eax + 0x22], 0x10
je 0x48626d
xor ecx, ecx
mov eax, esi
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [ebp - 0x4c]
cmovae edx, ecx
or dword [eax + 8], ecx
or dword [eax + 0xc], edx
mov edx, dword [ebp - 0xb0]
movsx eax, word [ebx]
inc esi
add edi, 0x40
cmp esi, eax
jl 0x486230
mov eax, dword [ebp - 0x4c]
mov esi, dword [eax + 0x18]
sub esi, 1
js 0x486296
push esi
push eax
push ebx
call fcn.00436e00
mov eax, dword [ebp - 0x4c]
add esp, 0xc
sub esi, 1
jns 0x486283
mov eax, dword [ebp - 0x5c]
cmp byte [eax + 0x36], 0
jne 0x48683c
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x486374
cmp word [ebx], 1
jne 0x486371
mov ecx, dword [ebp - 0x6c]
xor edx, edx
mov edi, dword [eax]
mov ebx, dword [ebx + 0x28]
mov esi, dword [ecx + 0x14]
mov dword [ebp - 0x70], esi
test edi, edi
jle 0x4862f2
mov ecx, dword [eax + 8]
nop
mov eax, dword [ecx]
cmp byte [eax], 0x98
jne 0x4862e7
cmp dword [eax + 0x18], ebx
jne 0x4862e7
cmp word [eax + 0x1c], 0
jl 0x4864dd
inc edx
add ecx, 0x14
cmp edx, edi
jl 0x4862d0
mov eax, dword [ebp - 0x64]
mov esi, dword [esi + 0x10]
test esi, esi
je 0x486371
nop dword [eax]
cmp byte [esi + 0x2c], 0
je 0x486367
xor edi, edi
cmp edi, dword [esi + 0x24]
jge 0x486361
nop dword [eax]
mov eax, dword [esi + 4]
push esi
push 2
push 0xffffffffffffffff
push 0xffffffffffffffff
push dword [eax + edi*4]
push ebx
push dword [ebp - 0x4c]
call fcn.004396c0
add esp, 0x1c
test eax, eax
jne 0x486358
push edi
push esi
push ebx
push dword [ebp - 0x64]
push dword [ebp - 0x40]
call fcn.00439620
add esp, 0x14
test eax, eax
js 0x48635e
mov eax, dword [esi + 4]
mov eax, dword [eax + edi*4]
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0xc]
cmp byte [eax + ecx*8 + 0x14], 0
je 0x48635e
inc edi
cmp edi, dword [esi + 0x24]
jl 0x486310
cmp edi, dword [esi + 0x24]
je 0x4864dd
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x486300
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x64], eax
mov esi, dword [ebp - 0x44]
mov edi, dword [ebp - 0x58]
lea ecx, [esi + 0x38]
xor edx, edx
mov dword [ebp - 0x84], 0xffffffff
or eax, 0xffffffff
mov dword [ebp - 0x78], 0xffffffff
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x50], edx
mov dword [ebp - 0xa0], edx
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0xa4], ecx
test edi, edi
jle 0x48687a
xorps xmm0, xmm0
mov dword [ebp - 0x98], 0
movlpd qword [ebp - 0xdc], xmm0
lea ecx, [edi - 1]
movsd xmm1, qword [ebp - 0xdc]
xor eax, eax
movlpd qword [ebp - 0xe4], xmm0
or ebx, 0xffffffff
movups xmm2, xmmword [ebp - 0xe4]
cmp edx, ecx
mov dword [ebp - 0x7c], ebx
movlpd qword [ebp - 0xd4], xmm0
movsd xmm0, qword [0x4c3e40]
setl al
movsd qword [ebp - 0xac], xmm0
xorps xmm0, xmm0
movlpd qword [ebp - 0x74], xmm0
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x74]
movsd qword [ebp - 0xbc], xmm1
movups xmmword [ebp - 0x3c], xmm2
mov dword [ebp - 0xb4], eax
test ebx, ebx
jns 0x4866f1
mov ebx, dword [ebp - 0x6c]
mov eax, edx
shl eax, 6
add ebx, 8
add ebx, eax
mov ecx, edx
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x90], ebx
cmp edx, edi
jge 0x4866e1
lea eax, [edx + edx*4]
shl eax, 4
sub eax, 0xffffff80
add eax, esi
mov dword [ebp - 0x60], eax
nop dword [eax]
mov al, byte [ebx + 0x1c]
and al, 0xa
mov byte [ebp - 0x45], al
cmp ecx, edx
je 0x486484
test al, al
jne 0x4866de
mov ecx, dword [ebp - 0xb0]
xor eax, eax
mov edx, dword [ecx]
test edx, edx
jle 0x4864a4
mov esi, dword [ebx + 0x20]
add ecx, 4
cmp dword [ecx], esi
je 0x4864f0
inc eax
add ecx, 4
cmp eax, edx
jl 0x486498
xorps xmm0, xmm0
movlpd qword [ebp - 0x74], xmm0
mov edi, dword [ebp - 0x70]
mov esi, dword [ebp - 0x74]
mov edx, dword [ebp - 0x84]
mov ecx, esi
mov eax, edi
and ecx, edx
and eax, dword [ebp - 0x78]
or ecx, eax
jne 0x486507
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x68]
cmp ecx, edx
lea eax, [edx + 1]
cmovne eax, edx
mov edx, eax
mov dword [ebp - 0x50], edx
jmp 0x4866bd
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0x64], 0
mov byte [esi + 8], 1
jmp 0x486377
xor esi, esi
xor edi, edi
bts esi, eax
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
cmovae edi, esi
jmp 0x4864b2
cmp dword [ebp - 0x9c], 0
je 0x486517
mov dword [ebp - 0x70], esi
mov ebx, edi
jmp 0x48651d
mov ebx, dword [ebp - 0x78]
mov dword [ebp - 0x70], edx
cmp dword [ebp - 0xa0], 0
jne 0x486531
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x486531
mov ecx, dword [eax]
jmp 0x486533
xor ecx, ecx
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp - 0x98]
inc eax
cmp dword [edx + 0x3c], 0
cmovne eax, dword [ebp - 0x98]
mov dword [ebp - 0x98], eax
mov eax, edx
mov edx, dword [ebp - 0x70]
mov eax, dword [eax + 0xc]
test byte [eax + 0x22], 0x10
lea eax, [ebp - 0x2c]
je 0x486586
push dword [ebp - 0x60]
push eax
push ecx
push dword [ebp - 0x78]
push dword [ebp - 0x84]
push ebx
mov ebx, dword [ebp - 0x90]
push edx
push ebx
push dword [ebp - 0x4c]
push dword [ebp - 0x40]
call fcn.0042dc80
jmp 0x4865b2
push eax
xor eax, eax
cmp dword [ebp - 0xa0], eax
cmove eax, dword [ebp - 0x64]
push eax
push ecx
push dword [ebp - 0x78]
push dword [ebp - 0x84]
push ebx
mov ebx, dword [ebp - 0x90]
push edx
push ebx
push dword [ebp - 0x4c]
push dword [ebp - 0x40]
call fcn.0042cc40
mov edx, dword [ebp - 0x2c]
add esp, 0x28
cmp dword [ebp - 0x9c], 0
je 0x4865d5
test edx, 0x100f3000
jne 0x4865d5
or dword [ebp - 0xb4], esi
or dword [ebp - 0x94], edi
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
and ecx, dword [ebp - 0x84]
and eax, dword [ebp - 0x78]
or ecx, eax
jne 0x4866a5
mov eax, dword [ebp - 0x7c]
test eax, eax
js 0x48661b
and esi, dword [ebp - 0xb4]
and edi, dword [ebp - 0x94]
or esi, edi
jne 0x48661b
test dword [ebp - 0xe4], 0x100f3000
je 0x48661b
test edx, 0x100f3000
je 0x4866a5
cmp dword [ebp - 0x98], 0
je 0x486632
cmp dword [ebx + 0x3c], 0
je 0x486632
test edx, 0x100f3000
je 0x4866a5
test eax, eax
js 0x486656
movsd xmm1, qword [ebp - 0xac]
comisd xmm1, xmmword [ebp - 0x14]
ja 0x486656
movsd xmm1, qword [ebp - 0xbc]
jb 0x4866ad
comisd xmm1, xmmword [ebp - 0x24]
jbe 0x4866ad
movups xmm0, xmmword [ebp - 0x1c]
mov ecx, dword [ebp - 0x68]
movups xmm2, xmmword [ebp - 0x2c]
mov dword [ebp - 0x7c], ecx
movups xmmword [ebp - 0xd4], xmm0
movq xmm0, qword [ebp - 0xc]
movups xmmword [ebp - 0xe4], xmm2
movsd xmm1, qword [ebp - 0xdc]
movq qword [ebp - 0xc4], xmm0
movsd xmm0, qword [ebp - 0xcc]
movups xmmword [ebp - 0x3c], xmm2
movsd qword [ebp - 0xac], xmm0
movsd qword [ebp - 0xbc], xmm1
jmp 0x4866b4
movsd xmm1, qword [ebp - 0xbc]
movups xmm2, xmmword [ebp - 0x3c]
mov ecx, dword [ebp - 0x68]
cmp byte [ebp - 0x45], 0
mov edx, dword [ebp - 0x50]
jne 0x4866db
add dword [ebp - 0x60], 0x50
inc ecx
mov edi, dword [ebp - 0x58]
add ebx, 0x40
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x90], ebx
cmp ecx, edi
jl 0x486470
jmp 0x4866de
mov edi, dword [ebp - 0x58]
mov esi, dword [ebp - 0x44]
sub dword [ebp - 0x9c], 1
mov ebx, dword [ebp - 0x7c]
jns 0x486436
mov edi, dword [ebp - 0xe4]
test edi, 0x1000000
je 0x48670c
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x48670c
mov dword [eax], 0
test edi, 0x40000000
je 0x486718
mov byte [esi + 8], 2
mov esi, dword [ebp - 0xa4]
and dword [ebp - 0x88], edi
movq xmm0, qword [ebp - 0xd4]
movups xmmword [esi], xmm2
movq qword [esi + 0x10], xmm0
test edi, 0x200f0000
je 0x48674a
mov ecx, dword [ebp - 0x40]
mov eax, dword [ecx + 0x48]
mov dword [esi + 0x20], eax
inc dword [ecx + 0x48]
jmp 0x486751
mov dword [esi + 0x20], 0xffffffff
mov eax, dword [ebp - 0x4c]
xor ecx, ecx
mov edx, dword [eax + 0x168]
test edx, edx
jle 0x48678a
mov esi, dword [ebp - 0x6c]
mov eax, ebx
shl eax, 6
mov esi, dword [eax + esi + 0x28]
mov eax, dword [ebp - 0x4c]
add eax, 0x16c
cmp dword [eax], esi
je 0x48680c
inc ecx
add eax, 4
cmp ecx, edx
jl 0x486774
mov esi, dword [ebp - 0xa4]
xorps xmm0, xmm0
movlpd qword [ebp - 0xac], xmm0
mov edx, dword [ebp - 0xa8]
mov eax, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x40]
not eax
and dword [ebp - 0x84], eax
not edx
and dword [ebp - 0x78], edx
comisd xmm1, xmmword [0x4c3d70]
mov byte [esi + 0x34], bl
jb 0x4867ce
mulsd xmm1, qword [ecx + 0x1b8]
movsd qword [ecx + 0x1b8], xmm1
mov eax, dword [ebp - 0x6c]
shl ebx, 6
mov eax, dword [ebx + eax + 0x44]
test eax, eax
je 0x4867e4
test edi, 0xf0000
je 0x48682c
mov ecx, dword [ebp - 0xa0]
add esi, 0x50
mov edi, dword [ebp - 0x58]
inc ecx
mov dword [ebp - 0xa4], esi
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0xa0], ecx
cmp ecx, edi
jge 0x48686e
mov edx, dword [ebp - 0x50]
jmp 0x4863b6
mov esi, dword [ebp - 0xa4]
xor eax, eax
xor edx, edx
bts eax, ecx
cmp ecx, 0x20
cmovae edx, eax
xor eax, edx
cmp ecx, 0x40
cmovae edx, eax
jmp 0x4867a1
push dword [eax]
push str.cannot_use_index:__s
push ecx
call fcn.004585a0
add esp, 0xc
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
movsd xmm0, qword [ecx + 0x28]
push ecx
push dword [ebp - 0x5c]
movsd qword [eax + 0x1b8], xmm0
call fcn.0048dbc0
add esp, 8
xor eax, eax
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00496cac
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x88]
mov ebx, dword [ebp - 0x40]
cmp dword [ebx + 0x44], 0
jne 0x48683c
mov edx, dword [ebp - 0x5c]
cmp byte [edx + 0x36], 0
jne 0x48683c
and eax, 0x4000000
mov dword [ebp - 0x88], eax
je 0x4868ac
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x4868a6
mov dword [eax], 0
mov eax, dword [ebp - 0x88]
test byte [ebp + 0x1c], 4
je 0x4868c0
test eax, eax
je 0x4868c0
mov byte [esi + 6], 1
and dword [ecx], 0xff7fffff
mov eax, dword [ebx + 0x1b0]
mov esi, ebx
test eax, eax
cmovne esi, eax
cmp dword [esi + 0x15c], 0
jne 0x4868f9
push esi
call fcn.00461b30
add esp, 4
test eax, eax
je 0x4868f9
push 0
push 0
push 1
push eax
call fcn.004760b0
add esp, 0x10
inc eax
mov dword [esi + 0x15c], eax
mov ecx, dword [ebp - 0x44]
movsd xmm0, qword [0x4c3d70]
mov dword [ebp - 0x80], 0xffffffff
mov dword [ebp - 0x7c], 0xffffffff
movsd qword [ecx + 0x30], xmm0
test edi, edi
jle 0x486c48
mov dword [ebp - 0x70], edi
lea edx, [ecx + 0x38]
nop word [eax + eax]
movzx eax, byte [edx + 0x34]
mov edi, 0xfff0bdc0
mov esi, dword [ebp - 0x6c]
movsd xmm0, qword [edx + 8]
add esi, 8
shl eax, 6
add esi, eax
mov dword [ebp - 0x50], esi
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 0x20]
mov dword [edx + 0x1c], eax
mulsd xmm0, qword [ecx + 0x30]
movsd qword [ecx + 0x30], xmm0
mov edx, dword [ebx + 0x44]
test edx, edx
je 0x486984
mov eax, dword [ebp - 0x5c]
xor edi, edi
mov ecx, dword [eax + 0x14]
test ecx, ecx
jle 0x486984
mov eax, dword [eax + 0x10]
add eax, 0xc
cmp dword [eax], edx
je 0x486984
inc edi
add eax, 0x10
cmp edi, ecx
jl 0x486978
mov cl, byte [ebx + 0x22]
test cl, 2
jne 0x486a35
cmp dword [ebx + 0x1c], 0
jne 0x486a35
mov eax, dword [ebp - 0x8c]
mov eax, dword [eax]
test eax, 0x8000000
je 0x486a69
mov esi, dword [ebx + 0x34]
test esi, esi
je 0x4869c2
mov eax, dword [ebp - 0x5c]
cmp dword [esi], eax
je 0x4869c2
mov esi, dword [esi + 0x18]
test esi, esi
jne 0x4869b7
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
mov ebx, dword [edx + 0x1c]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x60], eax
mov eax, ebx
cmp dword [edx + 0x20], ebx
jg 0x4869f2
push edx
call fcn.0043e0c0
add esp, 4
test eax, eax
je 0x4869ec
mov ebx, 1
jmp 0x486a26
mov edx, dword [ebp - 0x54]
mov eax, dword [edx + 0x1c]
inc eax
lea ecx, [ebx + ebx*4]
mov dword [edx + 0x1c], eax
mov eax, dword [edx + 4]
mov edx, dword [ebp - 0x60]
mov word [eax + ecx*4], 0x87
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push 0xfffffffffffffff6
push esi
push ebx
push dword [ebp - 0x54]
call fcn.00476550
add esp, 0x10
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ecx]
test eax, 0x20000000
je 0x486b3e
mov ebx, dword [ebp - 0x50]
push ecx
push dword [ebp - 0x7c]
push dword [ebp - 0x80]
push ebx
push dword [ebp - 0x4c]
push dword [ebp - 0x40]
call fcn.00433100
add esp, 0x18
jmp 0x486bd8
test eax, 0x800000
jne 0x486b25
test byte [ebp + 0x1c], 0x10
jne 0x486b25
mov eax, dword [ebp - 0x44]
mov edx, dword [esi + 0x20]
mov dword [ebp - 0x60], edx
mov al, byte [eax + 6]
mov byte [ebp - 0x45], al
test cl, 0x10
jne 0x486ae7
push dword [ebp - 0x40]
call fcn.00461b30
push dword [ebx]
cmp byte [ebp - 0x45], 0
mov esi, eax
setne al
movzx eax, al
push eax
push dword [ebx + 0x14]
push edi
push dword [ebp - 0x40]
call fcn.00471ef0
xor eax, eax
cmp byte [ebp - 0x45], al
push edi
push dword [ebx + 0x14]
setne al
push dword [ebp - 0x60]
add eax, 0x27
push eax
push esi
call fcn.00476120
push 0xfffffffffffffff2
push dword [ebx + 8]
push 0xffffffffffffffff
push esi
call fcn.00476550
mov eax, dword [ebp - 0x44]
add esp, 0x3c
mov esi, dword [ebp - 0x50]
mov al, byte [eax + 6]
test al, al
jne 0x486a35
cmp dword [ebx + 8], 0x40
jge 0x486a35
mov edx, dword [esi + 0x30]
mov eax, edx
mov ecx, dword [esi + 0x34]
xor esi, esi
or eax, ecx
je 0x486b14
shrd edx, ecx, 1
inc esi
shr ecx, 1
mov eax, edx
or eax, ecx
jne 0x486b07
mov ecx, dword [ebp - 0x54]
push 0xfffffffffffffff2
push esi
mov eax, dword [ecx + 0x1c]
dec eax
push eax
push ecx
jmp 0x486a2d
push dword [ebx]
push 0
push dword [ebx + 0x14]
mov ebx, dword [ebp - 0x40]
push edi
push ebx
call fcn.00471ef0
add esp, 0x14
jmp 0x486a38
test eax, 0xf0000
je 0x486bd5
mov esi, dword [ecx + 0x10]
push esi
push ebx
call fcn.00462740
mov edx, dword [ebp - 0x54]
mov ebx, eax
mov eax, dword [ebp - 0x8c]
add esp, 8
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x60], eax
mov eax, dword [esi + 0x28]
mov esi, dword [edx + 0x1c]
mov dword [ebp - 0x94], eax
mov eax, esi
cmp dword [edx + 0x20], esi
jg 0x486b94
push edx
call fcn.0043e0c0
add esp, 4
test eax, eax
je 0x486b8e
mov esi, 1
jmp 0x486bc6
mov edx, dword [ebp - 0x54]
mov eax, dword [edx + 0x1c]
inc eax
lea ecx, [esi + esi*4]
mov dword [edx + 0x1c], eax
mov eax, dword [edx + 4]
mov edx, dword [ebp - 0x60]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x94]
mov word [eax + ecx*4], 0x27
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
push 0xfffffffffffffff0
push ebx
push esi
push dword [ebp - 0x54]
call fcn.00476550
add esp, 0x10
mov ebx, dword [ebp - 0x50]
push edi
push dword [ebp - 0x40]
call fcn.00454990
mov eax, dword [ebp - 0x4c]
add esp, 8
mov ecx, dword [eax + 4]
xor eax, eax
mov edx, dword [ecx]
test edx, edx
jle 0x486c08
mov esi, dword [ebx + 0x20]
add ecx, 4
cmp dword [ecx], esi
je 0x486cc7
inc eax
add ecx, 4
cmp eax, edx
jl 0x486bf8
xorps xmm0, xmm0
movlpd qword [ebp - 0xac], xmm0
mov edx, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0xac]
not edx
not ecx
and dword [ebp - 0x7c], edx
mov edx, dword [ebp - 0x8c]
and dword [ebp - 0x80], ecx
add edx, 0x50
sub dword [ebp - 0x70], 1
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x8c], edx
jne 0x486930
mov edi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x54]
mov eax, dword [eax + 0x1c]
mov dword [ecx + 0x10], eax
mov eax, dword [ebp - 0x5c]
cmp byte [eax + 0x36], 0
jne 0x48683f
or ebx, 0xffffffff
mov dword [ebp - 0x70], 0xffffffff
xor esi, esi
test edi, edi
jle 0x486cb4
lea edi, [ecx + 0x64]
push dword [ebp + 0x1c]
movzx eax, byte [edi + 8]
push eax
push esi
lea eax, [edi - 0x2c]
push eax
push dword [ebp - 0x6c]
push dword [ebp - 0x40]
call fcn.00436a90
push dword [ebp - 0x70]
push ebx
push dword [ebp + 0x1c]
push esi
push dword [ebp - 0x44]
call fcn.00431220
mov ecx, dword [edi]
lea edi, [edi + 0x50]
mov ebx, eax
mov dword [ebp - 0x70], edx
mov eax, dword [ebp - 0x44]
inc esi
add esp, 0x2c
mov dword [eax + 0x14], ecx
cmp esi, dword [ebp - 0x58]
jl 0x486c71
mov ecx, eax
mov eax, ecx
mov ecx, dword [ebp - 4]
pop esi
pop edi
xor ecx, ebp
pop ebx
call fcn.00496cac
mov esp, ebp
pop ebp
ret
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x486c1f