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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x62959b
mov eax, dword fs:[0]
push eax
sub esp, 0x4c8
mov eax, dword [0x67e034]
xor eax, esp
mov dword [esp + 0x4c0], eax
push ebx
push esi
push edi
mov eax, dword [0x67e034]
xor eax, esp
push eax
lea eax, [esp + 0x4d8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [edi]
mov dword [esp + 0x30], edi
call dword [eax + 0x30]
test eax, eax
je 0x595cc6
lea esi, [edi + 0x13c]
mov eax, dword [esi]
mov ecx, esi
mov dword [esp + 0x34], esi
call dword [eax + 4]
test eax, eax
jle 0x595cc6
mov eax, dword [edi]
lea ecx, [esp + 0x5c]
push ecx
mov ecx, edi
call dword [eax + 0x6c]
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x5c]
lea ecx, [esp + 0x24]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x68]
sub eax, dword [esp + 0x60]
push ecx
mov dword [esp + 0x90], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x64]
fldz
push ecx
fstp dword [esp]
lea ecx, [esp + 0x58]
mov ebx, eax
mov eax, dword [edi]
push ecx
mov ecx, edi
call dword [eax + 0x64]
fild dword [eax + 4]
push ecx
push ecx
fstp dword [esp + 4]
lea eax, [esp + 0xf0]
fild dword [ebx]
fstp dword [esp]
push eax
call fcn.0045bd91
mov edx, dword [esp + 0x4c]
add esp, 0x10
push eax
lea eax, [esp + 0x1f0]
call fcn.00401200
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
cmp eax, 0xff
jl 0x5952e7
fild dword [esp + 0x5c]
mov eax, dword [edi]
mov ecx, edi
fstp dword [esp + 0x44]
fild dword [esp + 0x60]
fstp dword [esp + 0x48]
fild dword [esp + 0x64]
fstp dword [esp + 0x4c]
fild dword [esp + 0x68]
fstp dword [esp + 0x50]
fldz
fst dword [esp + 0x6c]
fstp dword [esp + 0x70]
fild dword [esp + 0x88]
fstp dword [esp + 0x74]
fild dword [esp + 0x8c]
fstp dword [esp + 0x78]
call dword [eax + 0x30]
mov ebx, dword [eax]
mov dword [esp + 0x34], eax
mov eax, dword [edi]
mov ecx, edi
add ebx, 0x4c
call dword [eax + 0x68]
mov edi, eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
imul eax, edi
cdq
and edx, 0xff
add eax, edx
sar eax, 8
shl eax, 0x18
or eax, 0xffffff
push eax
sub esp, 0x10
mov edi, esp
lea esi, [esp + 0x58]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x48]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
sub esp, 0x10
mov edi, esp
lea esi, [esp + 0x90]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x210]
push eax
movsd dword es:[edi], dword [esi]
call dword [ebx]
jmp 0x595cc6
call fcn.004c41c2
push eax
call fcn.004c8fc6
pop ecx
test eax, eax
je 0x595cc6
call fcn.004c41c2
push eax
call fcn.004c8fc6
mov esi, dword [eax + 0xc]
pop ecx
mov dword [esp + 0xc0], esi
test esi, esi
je 0x595cc6
mov ecx, esi
call fcn.00460e55
mov eax, dword [eax + 0xa4]
cmp eax, 2
jb 0x595aca
push 4
push ecx
mov ecx, esi
call fcn.00460e55
add esp, 4
call fcn.004d0180
test al, al
je 0x595aca
test byte [0xfd005c], 1
jne 0x59537e
or dword [0xfd005c], 1
and dword [esp + 0x4e0], 0
push 0xfd0008
call fcn.0059436f
push 0x62b1de
call fcn.005a7da6
or dword [esp + 0x4e4], 0xffffffff
pop ecx
test byte [0xfd005c], 2
jne 0x5953a3
or dword [0xfd005c], 2
mov esi, 0xfcf640
call fcn.004c5c33
push 0x62b1d3
call fcn.005a7da6
pop ecx
lea ecx, [esp + 0x22c]
call fcn.00492b8b
lea ecx, [esp + 0x3ec]
mov dword [esp + 0x4e0], 1
call fcn.00492b8b
mov byte [esp + 0x4e0], 2
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x24]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov ebx, eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x24]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
push 0
mov esi, eax
mov eax, dword [ebx]
push 0
mov ecx, ebx
call dword [eax + 0xc]
push eax
push dword [esi + 4]
lea ecx, [esp + 0x23c]
push dword [esi]
call fcn.00492d02
mov eax, dword [edi]
mov ecx, edi
xor esi, esi
xor ebx, ebx
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x24]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
push dword [eax + 4]
mov ecx, edi
push dword [eax]
xor eax, eax
push ebx
push esi
push eax
push eax
mov eax, dword [edi]
call dword [eax + 0x30]
lea ecx, [esp + 0x24c]
push ecx
mov esi, eax
call fcn.004cfc6a
add esp, 0x1c
push ebx
push 1
push 0x15
mov eax, 0x100
push eax
push dword [esp + 0x4c]
lea ecx, [esp + 0x400]
call fcn.00492d02
lea ecx, [esp + 0x3f4]
call fcn.004937d2
test al, al
je 0x595556
lea ecx, [esp + 0x3f4]
call fcn.00493913
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, eax
mov ecx, 0x100
mov eax, ecx
sub eax, edx
imul eax, eax, 0x7f
cdq
and edx, 0x1ff
add eax, edx
mov esi, eax
sar esi, 9
mov dword [esp + 0x20], ecx
mov edi, 0xfcf640
push esi
mov edx, edi
call fcn.004c5d71
xor ebx, ebx
cmp dword [esp + 0x3c], ebx
mov dword [esp + 0x1c], eax
jle 0x59553c
push esi
mov edx, edi
call fcn.004c5d71
test eax, eax
jne 0x5954f8
mov eax, dword [esp + 0x14]
mov dword [eax + ebx*4], 0x80808080
inc ebx
jmp 0x595536
mov dword [esp + 0x18], eax
neg dword [esp + 0x18]
jmp 0x595530
cmp ebx, dword [esp + 0x3c]
jge 0x59553c
cmp dword [esp + 0x1c], 0
jle 0x595515
dec dword [esp + 0x1c]
jmp 0x59552f
mov edx, dword [esp + 0x14]
lea ecx, [eax - 0x80]
and ecx, 0xff
shl ecx, 8
or ecx, 0x80800080
mov dword [edx + ebx*4], ecx
inc ebx
dec eax
cmp eax, dword [esp + 0x18]
jge 0x595502
cmp ebx, dword [esp + 0x3c]
jl 0x5954de
lea ecx, [esp + 0x3f4]
call fcn.0049395d
add dword [esp + 0x14], eax
dec dword [esp + 0x20]
jne 0x5954c5
lea ecx, [esp + 0x3f4]
call fcn.00493864
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x238]
call fcn.004936c2
fild dword [eax]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x238]
fstp qword [esp + 0x28]
call fcn.004936f9
fild dword [eax]
lea eax, [esp + 0x54]
push eax
fdivr qword [esp + 0x28]
lea ecx, [esp + 0x238]
fstp dword [esp + 0x18]
call fcn.004936c2
fild dword [eax + 4]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x238]
fstp qword [esp + 0x28]
call fcn.004936f9
fild dword [eax + 4]
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x3f8]
fdivr qword [esp + 0x28]
fstp dword [esp + 0x1c]
call fcn.004936c2
fild dword [eax]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x3f8]
fstp qword [esp + 0x28]
call fcn.004936f9
fild dword [eax]
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x238]
fdivr qword [esp + 0x28]
fstp dword [esp + 0x40]
call fcn.004936c2
fild dword [eax]
push 0x45c126
push 4
pop esi
fmul qword [0x658148]
push esi
push 0xc
lea eax, [esp + 0x9c]
push eax
fstp dword [esp + 0x44]
call fcn.0043c160
fld dword [0x658024]
fst dword [esp + 0x90]
fst dword [esp + 0x94]
fldz
fst dword [esp + 0x98]
fild dword [esp + 0x88]
fld qword [0x657430]
fsub st(1), st(0)
fxch st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp dword [esp + 0x9c]
fxch st(2)
fst dword [esp + 0xa0]
fstp dword [esp + 0xa8]
fst dword [esp + 0xa4]
fild dword [esp + 0x8c]
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp + 0xac]
fst dword [esp + 0xb0]
fld dword [esp + 0x20]
fstp dword [esp + 0xb4]
fld dword [esp + 0x1c]
lea ebx, [esp + 0x90]
fstp dword [esp + 0xb8]
fstp dword [esp + 0xbc]
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x238]
call fcn.004936c2
fild dword [eax]
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x238]
fstp dword [esp + 0x24]
call fcn.004936c2
fild dword [eax + 4]
fstp dword [esp + 0x1c]
fld dword [esp + 0x20]
fstp dword [esp + 0x54]
mov eax, dword [esp + 0x54]
fld dword [esp + 0x1c]
mov dword [esp + 0x24], eax
fstp dword [esp + 0x58]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x1ec]
push eax
lea eax, [esp + 0x84]
push eax
lea eax, [esp + 0x2c]
call fcn.00595cec
add ebx, 0xc
dec esi
jne 0x5956c8
fld dword [esp + 0x90]
lea eax, [esp + 0x1a4]
fstp dword [esp + 0x124]
fld dword [esp + 0x94]
fstp dword [esp + 0x128]
fld dword [esp + 0x98]
fstp dword [esp + 0x12c]
fld1
fst dword [esp + 0x130]
fldz
fst dword [esp + 0x134]
fst dword [esp + 0x138]
fst dword [esp + 0x13c]
fst dword [esp + 0x140]
fld dword [esp + 0x9c]
fstp dword [esp + 0x144]
fld dword [esp + 0xa0]
fstp dword [esp + 0x148]
fld dword [esp + 0xa4]
fstp dword [esp + 0x14c]
fxch st(1)
fst dword [esp + 0x150]
fld dword [esp + 0x14]
fstp dword [esp + 0x154]
fxch st(1)
fst dword [esp + 0x158]
fst dword [esp + 0x15c]
fld dword [esp + 0x34]
fstp dword [esp + 0x160]
fld dword [esp + 0xa8]
fstp dword [esp + 0x164]
fld dword [esp + 0xac]
fstp dword [esp + 0x168]
fld dword [esp + 0xb0]
fstp dword [esp + 0x16c]
fxch st(1)
fst dword [esp + 0x170]
fxch st(1)
fst dword [esp + 0x174]
fld dword [esp + 0x18]
fstp dword [esp + 0x178]
fld dword [esp + 0x3c]
fstp dword [esp + 0x17c]
fstp dword [esp + 0x180]
fld dword [esp + 0xb4]
fstp dword [esp + 0x184]
fld dword [esp + 0xb8]
fstp dword [esp + 0x188]
fld dword [esp + 0xbc]
fstp dword [esp + 0x18c]
fstp dword [esp + 0x190]
fld dword [esp + 0x14]
fstp dword [esp + 0x194]
fld dword [esp + 0x18]
fstp dword [esp + 0x198]
fld dword [esp + 0x3c]
fstp dword [esp + 0x19c]
fld dword [esp + 0x34]
fstp dword [esp + 0x1a0]
call fcn.004d374c
push esi
push 1
push 4
push 0x204
push 0x20
xor ebx, ebx
mov byte [esp + 0x4f4], 3
call fcn.004d3803
lea ecx, [esp + 0x1a4]
call fcn.004d38eb
mov edi, dword [esp + 0x1cc]
push 0x20
pop ecx
lea esi, [esp + 0x124]
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x1a4]
call fcn.004d392c
mov esi, dword [esp + 0xc0]
inc ebx
mov edi, ebx
mov ecx, esi
call fcn.0045e475
push ebx
push ebx
xor edi, edi
mov ecx, esi
call fcn.0045f12f
push ebx
push ebx
mov edi, ebx
mov ecx, esi
call fcn.0045f12f
push 0
lea ecx, [esp + 0x238]
mov edi, esi
call fcn.0045f053
push ebx
lea ecx, [esp + 0x3f8]
call fcn.0045f053
mov edi, 0x204
mov ecx, esi
call fcn.0045df70
mov edi, dword [0xfd0044]
mov ecx, esi
call fcn.0045f923
lea edi, [esp + 0x1a4]
mov ecx, esi
call fcn.0045e0b1
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
fild dword [eax + 4]
fld1
lea eax, [esp + 0x44]
fdivrp st(1)
push eax
lea ecx, [esp + 0x238]
fmul qword [0x657618]
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fst dword [esp + 0xe8]
fst dword [esp + 0xec]
fst dword [esp + 0xf0]
fstp dword [esp + 0xf4]
fld dword [esp + 0x18]
fstp dword [esp + 0xf8]
fld dword [esp + 0x1c]
fstp dword [esp + 0xfc]
fldz
fst dword [esp + 0x100]
fst dword [esp + 0x104]
fst dword [esp + 0x108]
fst dword [esp + 0x10c]
fst dword [esp + 0x110]
fstp dword [esp + 0x114]
call fcn.004936c2
fld dword [esp + 0x14]
fidiv dword [eax]
lea ecx, [esp + 0x234]
lea eax, [esp + 0x44]
push eax
fstp dword [esp + 0x118]
fld dword [esp + 0x1c]
fstp qword [esp + 0x28]
call fcn.004936c2
fild dword [eax + 4]
push 4
lea eax, [esp + 0xe8]
push eax
fdivr qword [esp + 0x2c]
mov ecx, esi
fstp dword [esp + 0x120]
fldz
fst dword [esp + 0x124]
fstp dword [esp + 0x128]
call fcn.0045f9c2
push 6
pop ecx
push 5
pop edi
mov edx, esi
call fcn.0045ea82
mov ecx, esi
call fcn.0045fda4
xor edi, edi
mov ecx, esi
call fcn.0045df70
mov ecx, esi
call fcn.0045f923
mov ecx, esi
call fcn.0045e0b1
push edi
xor ecx, ecx
mov edi, esi
call fcn.0045f053
push ebx
xor ecx, ecx
call fcn.0045f053
lea ecx, [esp + 0x234]
call fcn.004934eb
lea ecx, [esp + 0x1a4]
mov byte [esp + 0x4e0], 2
call fcn.004d37b8
lea ecx, [esp + 0x3ec]
mov byte [esp + 0x4e0], bl
call fcn.00492c86
or dword [esp + 0x4e0], 0xffffffff
lea ecx, [esp + 0x22c]
call fcn.00492c86
jmp 0x595cc6
lea eax, [esp + 0xc4]
push eax
call fcn.0046bb85
lea ecx, [esp + 0x30c]
mov dword [esp + 0x4e0], 4
call fcn.00492b8b
mov byte [esp + 0x4e0], 5
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov esi, eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
lea ecx, [esp + 0x44]
mov ebx, eax
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0x1c]
push dword [eax + 4]
mov ecx, ebx
push dword [eax]
mov eax, dword [ebx]
call dword [eax + 0xc]
lea ecx, [esp + 0xcc]
call fcn.0046bc23
test al, al
je 0x595c9e
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov ebx, eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
push 0
mov esi, eax
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 0xc]
push eax
push dword [esi + 4]
lea ecx, [esp + 0x31c]
push dword [esi]
call fcn.00492d02
test al, al
je 0x595c9e
mov eax, dword [edi]
mov ecx, edi
xor esi, esi
xor ebx, ebx
call dword [eax + 0x30]
mov edx, dword [eax]
lea ecx, [esp + 0x44]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
push dword [eax + 4]
mov ecx, edi
push dword [eax]
xor eax, eax
push ebx
push esi
push eax
push eax
mov eax, dword [edi]
call dword [eax + 0x30]
lea ecx, [esp + 0xe0]
push ecx
mov esi, eax
call fcn.004cfaf0
add esp, 0x1c
test al, al
je 0x595c9e
lea ecx, [esp + 0x314]
call fcn.004983c0
test al, al
je 0x595c9e
xor edx, edx
xor ecx, ecx
push edx
xor eax, eax
push ecx
mov ecx, dword [esp + 0x3c]
lea edi, [esp + 0x38]
stosb byte es:[edi], al
mov eax, dword [ecx]
call dword [eax + 4]
shl eax, 8
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add eax, 0x300
push eax
push dword [esp + 0x3c]
lea eax, [esp + 0x324]
push eax
lea eax, [esp + 0xdc]
call fcn.00526292
test al, al
je 0x595c9e
fild dword [esp + 0x5c]
push 0xffffffffffffffff
sub esp, 0x10
mov edi, esp
fstp dword [esp + 0x58]
lea esi, [esp + 0x58]
fild dword [esp + 0x74]
sub esp, 0x10
lea eax, [esp + 0x210]
lea ecx, [esp + 0x330]
fstp dword [esp + 0x6c]
fild dword [esp + 0x88]
fstp dword [esp + 0x70]
fild dword [esp + 0x8c]
fstp dword [esp + 0x74]
movsd dword es:[edi], dword [esi]
fldz
fst dword [esp + 0x90]
movsd dword es:[edi], dword [esi]
fstp dword [esp + 0x94]
fild dword [esp + 0xac]
movsd dword es:[edi], dword [esi]
fstp dword [esp + 0x98]
fild dword [esp + 0xb0]
movsd dword es:[edi], dword [esi]
fstp dword [esp + 0x9c]
mov edi, esp
lea esi, [esp + 0x90]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push eax
movsd dword es:[edi], dword [esi]
call fcn.00494e4b
lea ecx, [esp + 0x30c]
mov byte [esp + 0x4e0], 4
call fcn.00492c86
or dword [esp + 0x4e0], 0xffffffff
lea ecx, [esp + 0xc4]
call fcn.0046bbe3
mov ecx, dword [esp + 0x4d8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4c0]
xor ecx, esp
call fcn.005a7b0e
mov esp, ebp
pop ebp
ret 4