Function at 0x4866e0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1e4
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor eax, eax
cmp esi, 0x64
mov dword [esp + 0x20], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], eax
mov dword [0x584b84], eax
push edi
setl al
cmp esi, 0x64
mov dword [esp + 0x1c], 0x3ff00000
mov dword [esp + 0x11c], eax
jl 0x486746
sub esi, 0x64
mov dword [ebp + 0x10], esi
xor ecx, ecx
cmp esi, 7
sete cl
cmp esi, 3
mov dword [esp + 0x90], ecx
mov dword [esp + 0x6c], 0x206
je 0x486774
cmp esi, 4
je 0x486774
cmp esi, 6
je 0x486774
mov dword [esp + 0x6c], 0x4206
cmp esi, 1
je 0x486788
cmp esi, 2
je 0x486788
cmp esi, 5
je 0x486788
cmp esi, 7
jne 0x486792
mov eax, dword [esp + 0x6c]
or al, 8
mov dword [esp + 0x6c], eax
cmp esi, 6
je 0x4867b0
cmp esi, 1
je 0x4867b0
cmp esi, 3
je 0x4867b0
cmp esi, 2
je 0x4867b0
cmp esi, 4
je 0x4867b0
cmp esi, 5
jne 0x4867bd
or dword [esp + 0x6c], 0x1c200000
jmp 0x4867bd
mov esi, dword [ebp + 0x10]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x11c]
mov eax, dword [ebp + 0xc]
push edx
mov edx, dword [0x585050]
push eax
mov eax, dword [0x585054]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
push edx
call fcn.004a4720
xor ebx, ebx
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0xc], eax
jne 0x4881ab
mov edi, dword [0x571920]
xor eax, eax
cmp edi, 0x54
push 1
setne al
dec eax
mov dword [esp + 0xc0], ebx
and eax, 3
mov dword [esp + 0x40], ebx
mov edi, eax
mov dword [esp + 0x38], edi
call fcn.004fed60
mov ecx, dword [0x585050]
push 1
push ecx
mov dword [esp + 0xd4], eax
call fcn.00488ce0
mov edx, dword [0x585054]
push 1
push edx
mov dword [esp + 0x60], eax
call fcn.00488ce0
push 1
mov dword [esp + 0x48], eax
call fcn.004bad60
mov ecx, dword [esp + 0x64]
add esp, 0x18
cmp ecx, ebx
mov dword [esp + 0xb0], eax
jne 0x486871
cmp dword [esp + 0xc8], ebx
jne 0x486871
cmp eax, ebx
je 0x4868a8
cmp dword [esp + 0x30], ebx
je 0x4868a8
lea eax, [esp + 0x30]
lea ecx, [esp + 0xb0]
push eax
lea edx, [esp + 0xcc]
push ecx
lea eax, [esp + 0x54]
push edx
push eax
call fcn.00486480
add esp, 0x10
test eax, eax
jne 0x4881ab
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x30]
push ecx
push eax
mov eax, dword [esp + 0x54]
push edx
push eax
call fcn.00488640
mov ebx, eax
mov eax, dword [esp + 0x40]
add esp, 0x10
mov dword [esp + 0x60], ebx
test eax, eax
je 0x4869ac
test ebx, ebx
je 0x4868e2
cmp ebx, 2
jne 0x4869ac
cmp esi, 2
je 0x4868fb
cmp esi, 5
je 0x4868fb
mov eax, dword [esp + 0x90]
test eax, eax
je 0x4869ac
mov eax, dword [0x571920]
cmp eax, 0x54
je 0x4869ac
cmp eax, 0x52
je 0x4869ac
cmp eax, 0x44
je 0x4869ac
cmp eax, 0x50
jne 0x486953
mov ecx, dword [0x582ffc]
push 2
push 0x581b18
push ecx
push 1
push 0x582ff8
call fcn.005471f2
mov edi, eax
add esp, 0x14
cmp edi, 1
mov dword [esp + 0x34], edi
jne 0x48696f
mov edi, 3
mov dword [esp + 0x34], edi
jmp 0x48697c
push 4
push 0x5824a4
push 1
push 0x5824a0
call fcn.00547234
mov edi, eax
add esp, 0x10
mov dword [esp + 0x34], edi
cmp edi, 0xffffffff
je 0x4881ab
test edi, edi
je 0x4869bd
mov edx, dword [0x585054]
push edx
call fcn.00417520
add esp, 4
test eax, eax
je 0x4869a6
push 2
push 0x582040
call fcn.005471c8
add esp, 8
test eax, eax
jne 0x4881ab
xor ebx, ebx
mov dword [esp + 0x60], ebx
test edi, edi
je 0x4869bd
call fcn.00481ce0
inc eax
mov dword [esp + 0xb8], eax
cmp ebx, 2
jne 0x4869cb
mov ebx, 1
mov dword [esp + 0x60], ebx
call fcn.004b25b0
test eax, eax
je 0x4869f8
mov ecx, dword [0x585050]
lea eax, [esp + 0x5c]
push eax
push ecx
call fcn.00438390
mov eax, dword [0x585054]
lea edx, [esp + 0x70]
push edx
push eax
call fcn.00438390
add esp, 0x10
mov eax, dword [esp + 0x90]
test eax, eax
je 0x486a47
push 0x57ace0
call fcn.00488380
add esp, 4
test eax, eax
jne 0x4881ab
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
jmp 0x48716a
cmp esi, 4
jne 0x486ac5
cmp ebx, 1
jne 0x486a72
lea ecx, [esp + 0x3c]
push ecx
push ebx
push 0x5818a0
call fcn.00447560
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
jmp 0x486a9b
lea edx, [esp + 0x158]
lea eax, [esp + 0x148]
push edx
push eax
push 0x581298
call fcn.00488240
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
mov ecx, dword [0x581290]
mov edx, dword [0x581294]
push 3
push ecx
push edx
call fcn.00547324
add esp, 0xc
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x4881ab
jmp 0x4871fd
cmp esi, 5
jne 0x486b1a
xor eax, eax
cmp ebx, 1
sete al
lea ecx, [esp + 0x94]
push eax
push ecx
call fcn.00455750
add esp, 8
mov dword [esp + 0xc], eax
test eax, eax
je 0x486af4
cmp eax, 0xb
jne 0x4881ab
lea edx, [esp + 0x94]
push edx
call fcn.00418eb0
fcomp qword [0x584ab0]
add esp, 4
fnstsw ax
test ah, 0x41
jne 0x4881ab
jmp 0x48716a
cmp esi, 3
jne 0x486b56
cmp ebx, 1
jne 0x486b56
lea eax, [esp + 0xfc]
lea ecx, [esp + 0x70]
push eax
push ecx
call fcn.00486520
add esp, 8
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
mov eax, dword [0x584ce8]
mov dword [esp + 0x114], eax
jmp 0x486bfb
test ebx, ebx
mov dword [0x578ddc], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
push 0
jne 0x486bc9
mov eax, dword [0x582860]
lea edx, [esp + 0x74]
push edx
push eax
call fcn.00455370
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
mov eax, dword [0x584ce8]
mov dword [esp + 0x114], eax
jmp 0x486bfb
mov edx, dword [0x5808e0]
lea ecx, [esp + 0x74]
push ecx
push edx
call fcn.00455450
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
mov eax, dword [0x584ce8]
mov dword [esp + 0x114], eax
jmp 0x486bfb
mov ebx, dword [esp + 0x60]
cmp esi, 1
je 0x486c09
cmp esi, 2
jne 0x486d35
test ebx, ebx
jne 0x486c76
mov ecx, dword [0x585050]
push ecx
call fcn.00488dc0
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x486c2b
mov edx, dword [0x585054]
mov dword [ebx + 0x34], edx
mov eax, dword [0x585050]
mov ecx, 6
lea esi, [esp + 0x70]
lea edi, [esp + 0xfc]
test eax, eax
rep movsd dword es:[edi], dword [esi]
jne 0x486c4b
mov eax, dword [0x585054]
mov ecx, dword [0x582868]
push 1
lea edx, [esp + 0x100]
push ecx
push edx
push eax
call fcn.00435f90
add esp, 0x10
mov dword [esp + 0xc], eax
test ebx, ebx
je 0x486ca5
mov dword [ebx + 0x34], 0
jmp 0x486ca5
mov ecx, 6
lea esi, [esp + 0x70]
lea edi, [esp + 0xfc]
lea eax, [esp + 0xfc]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x5808e4]
push 0
push eax
push ecx
call fcn.00455450
add esp, 0xc
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp eax, 2
je 0x4881ab
test eax, eax
jne 0x488122
mov eax, dword [ebp + 0x10]
xor edx, edx
cmp eax, 1
lea eax, [esp + 0x70]
setne dl
mov dword [esp + 0x14], edx
lea ecx, [esp + 0xfc]
push eax
lea edx, [esp + 0x98]
push ecx
push edx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0x40000000
call fcn.00418e20
lea eax, [esp + 0xa0]
push eax
call fcn.00418eb0
fld qword [0x584ab0]
fmul qword [0x550fd8]
add esp, 0x10
fcompp
fnstsw ax
test ah, 1
jne 0x48720d
mov ecx, dword [esp + 0x114]
mov eax, dword [0x584ce8]
cmp ecx, eax
je 0x4881ab
jmp 0x48720d
cmp esi, 3
jne 0x486e29
cmp ebx, 1
jne 0x486d61
mov eax, dword [0x580988]
lea edx, [esp + 0xd0]
push edx
push 0
push eax
call fcn.00453b60
add esp, 0xc
mov dword [esp + 0xc], eax
jmp 0x486db9
mov ecx, dword [0x585050]
push ecx
call fcn.00488dc0
mov esi, eax
add esp, 4
test esi, esi
je 0x486d7f
mov edx, dword [0x585054]
mov dword [esi + 0x34], edx
mov eax, dword [0x585050]
test eax, eax
jne 0x486d8d
mov eax, dword [0x585054]
mov edx, dword [0x580988]
lea ecx, [esp + 0xd0]
push ecx
lea ecx, [esp + 0x74]
push edx
push ecx
push eax
call fcn.00436370
add esp, 0x10
mov dword [esp + 0xc], eax
test esi, esi
je 0x486db9
mov dword [esi + 0x34], 0
test eax, eax
jne 0x4881ab
fld qword [esp + 0x70]
mov eax, dword [0x56cbcc]
fchs
fstp qword [esp + 0x94]
fld qword [esp + 0x78]
fchs
fstp qword [esp + 0x9c]
cmp eax, 2
jne 0x486e11
fld qword [esp + 0xd0]
fchs
fstp qword [esp + 0x40]
cmp dword [ebp + 0x10], 3
jne 0x48719b
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0x3ff00000
jmp 0x4871ab
mov edx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
jmp 0x486df2
cmp esi, 6
jne 0x4870aa
cmp ebx, 1
jne 0x486e51
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x486e4a
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x486e51
mov ebx, 1
jmp 0x486e53
xor ebx, ebx
mov edi, dword [0x580ba0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x1a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
test ebx, ebx
rep movsb byte es:[edi], byte [esi]
jne 0x486eb2
mov edi, 0x57026c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x1a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x1a0]
push eax
push 8
push ecx
call fcn.00453b60
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
fld qword [esp + 0x18]
fcomp qword [0x550f20]
fnstsw ax
test ah, 0x41
jne 0x486e53
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
test ebx, ebx
jne 0x487065
mov ecx, dword [0x580ba0]
mov esi, dword [0x550c38]
mov dword [esp + 0x28], edx
push ecx
lea edx, [esp + 0x1a4]
push str._s_Y
push edx
mov dword [esp + 0x38], eax
call esi
lea eax, [esp + 0x34]
lea ecx, [esp + 0x1ac]
push eax
push 8
push ecx
call fcn.00453b60
add esp, 0x18
mov dword [esp + 0xc], eax
test eax, eax
jne 0x486e53
mov edi, dword [esp + 0x60]
fld qword [esp + 0x28]
fcomp qword [0x550f20]
fnstsw ax
test ah, 0x41
jne 0x487017
cmp edi, 1
jne 0x487083
mov edx, dword [esp + 0x28]
mov ecx, dword [0x580ba0]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x88], edx
push ecx
lea edx, [esp + 0x1a4]
push str._s_Z
push edx
mov dword [esp + 0x98], eax
call esi
lea eax, [esp + 0x94]
lea ecx, [esp + 0x1ac]
push eax
push 8
push ecx
call fcn.00453b60
add esp, 0x18
mov dword [esp + 0xc], eax
test eax, eax
jne 0x487017
fld qword [esp + 0x88]
fcomp qword [0x550f20]
fnstsw ax
test ah, 0x41
je 0x487083
mov edx, dword [esp + 0x28]
mov ecx, dword [0x580ba0]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x88], edx
push ecx
lea edx, [esp + 0x1a4]
push str._s_Z
push edx
mov dword [esp + 0x98], eax
call esi
lea eax, [esp + 0x94]
lea ecx, [esp + 0x1ac]
push eax
push 8
push ecx
call fcn.00453b60
add esp, 0x18
mov dword [esp + 0xc], eax
test eax, eax
je 0x486fb1
mov edx, dword [esp + 0x18]
mov ecx, dword [0x580ba0]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], edx
push ecx
lea edx, [esp + 0x1a4]
push str._s_Y
push edx
mov dword [esp + 0x38], eax
call esi
lea eax, [esp + 0x34]
lea ecx, [esp + 0x1ac]
push eax
push 8
push ecx
call fcn.00453b60
add esp, 0x18
mov dword [esp + 0xc], eax
test eax, eax
je 0x486f45
jmp 0x486e53
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
fld qword [esp + 0x70]
fchs
fstp qword [esp + 0x94]
fld qword [esp + 0x78]
fchs
fstp qword [esp + 0x9c]
mov dword [esp + 0x14], 0
jmp 0x4871fd
cmp esi, 5
je 0x486df2
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x70]
mov ecx, 6
lea esi, [esp + 0x70]
lea edi, [esp + 0xfc]
mov dword [0x583538], edx
mov edx, dword [0x582864]
mov dword [0x583530], eax
mov eax, dword [esp + 0x7c]
push 0x4b6810
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x78]
mov dword [0x578ddc], 1
mov dword [0x583534], ecx
lea ecx, [esp + 0x100]
push ecx
push edx
mov dword [0x58353c], eax
call fcn.00455370
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
mov dword [0x578ddc], 0
jne 0x4881ab
lea eax, [esp + 0x70]
lea ecx, [esp + 0xfc]
push eax
lea edx, [esp + 0x98]
push ecx
push edx
call fcn.00418e20
lea eax, [esp + 0xa0]
push eax
call fcn.00418eb0
fld qword [0x584ab0]
fmul qword [0x550fd8]
add esp, 0x10
fcompp
fnstsw ax
test ah, 1
je 0x4881ab
mov eax, dword [ebp + 0x10]
cmp eax, 5
je 0x486df2
cmp eax, 3
je 0x486dfc
cmp eax, 1
je 0x487191
cmp eax, 6
mov dword [esp + 0x14], 1
jne 0x4871fd
mov dword [esp + 0x14], 0
jmp 0x4871fd
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov edx, dword [0x58082c]
lea ecx, [esp + 0x50]
push ecx
push 0
push edx
call fcn.00453b60
add esp, 0xc
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4881ab
fld qword [esp + 0x50]
fcomp qword [0x550f30]
fnstsw ax
test ah, 1
jne 0x486df2
fld qword [esp + 0x50]
call fcn.00547c92
xor ecx, ecx
cmp eax, 1
setg cl
mov eax, ecx
test eax, eax
mov dword [esp + 0x14], eax
jne 0x48720d
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0x40000000
call fcn.004ac000
call fcn.00407b50
mov eax, dword [esp + 0x90]
test eax, eax
jne 0x487234
fld qword [esp + 0x50]
call fcn.00547c92
mov ebx, eax
dec ebx
mov dword [esp + 0x38], ebx
jmp 0x487247
mov eax, dword [0x57ace4]
imul eax, dword [0x57ace0]
dec eax
mov dword [esp + 0x38], eax
mov ebx, eax
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x14]
test eax, eax
mov dword [esp + 0x118], ebx
je 0x48726d
test esi, esi
je 0x48726d
mov edx, dword [0x585050]
push edx
call fcn.0044bc60
add esp, 4
mov edi, dword [esp + 0x34]
cmp edi, 2
jl 0x487285
push 1
push 0x585054
call fcn.004d23f0
add esp, 8
mov eax, dword [esp + 0x30]
test eax, eax
je 0x48729c
test esi, esi
je 0x48729c
mov dword [esp + 0xbc], 1
cmp edi, 1
jne 0x4872a6
call fcn.00488600
mov eax, dword [esp + 0x60]
cmp eax, 1
jne 0x487512
mov edi, dword [ebp + 0x10]
cmp edi, 4
jne 0x4872fe
mov eax, dword [esp + 0x3c]
mov ecx, dword [0x585050]
push esi
push eax
push ecx
call fcn.004ab3a0
mov edx, dword [esp + 0x48]
mov eax, dword [0x585054]
push esi
push edx
push eax
call fcn.004ab3a0
mov ecx, dword [esp + 0x54]
push esi
push ecx
call fcn.00505630
mov edx, dword [esp + 0x5c]
push esi
push 0
push edx
call fcn.004bdeb0
add esp, 0x2c
jmp 0x4880e2
cmp edi, 6
jne 0x4873c0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x124], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x128], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x12c], eax
mov dword [esp + 0x130], ecx
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x70]
mov dword [esp + 0x134], edx
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [0x585050]
push ecx
push edx
push eax
call fcn.004aaf00
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x80]
push ecx
mov ecx, dword [0x585054]
push edx
push eax
push ecx
call fcn.004aaf00
lea edx, [esp + 0x90]
lea eax, [esp + 0x140]
push edx
push eax
call fcn.00505740
lea ecx, [esp + 0x98]
push 0
lea edx, [esp + 0x14c]
push ecx
push edx
call fcn.004bda30
add esp, 0x34
call fcn.00449960
jmp 0x4876a0
cmp edi, 1
jne 0x487419
mov ecx, dword [0x585050]
lea eax, [esp + 0x94]
push eax
push ecx
call fcn.004ab130
mov eax, dword [0x585054]
lea edx, [esp + 0x9c]
push edx
push eax
call fcn.004ab130
lea ecx, [esp + 0xa4]
push edi
push ecx
call fcn.005058c0
push edi
push 0
lea edx, [esp + 0xb4]
push 0
push edx
call fcn.004bdca0
add esp, 0x28
call fcn.00449960
jmp 0x4876a0
cmp edi, 2
je 0x4874c0
cmp edi, 5
je 0x4874c0
cmp edi, 3
jne 0x48769b
mov edi, dword [esp + 0x44]
mov edx, dword [0x585050]
neg esi
sbb esi, esi
lea eax, [esp + 0xfc]
and esi, ebx
mov ebx, dword [esp + 0x40]
push esi
lea ecx, [esp + 0x74]
push eax
push ecx
push edi
push ebx
push edx
call fcn.004aabd0
mov edx, dword [0x585054]
lea eax, [esp + 0x114]
push esi
lea ecx, [esp + 0x8c]
push eax
push ecx
push edi
push ebx
push edx
call fcn.004aabd0
lea eax, [esp + 0x12c]
push esi
lea ecx, [esp + 0xa4]
push eax
push ecx
push edi
push ebx
call fcn.005059f0
add esp, 0x44
lea edx, [esp + 0xfc]
lea eax, [esp + 0x70]
push esi
push 0
push edx
push eax
push edi
push ebx
call fcn.004bd7c0
add esp, 0x18
call fcn.00449960
mov ebx, dword [esp + 0x38]
jmp 0x4876a0
mov edx, dword [0x585050]
lea ecx, [esp + 0x94]
push ebx
push ecx
push edx
call fcn.004ab2c0
mov ecx, dword [0x585054]
lea eax, [esp + 0xa0]
push ebx
push eax
push ecx
call fcn.004ab2c0
lea edx, [esp + 0xac]
push ebx
push edx
call fcn.00505940
push ebx
push 0
lea eax, [esp + 0xbc]
push 0
push eax
call fcn.004bde40
add esp, 0x30
jmp 0x48769b
test eax, eax
jne 0x487698
mov eax, dword [esp + 0xb0]
mov edi, dword [ebp + 0x10]
test eax, eax
je 0x48769b
cmp edi, 4
jne 0x4875c2
mov ecx, dword [esp + 0x148]
mov edx, dword [esp + 0x14c]
mov eax, dword [esp + 0x150]
mov dword [esp + 0x180], ecx
mov ecx, dword [esp + 0x154]
mov dword [esp + 0x184], edx
mov dword [esp + 0x188], eax
lea edx, [esp + 0x148]
mov dword [esp + 0x18c], ecx
lea eax, [esp + 0x158]
push edx
lea ecx, [esp + 0x194]
push eax
push ecx
call fcn.00418960
lea edx, [esp + 0x19c]
push edx
call fcn.004189e0
lea eax, [esp + 0x190]
push eax
fstp st(0)
call fcn.00448bb0
add esp, 0x14
test eax, eax
je 0x4881ab
push esi
push 1
push eax
call fcn.004bdeb0
add esp, 0xc
jmp 0x4876da
cmp edi, 6
jne 0x487628
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x168], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x16c], edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x174], ecx
mov dword [esp + 0x178], edx
lea ecx, [esp + 0x70]
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x8c]
push 1
lea edx, [esp + 0x16c]
push ecx
push edx
mov dword [esp + 0x188], eax
call fcn.004bda30
add esp, 0xc
jmp 0x4876a0
cmp edi, 1
jne 0x487647
mov eax, dword [0x584ce8]
push edi
push eax
lea ecx, [esp + 0x9c]
push edi
push ecx
call fcn.004bdca0
add esp, 0x10
jmp 0x4876a0
cmp edi, 2
je 0x48767d
cmp edi, 5
je 0x48767d
cmp edi, 3
jne 0x48769b
neg esi
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x70]
sbb esi, esi
lea eax, [esp + 0x70]
and esi, ebx
push esi
push 1
push edx
mov edx, dword [esp + 0x4c]
push eax
push ecx
push edx
call fcn.004bd7c0
add esp, 0x18
jmp 0x4876a0
mov eax, dword [0x584ce8]
push ebx
push eax
lea ecx, [esp + 0x9c]
push 1
push ecx
call fcn.004bde40
add esp, 0x10
jmp 0x48769b
mov edi, dword [ebp + 0x10]
cmp edi, 4
je 0x4876ce
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov ecx, 6
lea esi, [esp + 0x94]
lea edi, [esp + 0xe4]
mov dword [esp + 0xd8], edx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4880e2
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x4876ee
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4880e2
mov ecx, ebx
dec ebx
test ecx, ecx
mov dword [esp + 0x38], ebx
je 0x4880e2
jmp 0x487703
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x90]
test eax, eax
je 0x487724
lea edx, [esp + 0xe4]
push edx
push ebx
push 0x57ace0
call fcn.00488590
add esp, 0xc
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x30]
neg eax
sbb eax, eax
xor ecx, ecx
add eax, 2
test ebx, ebx
setne cl
inc ecx
mov dword [esp + 0x10], eax
cmp eax, ecx
jg 0x488099
mov eax, dword [esp + 0x10]
cmp eax, 1
jne 0x4877e8
mov edi, dword [0x585050]
xor eax, eax
mov dword [esp + 0xb4], eax
cmp edi, eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xac], eax
je 0x488013
mov eax, dword [edi]
mov edx, dword [edi + 0x34]
test ah, 2
mov dword [esp + 0xc4], edx
je 0x487fe4
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x487fe4
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x487831
mov esi, 1
push edi
mov dword [0x584fa8], esi
call fcn.0046e160
push edi
call fcn.0048cbe0
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, esi
jne 0x4877d7
push edi
call fcn.0048ec40
add esp, 4
mov dword [0x584fa8], 0
mov esi, edi
jmp 0x4879aa
mov edi, dword [0x585054]
cmp eax, 2
jne 0x48775a
mov eax, dword [ebp + 0x10]
cmp eax, 2
je 0x487813
cmp eax, 5
je 0x487813
mov eax, dword [esp + 0x90]
test eax, eax
je 0x48775a
mov ecx, dword [esp + 0x34]
xor eax, eax
cmp ecx, eax
je 0x48775a
mov dword [esp + 0xb4], 1
jmp 0x487763
mov ebx, dword [esp + 0xb4]
test ebx, ebx
je 0x487916
mov ecx, dword [esp + 0x34]
cmp ecx, 2
jl 0x487854
test eax, 0x20000
je 0x487916
cmp ecx, 1
jne 0x48788c
push edi
call fcn.00463830
add esp, 4
test eax, eax
jne 0x48788c
push edi
call fcn.004889e0
mov esi, eax
add esp, 4
test esi, esi
je 0x4881ab
lea eax, [esp + 0xe4]
push eax
push esi
call fcn.004a9e20
add esp, 8
jmp 0x4878c5
test dword [edi], 0x30000
jne 0x48789f
push 1
push edi
call fcn.004ac0f0
add esp, 8
lea ecx, [esp + 0xe4]
push ecx
push edi
call fcn.00417090
mov esi, eax
add esp, 8
test esi, esi
je 0x4881ab
cmp dword [esp + 0x34], 1
jne 0x487989
mov ecx, dword [esp + 0xac]
xor eax, eax
mov ax, word [edi + 0x48]
cmp eax, ecx
je 0x4878f3
mov edx, dword [0x585054]
mov dword [esp + 0xac], eax
push edx
call fcn.00417430
add esp, 4
mov dword [esp + 0xc0], eax
mov ax, word [esp + 0xc0]
mov edx, dword [esi + 0x40]
mov word [esi + 0x48], ax
mov eax, 0xffffffdf
and edx, eax
mov dword [esi + 0x40], edx
mov ecx, dword [edi + 0x40]
and ecx, eax
mov dword [edi + 0x40], ecx
jmp 0x487989
push edi
call fcn.004889e0
mov esi, eax
add esp, 4
test esi, esi
je 0x4881ab
mov ax, word [edi + 0x48]
test ax, ax
je 0x487978
mov ecx, dword [esp + 0xac]
and eax, 0xffff
cmp eax, ecx
je 0x48796c
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x10]
cmp eax, 1
mov eax, dword [0x585050]
je 0x48795c
mov eax, dword [0x585054]
push eax
call fcn.00417430
add esp, 4
mov dword [esp + 0xc0], eax
mov cx, word [esp + 0xc0]
mov word [esi + 0x48], cx
cmp dword [esp + 0x10], 2
jne 0x487989
push esi
push edi
call fcn.0049b370
add esp, 8
cmp dword [edi + 0x38], 0x10
jne 0x487996
mov dword [esi + 0x38], 1
cmp dword [esp + 0x10], 2
jne 0x4879aa
test ebx, ebx
jne 0x4879aa
push esi
call fcn.004175f0
add esp, 4
mov eax, dword [esi]
mov edx, dword [esp + 0x14]
and ah, 0xfd
neg edx
sbb edx, edx
mov dword [esi], eax
and edx, 2
inc edx
push edx
push esi
call fcn.004ac0f0
mov ebx, dword [ebp + 0x10]
add esp, 8
cmp ebx, 4
jne 0x4879e5
lea eax, [esp + 0x148]
push eax
push esi
call fcn.004a9ea0
add esp, 8
jmp 0x487ad5
test dword [esi], 0x20000
je 0x487a30
cmp ebx, 1
jne 0x487a30
lea ecx, [esp + 0xe4]
lea edx, [esi + 0x90]
push ecx
push edx
call fcn.00418920
lea eax, [esp + 0xec]
lea ecx, [esi + 0x14]
push eax
push ecx
call fcn.00418920
lea edx, [esp + 0xf4]
lea eax, [esi + 0x24]
push edx
push eax
call fcn.00418920
add esp, 0x18
jmp 0x487ad5
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x487a4a
cmp dword [esp + 0x34], 2
jl 0x487a75
test dword [edi], 0x20000
jne 0x487a75
lea ecx, [esp + 0xe4]
push ecx
push esi
call fcn.004a9e20
mov eax, dword [esp + 0x18]
add esp, 8
cmp eax, 2
jne 0x487a75
lea edx, [esp + 0xe4]
push edx
push esi
call fcn.0049b420
add esp, 8
cmp ebx, 3
jne 0x487b1e
mov ebx, dword [esp + 0xdc]
mov eax, dword [esp + 0xd8]
push 0
push ebx
push eax
push esi
call fcn.004a9cd0
lea ecx, [esp + 0x80]
push ecx
push esi
call fcn.004a9e20
mov eax, dword [esp + 0x28]
add esp, 0x18
cmp eax, 2
jne 0x487ad2
mov edx, dword [esp + 0xd8]
push 0
push ebx
push edx
push esi
call fcn.0049b460
lea eax, [esp + 0x80]
push eax
push esi
call fcn.0049b420
add esp, 0x18
mov ebx, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x487bb7
cmp dword [esp + 0x10], 2
jne 0x487bb7
test dword [esi], 0x10000
je 0x487bb7
cmp ebx, 1
jne 0x487baa
mov ecx, dword [0x585054]
lea eax, [esp + 0xe4]
push eax
push ecx
push esi
call fcn.00417360
add esp, 0xc
jmp 0x487bb7
cmp ebx, 6
jne 0x487ad5
fld qword [esp + 0x18]
fsub qword [esp + 0x28]
fabs
fcomp qword [0x550fc8]
fnstsw ax
test ah, 0x41
je 0x487b4f
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
push edx
push esi
call fcn.004aa070
add esp, 0xc
jmp 0x487b97
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x13c], ecx
lea ecx, [esp + 0x138]
mov dword [esp + 0x138], eax
mov eax, dword [esp + 0x2c]
push ecx
push esi
mov dword [esp + 0x148], edx
mov dword [esp + 0x14c], eax
call fcn.004aa120
add esp, 8
test eax, eax
jne 0x4881ab
mov ebx, dword [ebp + 0x10]
lea edx, [esp + 0x70]
push edx
push esi
call fcn.004a9e20
add esp, 8
jmp 0x487ad5
mov edx, dword [esi + 0xc]
push esi
push edx
call fcn.004171b0
add esp, 8
mov eax, dword [0x571920]
mov dword [esp + 0x64], 1
cmp eax, 0x54
je 0x487d1c
mov eax, dword [esp + 0x14]
test eax, eax
je 0x487d1c
mov eax, dword [edi]
test ah, 1
je 0x487d1c
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x487d1c
mov eax, dword [ebp + 0x10]
cmp eax, 3
je 0x487c06
cmp eax, 4
je 0x487c06
cmp eax, 5
jne 0x487d1c
mov eax, dword [esp + 0xb4]
test eax, eax
jne 0x487d1c
cmp dword [ebp + 0x10], 4
jne 0x487c5c
mov eax, dword [0x584ab4]
mov edx, dword [esi + 0x10]
mov ecx, dword [0x584ab0]
push eax
mov eax, dword [edi + 0x10]
add edx, 0x20
push ecx
add eax, 0x20
push edx
push eax
call fcn.00418a10
add esp, 0x10
test eax, eax
je 0x487d22
push esi
mov dword [esp + 0x68], 0
call fcn.00488fe0
add esp, 4
jmp 0x487d65
mov ecx, dword [0x584ab4]
mov eax, dword [esi + 0xc]
mov edx, dword [0x584ab0]
push ecx
mov ecx, dword [edi + 0x10]
add eax, 0x10
push edx
add ecx, 0x20
push eax
push ecx
call fcn.00418a10
add esp, 0x10
test eax, eax
je 0x487d1c
mov edx, dword [esp + 0x118]
mov eax, dword [esp + 0x38]
dec edx
cmp eax, edx
je 0x487cad
push esi
call fcn.00489500
push edi
mov ebx, eax
call fcn.00489500
add esp, 8
cmp eax, ebx
jle 0x487d1c
mov ecx, dword [edi]
push edi
and ch, 0xfd
mov dword [edi], ecx
call fcn.0048cbe0
mov edx, dword [esp + 0x28]
push esi
or edx, eax
mov dword [esp + 0x2c], edx
call fcn.004888a0
push 1
push edi
call fcn.004ac0f0
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
lea eax, [esp + 0x80]
inc ecx
push eax
mov eax, dword [esp + 0x54]
push ecx
push edx
mov edx, dword [ebp + 0x10]
lea ecx, [esp + 0xb0]
push eax
push ecx
push edx
push edi
call fcn.004aa420
add esp, 0x2c
test eax, eax
jne 0x4881ab
push edi
call fcn.0044b9b0
mov edi, dword [esp + 0xc8]
add esp, 4
jmp 0x487ff3
cmp dword [ebp + 0x10], 4
jne 0x487d4c
mov eax, dword [esi + 0x40]
and eax, 0x1f
cmp al, 1
jne 0x487d65
test dword [esi], 0x2030000
jne 0x487d65
push esi
call fcn.00463830
add esp, 4
test eax, eax
je 0x487d65
push esi
call fcn.00488fe0
add esp, 4
jmp 0x487d65
mov eax, dword [ebp + 0x10]
cmp eax, 1
je 0x487d59
cmp eax, 2
jne 0x487d65
mov ecx, dword [0x584ce8]
mov dword [esi + 0xa4], ecx
push esi
call fcn.00438390
add esp, 4
call fcn.004a58c0
mov ebx, dword [esp + 0x14]
push esi
test ebx, ebx
je 0x487d90
call fcn.0048cbe0
mov ecx, dword [esp + 0x28]
add esp, 4
or ecx, eax
mov dword [esp + 0x24], ecx
jmp 0x487d98
call fcn.0048cbe0
add esp, 4
call fcn.004a5900
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x487dad
test ebx, ebx
jne 0x487e51
push esi
call fcn.0046e160
add esp, 4
test ebx, ebx
je 0x487e1b
mov eax, dword [esp + 0x64]
test eax, eax
je 0x487e51
mov eax, dword [esp + 0xe0]
test eax, eax
jne 0x487ded
mov eax, dword [esp + 0x10]
cmp eax, 1
mov eax, dword [0x585050]
je 0x487de4
mov eax, dword [0x585054]
push eax
call fcn.00488dc0
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x34], esi
cmp ecx, 1
jne 0x487e02
push eax
call fcn.0048ec40
add esp, 4
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xe0], esi
test eax, eax
jne 0x487e1b
mov dword [esp + 0xcc], esi
mov ebx, dword [ebp + 0x10]
cmp dword [esp + 0x10], 1
jne 0x487eae
mov eax, dword [edi + 0xac]
test eax, eax
je 0x487eae
cmp dword [eax + 0x28], 4
jne 0x487eae
cmp ebx, 1
jne 0x487e7a
lea edx, [esp + 0x94]
push edx
push edi
call fcn.0042bd50
add esp, 8
jmp 0x487eae
push 1
push edi
call fcn.004ac0f0
mov ebx, dword [ebp + 0x10]
add esp, 8
cmp ebx, 4
push esi
push edi
jne 0x487e70
call fcn.00489610
add esp, 8
jmp 0x487e1e
call fcn.00489520
add esp, 8
jmp 0x487e1e
mov eax, dword [esp + 0x64]
test eax, eax
je 0x487ea5
cmp ebx, 2
je 0x487e91
cmp ebx, 5
je 0x487e91
cmp ebx, 7
jne 0x487ea5
lea eax, [esp + 0xe4]
push eax
push esi
push edi
call fcn.0042be20
add esp, 0xc
jmp 0x487eae
push edi
call fcn.0042bcb0
add esp, 4
mov eax, dword [esp + 0x14]
test eax, eax
je 0x487ec2
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x487fdc
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
test eax, eax
je 0x487fdc
cmp dword [esp + 0x10], 1
jne 0x487fdc
push edi
push eax
call fcn.0044f810
mov esi, eax
add esp, 8
test esi, esi
je 0x487fdc
mov eax, dword [esp + 0x14]
xor edi, edi
cmp eax, edi
jne 0x487fba
cmp ebx, 1
je 0x487fa4
cmp ebx, 5
je 0x487fa4
cmp ebx, 3
jne 0x487f33
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
lea edx, [esp + 0x70]
push edx
mov edx, dword [esi + 4]
push eax
push ecx
push edx
call fcn.0044f930
add esp, 0x10
jmp 0x487fdc
cmp ebx, 4
jne 0x487f5b
cmp dword [esp + 0x3c], edi
jne 0x487fdc
mov ecx, dword [esi + 4]
lea eax, [esp + 0x148]
push eax
push ecx
call fcn.0044f9f0
add esp, 8
jmp 0x487fdc
cmp ebx, 6
jne 0x487fdc
fld qword [esp + 0x18]
fcomp qword [esp + 0x28]
fnstsw ax
test ah, 0x40
je 0x487f8c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x70]
push edx
mov edx, dword [esi + 4]
push eax
push ecx
push edx
call fcn.0044fb50
add esp, 0x10
jmp 0x487fdc
mov eax, dword [ebp + 8]
push eax
push esi
call fcn.0044f750
mov eax, dword [0x578d14]
add esp, 8
cmp esi, eax
jne 0x487fdc
jmp 0x487fd6
mov edx, dword [esi + 4]
lea ecx, [esp + 0x94]
push ecx
push edx
call fcn.0044f9c0
add esp, 8
jmp 0x487fdc
cmp dword [esp + 0x64], edi
jne 0x487fdc
mov eax, dword [ebp + 8]
push eax
push esi
call fcn.0044f750
mov eax, dword [0x578d14]
add esp, 8
cmp esi, eax
jne 0x487fdc
mov dword [0x578d14], edi
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x488004
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0xc4]
test eax, eax
jne 0x488013
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x487780
jmp 0x488013
mov ecx, dword [0x5832c8]
push ecx
call fcn.0054715c
add esp, 4
mov esi, dword [esp + 0x34]
cmp esi, 2
jl 0x488071
cmp dword [esp + 0x10], 2
jne 0x488071
mov ecx, dword [esp + 0xb8]
xor edx, edx
cmp esi, 3
lea eax, [esp + 0xe4]
setne dl
dec edx
and edx, ecx
mov ecx, dword [esp + 0xcc]
push edx
push 0
push eax
push ecx
call fcn.004173b0
add esp, 0x10
cmp esi, 3
jne 0x488071
push 1
push 0x585050
call fcn.00481cf0
add esp, 8
call fcn.00481ce0
inc eax
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4880e2
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
inc eax
xor edx, edx
test edi, edi
setne dl
inc edx
mov dword [esp + 0x10], eax
cmp eax, edx
jle 0x487747
mov edi, dword [ebp + 0x10]
cmp edi, 5
jne 0x4880b8
lea eax, [esp + 0x94]
lea ecx, [esp + 0xe4]
push eax
push ecx
call fcn.00418920
add esp, 8
jmp 0x4880cf
cmp edi, 3
jne 0x4880cf
fld qword [esp + 0xd8]
fadd qword [esp + 0x40]
fstp qword [esp + 0xd8]
mov eax, dword [esp + 0x38]
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x38], eax
jne 0x4876ff
mov eax, dword [esp + 0xbc]
test eax, eax
je 0x488101
call fcn.004823b0
push 1
push 0x585050
call fcn.00481cf0
add esp, 8
mov eax, dword [esp + 0x30]
test eax, eax
je 0x48810e
call fcn.004a0ba0
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x488122
mov esi, dword [ebp + 0x10]
cmp esi, 2
je 0x486bf7
call fcn.004b25b0
test eax, eax
je 0x48816a
mov eax, dword [esp + 0x14]
xor esi, esi
cmp eax, esi
je 0x48814b
mov eax, dword [esp + 0x5c]
push eax
call fcn.00438390
mov ecx, dword [esp + 0x6c]
push ecx
call fcn.00438390
jmp 0x48815f
mov edx, dword [esp + 0x5c]
push edx
call fcn.00438390
mov eax, dword [esp + 0x6c]
push eax
call fcn.00438390
add esp, 8
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], esi
push 1
push 0
call fcn.00504300
push 1
push 0
call fcn.004bce20
mov ecx, dword [0x585050]
push 1
push 0
push ecx
call fcn.004a63d0
mov edx, dword [0x585054]
push 1
push 0
push edx
call fcn.004a63d0
mov eax, dword [esp + 0x4c]
add esp, 0x28
test eax, eax
je 0x4867ba
call fcn.004b25b0
test eax, eax
je 0x4881d5
mov eax, dword [esp + 0x5c]
push eax
call fcn.00438390
mov ecx, dword [esp + 0x6c]
push ecx
call fcn.00438390
add esp, 8
xor eax, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x68], eax
push 1
push 0
call fcn.004bce20
push 1
push 0
call fcn.00504300
mov edx, dword [0x585050]
push 1
push 0
push edx
call fcn.004a63d0
mov eax, dword [0x585054]
push 1
push 0
push eax
call fcn.004a63d0
mov eax, dword [esp + 0xe4]
add esp, 0x28
test eax, eax
je 0x48822a
mov eax, dword [0x584b84]
test eax, eax
jne 0x488225
mov eax, dword [esp + 0x24]
test eax, eax
je 0x48822a
call fcn.004823b0
call fcn.004b2410
mov eax, dword [esp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret