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

Disassembly:
sub esp, 0x1a0
mov eax, dword [esp + 0x1a4]
test eax, eax
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x2c], edi
je 0x5c9483
mov ebx, dword [esp + 0x1b8]
test ebx, ebx
jbe 0x5c9483
cmp word [eax], 0
je 0x5c9483
mov ecx, dword [esp + 0x1e0]
test ecx, ecx
je 0x5c9483
push eax
mov ecx, edi
mov dword [esp + 0x5c], 0
call fcn.005c7db0
test eax, eax
jne 0x5c94f1
fld dword [esp + 0x1c0]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c8294
fld dword [esp + 0x1c8]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c8294
fld dword [esp + 0x1cc]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c8294
fld dword [esp + 0x1c4]
mov byte [esp + 0x14], 1
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jnp 0x5c8299
mov byte [esp + 0x14], 0
fld dword [esp + 0x1c0]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c83da
fld dword [esp + 0x1c8]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c83da
fld dword [esp + 0x1cc]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c83da
fld dword [esp + 0x1c4]
fcomp dword [0x663094]
fnstsw ax
test ah, 0x44
jp 0x5c83da
mov eax, dword [edi + 0x48]
test eax, eax
je 0x5c837c
mov eax, dword [edi + 0x50]
mov ecx, dword [edi + 0x54]
mov edx, dword [edi + 0x40]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
mov dword [esp + 0x6c], ecx
add edx, eax
mov eax, dword [edi + 0x44]
fstp dword [esp + 0x1c]
fild dword [esp + 0x6c]
mov dword [esp + 0x70], edx
add eax, ecx
mov ecx, dword [esp + 0x1c]
fstp dword [esp + 0x20]
mov edx, dword [esp + 0x20]
fild dword [esp + 0x70]
mov dword [esp + 0x74], eax
mov dword [esp + 0x1c0], ecx
mov dword [esp + 0x1c4], edx
fstp dword [esp + 0x24]
mov eax, dword [esp + 0x24]
fild dword [esp + 0x74]
mov edx, eax
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x30], edx
fstp dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
fld dword [esp + 0x24]
mov dword [esp + 0x1cc], ecx
fsub dword [esp + 0x1c]
jmp 0x5c83f3
mov dword [esp + 0x1c], 0xc9000000
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], 0xc9000000
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], 0x49000000
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], 0x49000000
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c4], ecx
mov dword [esp + 0x1c8], edx
mov dword [esp + 0x1cc], eax
mov dword [esp + 0x4c], 0x49800000
mov dword [esp + 0x30], 0x49800000
jmp 0x5c83f7
mov ecx, dword [esp + 0x1c8]
fld dword [esp + 0x1c8]
fsub dword [esp + 0x1c0]
mov dword [esp + 0x30], ecx
fstp dword [esp + 0x4c]
mov eax, dword [edi + 0xc0]
mov ecx, eax
shr eax, 1
and ecx, 1
cmp ebx, eax
je 0x5c8563
test ecx, ecx
je 0x5c848c
mov edx, ebx
shl edx, 4
push edx
call fcn.00489377
mov esi, eax
add esp, 4
test esi, esi
je 0x5c854d
mov eax, dword [edi + 0xc0]
shr eax, 1
cmp eax, ebx
mov ecx, ebx
ja 0x5c8438
mov ecx, eax
test ecx, ecx
jbe 0x5c846e
xor eax, eax
mov edi, edi
mov edx, dword [edi + 0xbc]
add edx, eax
mov ebp, dword [edx]
lea ebx, [eax + esi]
mov dword [ebx], ebp
mov ebp, dword [edx + 4]
mov dword [ebx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ebx + 8], ebp
mov edx, dword [edx + 0xc]
add eax, 0x10
dec ecx
mov dword [ebx + 0xc], edx
jne 0x5c8440
mov ebx, dword [esp + 0x1b8]
mov eax, dword [edi + 0xbc]
test eax, eax
je 0x5c8481
push eax
call fcn.00489183
add esp, 4
mov dword [edi + 0xbc], esi
jmp 0x5c854d
mov esi, 1
cmp ebx, esi
jb 0x5c849b
add esi, esi
cmp esi, ebx
jbe 0x5c8495
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], 0
fild qword [esp + 0x5c]
fstp dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
shr ecx, 0x17
and ecx, 0xff
sub ecx, 0x7f
js 0x5c84ca
mov edx, 1
shl edx, cl
jmp 0x5c84cc
xor edx, edx
cmp edx, eax
jae 0x5c84d2
add edx, edx
cmp edx, esi
je 0x5c854d
xor ebp, ebp
test esi, esi
je 0x5c8534
mov edx, esi
shl edx, 4
push edx
call fcn.00489377
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x5c854d
mov eax, dword [edi + 0xc0]
shr eax, 1
cmp eax, esi
mov ecx, esi
ja 0x5c8500
mov ecx, eax
test ecx, ecx
jbe 0x5c8534
xor eax, eax
mov edx, dword [edi + 0xbc]
add edx, eax
mov ebx, dword [edx]
lea esi, [eax + ebp]
mov dword [esi], ebx
mov ebx, dword [edx + 4]
mov dword [esi + 4], ebx
mov ebx, dword [edx + 8]
mov dword [esi + 8], ebx
mov edx, dword [edx + 0xc]
add eax, 0x10
dec ecx
mov dword [esi + 0xc], edx
jne 0x5c8506
mov ebx, dword [esp + 0x1b8]
mov eax, dword [edi + 0xbc]
test eax, eax
je 0x5c8547
push eax
call fcn.00489183
add esp, 4
mov dword [edi + 0xbc], ebp
mov ecx, dword [edi + 0xc0]
lea eax, [ebx + ebx]
xor ecx, eax
and ecx, 1
xor ecx, eax
mov dword [edi + 0xc0], ecx
mov eax, dword [edi + 0xc8]
mov ecx, eax
shr eax, 1
and ecx, 1
cmp ebx, eax
je 0x5c86a1
test ecx, ecx
je 0x5c85df
lea edx, [ebx*4]
push edx
call fcn.00489377
mov esi, eax
add esp, 4
test esi, esi
je 0x5c868b
mov ecx, dword [edi + 0xc8]
shr ecx, 1
cmp ecx, ebx
jbe 0x5c85a4
mov ecx, ebx
xor eax, eax
test ecx, ecx
jbe 0x5c85c1
lea ebx, [ebx]
mov edx, dword [edi + 0xc4]
mov edx, dword [edx + eax*4]
mov dword [esi + eax*4], edx
inc eax
cmp eax, ecx
jb 0x5c85b0
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x5c85d4
push eax
call fcn.00489183
add esp, 4
mov dword [edi + 0xc4], esi
jmp 0x5c868b
mov esi, 1
cmp ebx, esi
jb 0x5c85ee
add esi, esi
cmp esi, ebx
jbe 0x5c85e8
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], 0
fild qword [esp + 0x5c]
fstp dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
shr ecx, 0x17
and ecx, 0xff
sub ecx, 0x7f
js 0x5c861d
mov edx, 1
shl edx, cl
jmp 0x5c861f
xor edx, edx
cmp edx, eax
jae 0x5c8625
add edx, edx
cmp edx, esi
je 0x5c868b
xor ebp, ebp
test esi, esi
je 0x5c8672
lea edx, [esi*4]
push edx
call fcn.00489377
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x5c868b
mov eax, dword [edi + 0xc8]
shr eax, 1
cmp eax, esi
ja 0x5c8653
mov esi, eax
xor eax, eax
test esi, esi
jbe 0x5c8672
lea esp, [esp]
mov ecx, dword [edi + 0xc4]
mov edx, dword [ecx + eax*4]
mov dword [ebp + eax*4], edx
inc eax
cmp eax, esi
jb 0x5c8660
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x5c8685
push eax
call fcn.00489183
add esp, 4
mov dword [edi + 0xc4], ebp
mov ecx, dword [edi + 0xc8]
lea eax, [ebx + ebx]
xor ecx, eax
and ecx, 1
xor ecx, eax
mov dword [edi + 0xc8], ecx
mov edx, dword [edi + 0xb4]
and edx, 0xc000
cmp edx, 0x8000
jne 0x5c86c2
mov eax, dword [edi + 0x78]
cmp eax, dword [edi + 0x7c]
mov byte [esp + 0x50], 1
jne 0x5c86c7
mov byte [esp + 0x50], 0
mov al, byte [edi + 0x69]
xor bl, bl
test al, al
mov byte [esp + 0x15], bl
lea ebp, [edi + 0x80]
je 0x5c86e5
push 0
mov ecx, ebp
call fcn.005f45a0
jmp 0x5c8712
mov ecx, dword [edi + 0x6c]
shl ecx, 0x10
push ecx
mov ecx, ebp
call fcn.005f45a0
mov al, byte [edi + 0x75]
test al, al
jne 0x5c8701
mov al, byte [edi + 0x76]
test al, al
je 0x5c870c
mov eax, dword [edi + 0x6c]
test eax, eax
je 0x5c870c
mov bl, 1
jmp 0x5c870e
xor bl, bl
mov byte [esp + 0x15], bl
mov al, byte [edi + 0x75]
test al, al
je 0x5c8721
test bl, bl
jne 0x5c8721
mov al, 1
jmp 0x5c8723
xor al, al
push eax
mov ecx, ebp
call fcn.005f4530
mov al, byte [edi + 0x76]
test al, al
je 0x5c873a
test bl, bl
jne 0x5c873a
mov al, 1
jmp 0x5c873c
xor al, al
push eax
mov ecx, ebp
call fcn.005f4550
mov eax, dword [edi + 0xbc]
mov ecx, dword [edi + 0xc4]
mov edx, dword [esp + 0x1b8]
push eax
mov eax, dword [esp + 0x1b8]
push ecx
push edx
push eax
mov ecx, ebp
call fcn.005f4a40
test eax, eax
ja 0x5c877d
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x1a0
ret 0x30
mov ecx, dword [esp + 0x1e0]
cmp ecx, 0xffffffff
je 0x5c878d
cmp ecx, eax
jbe 0x5c8794
mov dword [esp + 0x1e0], eax
mov eax, dword [edi + 0x48]
test eax, eax
jne 0x5c87aa
mov eax, dword [esp + 0x1d4]
test eax, eax
je 0x5c94ef
fild dword [edi + 0x84]
xor esi, esi
mov ecx, ebp
mov dword [esp + 0x44], esi
fmul dword [0x65f758]
mov dword [esp + 0x40], esi
mov dword [esp + 0x28], esi
fstp dword [esp + 0x38]
call fcn.005f4cd0
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
lea ecx, [esp + 0xb0]
mov byte [esp + 0x16], 1
fmul dword [0x65f758]
fstp dword [esp + 0xa0]
call fcn.005f5610
push esi
lea ecx, [esp + 0xf8]
call fcn.005f5af0
cmp dword [edi + 0x48], esi
je 0x5c89ba
mov ecx, dword [edi + 0x44]
mov edx, dword [edi + 0x40]
push esi
push ecx
push edx
push 5
lea ecx, [esp + 0xc0]
call fcn.005f56e0
mov eax, dword [edi + 0x48]
push eax
lea ecx, [esp + 0xb4]
call fcn.005f5720
push esi
lea ecx, [esp + 0xb4]
push ecx
lea ecx, [esp + 0xfc]
call fcn.005f5dd0
mov edx, dword [edi + 0x78]
push edx
mov ecx, ebp
call fcn.005f4590
lea ecx, [esp + 0xd0]
call fcn.005f7250
mov ebp, dword [esp + 0x1d0]
mov ecx, dword [ebp]
mov eax, 0xbf800000
cmp ecx, eax
jne 0x5c889e
cmp dword [ebp + 8], eax
jne 0x5c889e
cmp dword [ebp + 0xc], eax
jne 0x5c889e
cmp dword [ebp + 4], eax
jne 0x5c889e
mov eax, dword [edi + 0x40]
mov ecx, dword [edi + 0x44]
shl eax, 0x10
shl ecx, 0x10
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ecx
jmp 0x5c88e6
fld dword [ebp]
fmul dword [0x65fd94]
call fcn.00487bd0
fld dword [ebp + 4]
fmul dword [0x65fd94]
mov dword [esp + 0x68], eax
call fcn.00487bd0
fld dword [ebp + 8]
fmul dword [0x65fd94]
mov dword [esp + 0x6c], eax
call fcn.00487bd0
fld dword [ebp + 0xc]
fmul dword [0x65fd94]
mov dword [esp + 0x70], eax
call fcn.00487bd0
mov dword [esp + 0x74], eax
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0xf8]
call fcn.005f6490
mov ebp, dword [esp + 0x1bc]
fld dword [ebp + 8]
fmul dword [0x65fd94]
call fcn.00487bd0
fld dword [ebp + 0x14]
fmul dword [0x65fd94]
mov dword [esp + 0xd8], eax
call fcn.00487bd0
fld dword [ebp]
fmul dword [0x65fd94]
mov dword [esp + 0xe4], eax
call fcn.00487bd0
fld dword [ebp + 0x10]
fmul dword [0x65fd94]
mov dword [esp + 0xd0], eax
call fcn.00487bd0
fld dword [ebp + 4]
fmul dword [0x65fd94]
mov dword [esp + 0xe0], eax
call fcn.00487bd0
fld dword [ebp + 0xc]
fmul dword [0x65fd94]
mov dword [esp + 0xd4], eax
call fcn.00487bd0
fld dword [ebp + 0x18]
fmul dword [0x65fd94]
mov dword [esp + 0xdc], eax
call fcn.00487bd0
fld dword [ebp + 0x1c]
fmul dword [0x65fd94]
mov dword [esp + 0xe8], eax
call fcn.00487bd0
lea ecx, [esp + 0xd0]
push ecx
lea ecx, [esp + 0xf8]
mov dword [esp + 0xf0], eax
call fcn.005f6470
mov ebx, dword [esp + 0x1b4]
cmp word [ebx], 0
mov dword [esp + 0x9c], 0x3f800000
mov dword [esp + 0x7c], 0xbf800000
mov dword [esp + 0x84], 0xbf800000
mov dword [esp + 0x78], 0xffffffff
je 0x5c9289
mov al, byte [esp + 0x1d8]
test al, al
sete byte [esp + 0x37]
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
nop
lea esp, [esp]
mov eax, dword [esp + 0x8c]
fld dword [esp + 0x30]
mov dl, byte [esp + 0x37]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x98]
mov byte [esp + 0x17], dl
mov edx, dword [esp + 0x94]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0xa4], ecx
lea eax, [esp + 0xa4]
push eax
mov dword [esp + 0xac], edx
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x2f]
push eax
mov ebp, esi
mov dword [esp + 0xc8], ebp
mov dword [esp + 0x34], 0xffffffff
push 0
call fcn.00487bd0
push eax
push ebx
lea ecx, [esp + 0x6c]
push ecx
mov ecx, edi
call fcn.005c7990
mov esi, eax
test esi, esi
jne 0x5c9315
mov al, byte [esp + 0x1dc]
test al, al
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x30], edx
jne 0x5c8b1c
mov al, byte [esp + 0x14]
test al, al
jne 0x5c8b1c
fld dword [esp + 0x28]
fadd dword [esp + 0x58]
fcomp dword [esp + 0x1cc]
fnstsw ax
test ah, 1
je 0x5c9289
cmp dword [edi + 0x60], 3
mov esi, dword [esp + 0x44]
jne 0x5c8b32
xor eax, eax
cmp word [ebx + esi*2], ax
sete al
mov dword [edi + 0x60], eax
mov eax, dword [edi + 0x48]
test eax, eax
je 0x5c91de
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x78]
sub esi, ebp
inc esi
test eax, eax
jl 0x5c8b5c
cmp esi, 2
jb 0x5c8b5a
test ebx, ebx
jl 0x5c8b5c
cmp esi, 3
jae 0x5c8b5c
xor esi, esi
push 0
lea ecx, [esp + 0x14]
call fcn.004a03e0
test ebx, ebx
mov ecx, dword [esp + 0x1b4]
push esi
lea edx, [ecx + ebp*2]
push edx
jl 0x5c8d39
sub ebx, ebp
lea ecx, [esp + 0x6c]
mov dword [esp + 0x20], ebx
call fcn.004a0380
mov eax, dword [esp + 0x64]
test eax, eax
je 0x5c8b97
add eax, 4
jmp 0x5c8b99
xor eax, eax
push eax
lea ecx, [esp + 0x8c]
call fcn.004a0320
mov ebx, eax
mov eax, dword [esp + 0x10]
cmp eax, dword [ebx]
je 0x5c8c4d
test eax, eax
je 0x5c8c17
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x5c8c0f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c8bfe
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x5c8bf9
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c8bfe
mov eax, 0xff
test eax, eax
jne 0x5c8c0f
mov eax, dword [esp + 0x10]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x10], 0
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x10], eax
je 0x5c8c4d
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x5c8c44
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x5c8c4d
lea ecx, [esp + 0x10]
call fcn.0049d350
mov eax, dword [esp + 0x88]
test eax, eax
je 0x5c8cb0
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x5c8cb0
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c8c9c
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x5c8c97
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c8c9c
mov eax, 0xff
test eax, eax
jne 0x5c8cb0
mov ecx, dword [esp + 0x88]
push ecx
call fcn.00499410
add esp, 4
xor ebx, ebx
push ebx
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x90], ebx
call fcn.004a0630
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x64]
dec edx
cmp eax, ebx
mov dword [esp + 0x40], edx
je 0x5c8d30
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x5c8d30
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c8d1f
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x5c8d1a
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c8d1f
mov eax, 0xff
cmp eax, ebx
jne 0x5c8d30
mov eax, dword [esp + 0x64]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x64], ebx
jmp 0x5c8e5a
lea ecx, [esp + 0x88]
call fcn.004a0380
mov ebx, eax
mov eax, dword [esp + 0x10]
cmp eax, dword [ebx]
je 0x5c8dec
test eax, eax
je 0x5c8db6
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x5c8dae
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c8d9d
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x5c8d98
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c8d9d
mov eax, 0xff
test eax, eax
jne 0x5c8dae
mov eax, dword [esp + 0x10]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x10], 0
mov eax, dword [ebx]
test eax, eax
mov dword [esp + 0x10], eax
je 0x5c8dec
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x5c8de3
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x5c8dec
lea ecx, [esp + 0x10]
call fcn.0049d350
mov eax, dword [esp + 0x80]
test eax, eax
je 0x5c8e4f
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x5c8e4f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c8e3b
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x5c8e36
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c8e3b
mov eax, 0xff
test eax, eax
jne 0x5c8e4f
mov ecx, dword [esp + 0x80]
push ecx
call fcn.00499410
add esp, 4
mov dword [esp + 0x80], 0
lea ecx, [esp + 0x10]
call fcn.0049d350
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5c8eaa
mov edx, dword [eax]
and edx, 0xffffff00
cmp edx, 0x200
lea ebx, [eax + 4]
jb 0x5c8e8c
cmp word [ebx], 0
je 0x5c8e8c
test ebx, ebx
je 0x5c933c
mov ecx, dword [edi + 0x60]
cmp ecx, 2
mov dword [esp + 0x3c], 0
jne 0x5c8eae
fld dword [esp + 0x24]
fsub dword [esp + 0x1c]
fsubr dword [esp + 0x4c]
jmp 0x5c8ec5
xor ebx, ebx
jmp 0x5c8e8c
cmp ecx, 1
jne 0x5c8ec9
fld dword [esp + 0x24]
fsub dword [esp + 0x1c]
fsubr dword [esp + 0x4c]
fmul qword [0x65c2f8]
fstp dword [esp + 0x3c]
mov ecx, dword [esp + 0x1e0]
mov edx, dword [esp + 0x40]
dec ecx
cmp edx, ecx
ja 0x5c8edb
mov ecx, edx
sub ecx, ebp
test eax, eax
lea ebp, [ecx + ecx + 2]
je 0x5c9016
mov edx, dword [eax]
and edx, 0xffffff00
cmp edx, 0x200
jb 0x5c9016
cmp word [eax + 4], 0
je 0x5c9016
mov al, byte [esp + 0x15]
test al, al
mov esi, dword [esp + 0x2c]
je 0x5c8f5e
mov eax, dword [esp + 0x50]
fld dword [esp + 0xa4]
fadd dword [esp + 0x3c]
push eax
push 0
push 0
push 0
fstp dword [esp + 0x78]
fld dword [esp + 0x68]
push ebp
lea edi, [esi + 0x80]
fstp dword [esp + 0x80]
push ebx
mov ecx, edi
call fcn.005f4890
push eax
lea ecx, [esp + 0x70]
push ecx
push edi
lea edx, [esp + 0x104]
push edx
mov ecx, esi
call fcn.005ca780
mov al, byte [esp + 0x50]
test al, al
je 0x5c8f80
lea edi, [esi + 0x80]
push 0
mov ecx, edi
call fcn.005f4570
mov eax, dword [esi + 0x78]
push eax
mov ecx, edi
call fcn.005f4590
fld dword [esp + 0xa8]
fadd dword [esp + 0x58]
fmul dword [0x65fd94]
call fcn.00487bd0
fld dword [esp + 0xa4]
fadd dword [esp + 0x3c]
mov esi, eax
fmul dword [0x65fd94]
call fcn.00487bd0
mov ecx, dword [esp + 0x2c]
mov edi, eax
lea eax, [ecx + 0x80]
push eax
push esi
push edi
push ebp
push ebx
lea ecx, [esp + 0x108]
call fcn.005f6e70
mov al, byte [esp + 0x50]
test al, al
je 0x5c9012
mov edx, dword [esp + 0x2c]
push 1
lea ecx, [edx + 0x80]
call fcn.005f4570
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x7c]
push ecx
lea ecx, [eax + 0x80]
call fcn.005f4590
mov edx, dword [esp + 0x2c]
lea eax, [edx + 0x80]
push eax
push esi
push edi
push ebp
push ebx
lea ecx, [esp + 0x108]
call fcn.005f6e70
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x78]
test ecx, ecx
jl 0x5c916c
cmp dword [esp + 0xac], ecx
ja 0x5c916c
cmp ecx, dword [esp + 0x44]
ja 0x5c916c
fld dword [esp + 0xa4]
mov ebp, dword [esp + 0x2c]
fadd dword [esp + 0x3c]
mov esi, dword [ebp + 0xb4]
mov edi, dword [ebp + 0xa8]
shr esi, 0xe
fadd dword [esp + 0x48]
and esi, 3
fld dword [0x65fd94]
fmul st(1)
call fcn.00487bd0
fld dword [esp + 0x58]
fadd dword [esp + 0x38]
mov dword [esp + 0xc0], eax
fld dword [esp + 0xa0]
fmul dword [0x682df4]
fsubp st(1)
fmul dword [0x65fd94]
call fcn.00487bd0
fadd dword [0x682df0]
mov dword [esp + 0xc4], eax
fmul dword [0x65fd94]
call fcn.00487bd0
fld dword [esp + 0xa0]
fmul dword [0x65ffe0]
mov dword [esp + 0xc8], eax
fadd dword [esp + 0x58]
fadd dword [esp + 0x38]
fmul dword [0x65fd94]
call fcn.00487bd0
mov dword [esp + 0xcc], eax
mov al, byte [ebp + 0x69]
test al, al
jne 0x5c90f3
mov eax, dword [ebp + 0x70]
shl eax, 0x10
push eax
lea ecx, [ebp + 0x80]
call fcn.005f45a0
lea ebx, [ebp + 0x80]
push 0xff000000
mov ecx, ebx
call fcn.005f4590
push 2
mov ecx, ebx
call fcn.005f4570
push ebx
lea ecx, [esp + 0xc4]
push ecx
lea ecx, [esp + 0xfc]
call fcn.005f6850
push 0xffffffffffffffff
mov ecx, ebx
call fcn.005f4590
push 1
mov ecx, ebx
call fcn.005f4570
push ebx
lea edx, [esp + 0xc4]
push edx
lea ecx, [esp + 0xfc]
call fcn.005f6850
push edi
mov ecx, ebx
call fcn.005f4590
push esi
mov ecx, ebx
call fcn.005f4570
mov eax, dword [ebp + 0x6c]
shl eax, 0x10
push eax
mov ecx, ebx
call fcn.005f45a0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5c91c7
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x5c91c7
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c91b6
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x5c91b1
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c91b6
mov eax, 0xff
test eax, eax
jne 0x5c91c7
mov eax, dword [esp + 0x10]
push eax
call fcn.00499410
add esp, 4
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x1b4]
mov dword [esp + 0x10], 0
fld dword [esp + 0x9c]
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x5c91fb
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x9c], ecx
fld dword [esp + 0x7c]
fcomp dword [esp + 0x24]
fnstsw ax
test ah, 5
jp 0x5c9212
mov edx, dword [esp + 0x24]
mov dword [esp + 0x7c], edx
fld dword [esp + 0x58]
mov al, byte [esp + 0x16]
test al, al
fadd dword [esp + 0x38]
fadd dword [edi + 0x64]
fstp dword [esp + 0x58]
je 0x5c925a
mov al, byte [edi + 0x74]
test al, al
je 0x5c924a
fld dword [esp + 0xa0]
fmul dword [0x682df4]
fsubr dword [esp + 0x38]
fstp dword [esp + 0x84]
jmp 0x5c9255
mov eax, dword [esp + 0x20]
mov dword [esp + 0x84], eax
mov byte [esp + 0x16], 0
mov al, byte [esp + 0x17]
test al, al
je 0x5c9289
mov ecx, dword [esp + 0x1e0]
mov eax, dword [esp + 0x40]
dec ecx
cmp eax, ecx
ja 0x5c9289
cmp word [ebx + esi*2], 0
je 0x5c9289
inc esi
cmp word [ebx + esi*2], 0
mov dword [esp + 0x44], esi
jne 0x5c8a40
mov ecx, dword [esp + 0x1d4]
test ecx, ecx
je 0x5c945c
fld dword [esp + 0x58]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x41
jne 0x5c92e6
fld dword [esp + 0x58]
fsub dword [edi + 0x64]
fld dword [esp + 0x28]
fcomp dword [esp + 0x38]
fnstsw ax
test ah, 0x41
jne 0x5c92c9
fld dword [esp + 0x28]
fsub dword [esp + 0x38]
faddp st(1)
mov edx, dword [esp + 0x9c]
fstp dword [ecx + 0xc]
mov eax, dword [esp + 0x7c]
mov dword [ecx], edx
mov edx, dword [esp + 0x84]
mov dword [ecx + 8], eax
mov dword [ecx + 4], edx
mov eax, dword [edi + 0x60]
cmp eax, 2
jne 0x5c93c3
mov dl, byte [esp + 0x14]
test dl, dl
jne 0x5c93c3
fld dword [ecx + 8]
mov eax, dword [esp + 0x30]
fsub dword [ecx]
mov dword [ecx + 8], eax
fsubr dword [esp + 0x30]
fstp dword [ecx]
jmp 0x5c93ec
lea ecx, [esp + 0xf4]
call fcn.005f5cd0
lea ecx, [esp + 0xb0]
call fcn.005f5660
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x1a0
ret 0x30
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x5c9391
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x5c9380
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x5c937b
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5c9380
mov eax, 0xff
test eax, eax
jne 0x5c9391
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00499410
add esp, 4
lea ecx, [esp + 0xf4]
mov dword [esp + 0x10], 0
call fcn.005f5cd0
lea ecx, [esp + 0xb0]
call fcn.005f5660
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0x1a0
ret 0x30
cmp eax, 1
jne 0x5c93ec
mov al, byte [esp + 0x14]
test al, al
jne 0x5c93ec
fld dword [ecx + 8]
fsub dword [ecx]
fld dword [esp + 0x30]
fsub st(1)
fmul qword [0x65c2f8]
fst dword [ecx]
fxch st(1)
fadd st(1)
fstp dword [ecx + 8]
fstp st(0)
mov al, byte [edi + 0x75]
test al, al
je 0x5c945c
mov eax, dword [edi + 0x84]
mov edi, dword [esp + 0x1d4]
fld dword [edi + 0xc]
cdq
fmul dword [0x682dec]
mov esi, eax
mov ebx, edx
call fcn.00487bd0
push 0
push 0x1c71
push ebx
push esi
mov ebp, eax
call fcn.004898f0
mov ecx, 0x10
call fcn.00487dc0
push 0
push 0xe38
push ebx
sub eax, ebp
push esi
mov ebp, eax
call fcn.004898f0
mov ecx, 0x10
call fcn.00487dc0
add ebp, eax
mov dword [esp + 0x48], ebp
fild dword [esp + 0x48]
fmul dword [0x65f758]
fstp dword [edi + 0xc]
lea ecx, [esp + 0xf4]
call fcn.005f5cd0
lea ecx, [esp + 0xb0]
call fcn.005f5660
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1a0
ret 0x30
mov eax, dword [esp + 0x1d4]
test eax, eax
je 0x5c94ef
fld dword [esp + 0x1c0]
mov dword [esp + 0x90], 0
fadd dword [esp + 0x1c8]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x98], 0
fmul qword [0x65c2f8]
fld st(0)
fstp dword [esp + 0x8c]
mov ecx, dword [esp + 0x8c]
mov dword [eax], ecx
fstp dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x98]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a0
ret 0x30