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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff58
mov ebx, edx
mov dword [esp], eax
mov edi, 1
jmp 0x5c6d5b
inc edi
mov ecx, edi
mov eax, 1
shl eax, cl
mov edx, dword [ebx + 0xcd520]
add edx, edx
cmp eax, edx
jl 0x5c6d5a
mov ecx, edi
dec ecx
mov eax, 1
shl eax, cl
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x8ca7c]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x40]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], 0
jne 0x5c6d9d
mov dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
cmp dword [ebx + 0x8ca18], 0
jne 0x5c6fe2
cmp dword [ebx + 0x8cb48], 1
jne 0x5c6dc7
mov eax, dword [ebx + 0xcd51c]
mov dword [esp + 0x54], eax
jmp 0x5c6dd1
mov eax, dword [esp + 0x48]
add eax, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x1c]
add eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x6c], ebx
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 0x8caa4]
mov edx, dword [esp + 0x6c]
sub eax, dword [edx + 0x8caa8]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cdq
idiv ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp]
cmp dword [eax + 0x294], 0
jne 0x5c6e21
cmp dword [eax + 0x290], 0
je 0x5c6e5d
mov eax, dword [0x8e6b78]
mov eax, dword [eax]
call eax
mov edx, dword [esp]
sub eax, dword [edx + 0x290]
mov dword [esp + 0x30], eax
mov eax, dword [0x8e6d78]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebx + 0x8ca7c]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x3c]
imul dword [esp + 0x38]
cdq
call fcn.00409410
sub dword [esp + 0xc], eax
mov eax, dword [esp + 0x54]
add eax, eax
add dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x54]
jge 0x5c6e79
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
imul dword [esp + 0x1c]
mov edx, dword [ebx + 0xccb4c]
sub edx, eax
test edx, edx
jge 0x5c6eb9
mov eax, dword [esp + 0xc]
imul dword [esp + 0x1c]
mov edx, dword [ebx + 0xccb4c]
sub edx, eax
and edx, 0x8001ffff
jns 0x5c6ead
dec edx
or edx, 0xfffe0000
inc edx
add edx, 0x20000
mov dword [esp + 0x70], edx
jmp 0x5c6edd
mov eax, dword [esp + 0xc]
imul dword [esp + 0x1c]
mov edx, dword [ebx + 0xccb4c]
sub edx, eax
and edx, 0x8001ffff
jns 0x5c6ed9
dec edx
or edx, 0xfffe0000
inc edx
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0x70]
mov dword [esp + 4], eax
mov ebp, dword [esp + 4]
cmp dword [ebx + 0x8cb48], 1
jne 0x5c6fd6
mov dword [esp + 0x20], 0x80000000
xor esi, esi
lea eax, [ebp + 0x20000]
sub eax, esi
and eax, 0x8001ffff
jns 0x5c6f16
dec eax
or eax, 0xfffe0000
inc eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
movsx eax, word [ebx + eax*2 + 0x8cb4c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x1c]
add eax, eax
add eax, eax
add eax, dword [esp + 0x34]
and eax, 0x8001ffff
jns 0x5c6f44
dec eax
or eax, 0xfffe0000
inc eax
movsx eax, word [ebx + eax*2 + 0x8cb4c]
mov edx, dword [esp + 0x1c]
lea edx, [edx + edx*4]
add edx, dword [esp + 0x34]
and edx, 0x8001ffff
jns 0x5c6f67
dec edx
or edx, 0xfffe0000
inc edx
movsx edx, word [ebx + edx*2 + 0x8cb4c]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x1c]
lea edx, [edx + edx*8]
add edx, dword [esp + 0x34]
and edx, 0x8001ffff
jns 0x5c6f8e
dec edx
or edx, 0xfffe0000
inc edx
movsx edx, word [ebx + edx*2 + 0x8cb4c]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x38]
sub edx, dword [esp + 0x40]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x20]
cmp edx, dword [esp + 0x44]
jge 0x5c6fc6
xor eax, dword [esp + 0x3c]
jge 0x5c6fc6
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 4], eax
add esi, dword [esp + 0x1c]
cmp esi, 0x3e8
jl 0x5c6f00
mov eax, dword [esp + 4]
mov dword [ebx + 0xccb50], eax
jmp 0x5c6fec
mov eax, dword [ebx + 0xccb50]
mov dword [esp + 4], eax
push 0
push 0
push 0
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x2e0]
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x10]
call dword [eax + 0x320]
add esp, 0x10
mov dword [esp + 0x28], eax
cmp dword [ebx + 0x8cb48], 1
jne 0x5c7230
mov eax, dword [ebx + 0xcd528]
push eax
mov eax, dword [ebx + 0xcd51c]
push eax
mov eax, dword [ebx + 0xcd520]
push eax
mov eax, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x2e0]
mov ecx, dword [ebx + 0xcd524]
mov eax, dword [esp + 0x10]
call fcn.005c59f4
push 0xff
push 0xff
push 0xff
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x2e0]
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x10]
call dword [eax + 0x320]
add esp, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0xcd520]
cdq
idiv dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
lea eax, [eax + eax*8]
mov ecx, 0x14
cdq
idiv ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
dec eax
test eax, eax
jl 0x5c7173
inc eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x18], 0
mov esi, dword [esp + 4]
add esi, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
imul dword [esp + 0x20]
add eax, dword [ebx + 0xcd528]
mov edx, dword [esp + 0x20]
sar edx, 1
jns 0x5c70dc
adc edx, 0
add eax, edx
mov dword [esp + 8], eax
mov eax, dword [ebx + 0xcd51c]
dec eax
test eax, eax
jl 0x5c7165
inc eax
mov dword [esp + 0x64], eax
xor ebp, ebp
movsx eax, word [ebx + esi*2 + 0x8cb4c]
imul dword [esp + 0x24]
test eax, eax
jge 0x5c7111
mov edi, eax
shr edi, 0xf
or edi, 0xfffe0000
jmp 0x5c7116
mov edi, eax
shr edi, 0xf
test edi, edi
jge 0x5c7124
neg edi
mov eax, dword [esp + 8]
sub eax, edi
jmp 0x5c7128
mov eax, dword [esp + 8]
push eax
push 1
push edi
mov eax, dword [esp + 0x38]
push eax
mov ecx, dword [ebx + 0xcd524]
add ecx, ebp
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x2e0]
mov eax, dword [esp + 0x10]
call fcn.005c59f4
add esi, dword [esp + 0x1c]
cmp esi, 0x20000
jl 0x5c715e
sub esi, 0x20000
inc ebp
dec dword [esp + 0x64]
jne 0x5c70f4
inc dword [esp + 0x18]
dec dword [esp + 0x60]
jne 0x5c70bb
push 0xff
push 0xff
push 0xff
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x2e0]
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x10]
call dword [eax + 0x320]
add esp, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
dec eax
test eax, eax
jle 0x5c71f7
mov dword [esp + 0x60], eax
mov dword [esp + 0x18], 1
mov edi, dword [esp + 0x18]
imul edi, dword [esp + 0x20]
add edi, dword [ebx + 0xcd528]
push edi
mov eax, dword [ebx + 0xcd51c]
push eax
push 1
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x2e0]
mov ecx, dword [ebx + 0xcd524]
mov eax, dword [esp + 0x10]
call fcn.005c59f4
inc dword [esp + 0x18]
dec dword [esp + 0x60]
jne 0x5c71b6
mov eax, dword [ebx + 0xcd520]
push eax
mov eax, dword [ebx + 0xcd51c]
push eax
mov eax, dword [ebx + 0xcd528]
push eax
mov eax, dword [ebx + 0xcd524]
push eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2e0]
push eax
mov eax, dword [esp + 0x14]
call dword [eax + 0x318]
add esp, 0x14
jmp 0x5c75d6
cmp dword [esp + 0x14], 2
jle 0x5c723f
mov dword [esp + 0x14], 2
cmp edi, dword [ebx + 0xccb58]
je 0x5c72a1
mov eax, dword [ebx + 0xccb54]
push eax
mov eax, dword [0x8e6938]
mov eax, dword [eax]
call eax
pop ecx
mov eax, dword [ebx + 0xccb5c]
push eax
mov eax, dword [0x8e6cd0]
mov eax, dword [eax]
call eax
pop ecx
push 0
push edi
mov eax, dword [0x8e6f1c]
mov eax, dword [eax]
call eax
add esp, 8
mov dword [ebx + 0xccb54], eax
mov dword [ebx + 0xccb58], edi
mov eax, dword [esp + 0x48]
add eax, eax
add eax, eax
add eax, eax
add eax, eax
push eax
mov eax, dword [0x8e6dd0]
mov eax, dword [eax]
call eax
pop ecx
mov dword [ebx + 0xccb5c], eax
mov eax, dword [esp + 0x14]
dec eax
test eax, eax
jl 0x5c737a
inc eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x18], 0
lea edi, [esp + 0x4c]
mov eax, dword [ebx + 0xccb5c]
mov dword [edi], eax
mov eax, dword [esp + 0x48]
add eax, eax
imul dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [edi], eax
mov esi, dword [esp + 4]
add esi, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
add eax, eax
dec eax
test eax, eax
jl 0x5c7353
inc eax
mov dword [esp + 0x64], eax
xor ebp, ebp
fild dword [esp + 0x48]
fdivr dword [0x5c75e4]
mov eax, ebp
sub eax, dword [esp + 0x48]
mov dword [esp + 0xa4], eax
fild dword [esp + 0xa4]
fmulp st(1)
fstp qword [esp + 0x58]
wait
mov eax, dword [edi]
mov edx, ebp
add edx, edx
add edx, edx
add eax, edx
fld qword [esp + 0x58]
fmul qword [esp + 0x58]
fsubr dword [0x5c75e4]
fild word [ebx + esi*2 + 0x8cb4c]
fmulp st(1)
fstp dword [eax]
wait
add esi, dword [esp + 0x1c]
cmp esi, 0x20000
jl 0x5c734c
sub esi, 0x20000
inc ebp
dec dword [esp + 0x64]
jne 0x5c72f1
mov eax, dword [edi]
push eax
mov eax, dword [ebx + 0xccb54]
push eax
mov eax, dword [0x8e6c2c]
mov eax, dword [eax]
call eax
add esp, 8
inc dword [esp + 0x18]
add edi, 4
dec dword [esp + 0x60]
jne 0x5c72bf
mov eax, dword [ebx + 0xcd520]
dec eax
test eax, eax
jl 0x5c7587
inc eax
mov dword [esp + 0x60], eax
xor edi, edi
fild dword [esp + 0x48]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00404878
fdivr dword [0x5c75e4]
fstp qword [esp + 0x58]
wait
mov eax, dword [esp + 0x4c]
mov edx, eax
mov ecx, edi
add ecx, ecx
mov esi, ecx
add esi, esi
add esi, esi
add edx, esi
mov dword [esp + 0x74], edx
mov edx, eax
add edx, esi
mov dword [esp + 0x78], edx
mov edx, eax
mov ecx, edi
add ecx, ecx
inc ecx
mov ebp, ecx
add ebp, ebp
add ebp, ebp
add edx, ebp
mov dword [esp + 0x7c], edx
add eax, ebp
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x74]
fld dword [eax]
mov eax, dword [esp + 0x78]
fmul dword [eax]
mov eax, dword [esp + 0x7c]
fld dword [eax]
mov eax, dword [esp + 0x80]
fmul dword [eax]
faddp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00404878
fmul qword [esp + 0x58]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00404878
call fcn.00404888
mov dword [esp + 0x38], eax
cmp dword [esp + 0x14], 2
jne 0x5c74fb
mov eax, dword [esp + 0x50]
mov dword [esp + 0x84], eax
add dword [esp + 0x84], esi
mov eax, dword [esp + 0x84]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x8c], eax
add dword [esp + 0x8c], esi
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x94], eax
add dword [esp + 0x94], ebp
mov eax, dword [esp + 0x94]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x9c], eax
add dword [esp + 0x9c], ebp
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x88]
fld dword [eax]
mov eax, dword [esp + 0x90]
fmul dword [eax]
mov eax, dword [esp + 0x98]
fld dword [eax]
mov eax, dword [esp + 0xa0]
fmul dword [eax]
faddp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00404878
fmul qword [esp + 0x58]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00404878
call fcn.00404888
jmp 0x5c74ff
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x38], 0xff
jle 0x5c7511
mov dword [esp + 0x38], 0xff
cmp eax, 0xff
jle 0x5c751d
mov eax, 0xff
mov edx, dword [esp + 0x38]
add edx, eax
sar edx, 1
jns 0x5c752a
adc edx, 0
push edx
push eax
movzx eax, byte [esp + 0x40]
push eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x2e0]
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x10]
call dword [eax + 0x320]
add esp, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0xcd520]
sub eax, edi
push eax
push 1
push 1
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x2e0]
mov ecx, dword [ebx + 0xccb60]
mov eax, dword [esp + 0x10]
call fcn.005c59f4
inc edi
dec dword [esp + 0x60]
jne 0x5c7390
mov eax, dword [ebx + 0xcd520]
push eax
push 1
mov eax, dword [ebx + 0xcd528]
push eax
mov eax, dword [ebx + 0xccb60]
push eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2e0]
push eax
mov eax, dword [esp + 0x14]
call dword [eax + 0x318]
add esp, 0x14
inc dword [ebx + 0xccb60]
mov eax, dword [ebx + 0xccb60]
cmp eax, dword [ebx + 0xcd51c]
jl 0x5c75d6
mov eax, dword [ebx + 0xcd524]
mov dword [ebx + 0xccb60], eax
add esp, 0xa8
pop ebp
pop edi
pop esi
pop ebx
ret