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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x3b0
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov eax, dword [0x5ff014]
xor eax, ebp
mov dword [esp + 0x3a8], eax
lea eax, [esp + 0x9c]
push 0x30c
push 0xff
mov dword [esp + 0x44], eax
push eax
call fcn.00508060
add esp, 0xc
test edi, edi
jle 0x4f9042
xor ecx, ecx
xor eax, eax
cmp byte [esi + ecx], 0x30
je 0x4f9034
add esi, ecx
sub edi, ecx
mov eax, edi
add eax, 0xfffffcf5
add ebx, 0xffffffff
lea ecx, [eax + 0x30b]
test ecx, ecx
jle 0x4f97a9
lea edi, [eax - 1]
add ebx, 1
cmp byte [esi + eax + 0x30a], 0x30
mov eax, edi
je 0x4f8e88
lea ecx, [edi + 0x30c]
mov eax, ecx
mov dword [esp + 0x48], ecx
cmp ecx, 0x30d
jge 0x4f9049
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0x48]
lea esi, [ebx + eax]
movsd xmm0, qword [0x5e2ba0]
cmp esi, 0x135
jg 0x4f8f8e
xorpd xmm0, xmm0
cmp esi, 0xfffffebd
jl 0x4f8f8e
cmp dword [esp + 0x48], 0xf
mov dword [esp + 0x44], ebx
jg 0x4f911b
cmp ebx, 0xffffffea
jae 0x4f8fb6
cmp ebx, 0x16
ja 0x4f9076
xor eax, eax
mov esi, 1
xor edi, edi
mov ecx, dword [esp + 0x3c]
movsx ecx, byte [ecx + esi - 1]
mov ebx, ecx
sar ebx, 0x1f
mov edx, 0xa
mul edx
add eax, ecx
lea ecx, [edi + edi*4]
lea edi, [edx + ecx*2]
adc edi, ebx
add eax, 0xffffffd0
adc edi, 0xffffffff
cmp esi, dword [esp + 0x48]
jge 0x4f8f59
add esi, 1
mov ecx, 0x99999999
cmp eax, ecx
mov ecx, edi
mov edx, 0x19999999
sbb ecx, edx
jb 0x4f8f19
movd xmm1, eax
movd xmm0, edi
punpckldq xmm1, xmm0
punpckldq xmm1, xmmword [0x5e38c0]
subpd xmm1, xmmword [0x5e38d0]
movapd xmm0, xmm1
unpckhpd xmm0, xmm1
addsd xmm0, xmm1
mov eax, dword [esp + 0x44]
mulsd xmm0, qword [eax*8 + 0x5f05d8]
movsd qword [esp + 0x68], xmm0
fld qword [esp + 0x68]
fstp xword [esp + 0x48]
mov ecx, dword [esp + 0x3a8]
xor ecx, ebp
call fcn.00504596
fld xword [esp + 0x48]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
xor esi, esi
inc esi
xor ecx, ecx
mov edx, dword [esp + 0x3c]
movsx ebx, byte [edx + esi - 1]
mov edi, ebx
sar edi, 0x1f
mov edx, 0xa
mul edx
add eax, ebx
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2]
adc ecx, edi
add eax, 0xffffffd0
adc ecx, 0xffffffff
cmp esi, dword [esp + 0x48]
jge 0x4f8ffd
add esi, 1
mov edx, 0x99999999
cmp eax, edx
mov edx, ecx
mov edi, 0x19999999
sbb edx, edi
jb 0x4f8fbd
movd xmm0, eax
movd xmm1, ecx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x5e38c0]
subpd xmm0, xmmword [0x5e38d0]
haddpd xmm0, xmm0
mov ecx, dword [esp + 0x44]
shl ecx, 3
mov eax, 0x5f05d8
sub eax, ecx
divsd xmm0, qword [eax]
jmp 0x4f8f8e
inc ecx
cmp edi, ecx
jne 0x4f8e70
jmp 0x4f8e80
xor eax, eax
jmp 0x4f8e80
push 0x30b
push esi
lea eax, [esp + 0xa4]
push eax
call fcn.00507560
add esp, 0xc
mov byte [esp + 0x3a7], 0x31
add ebx, edi
mov dword [esp + 0x48], 0x30c
jmp 0x4f8ec4
mov ebx, dword [esp + 0x44]
test ebx, ebx
js 0x4f911b
mov ecx, 0xf
sub ecx, dword [esp + 0x48]
mov edx, ebx
mov eax, ecx
mov dword [esp + 0x20], ecx
sub edx, ecx
mov eax, edx
mov dword [esp + 0x10], edx
cmp edx, 0x16
jg 0x4f911b
xor eax, eax
xor esi, esi
inc esi
xor ecx, ecx
mov edx, dword [esp + 0x3c]
movsx ebx, byte [edx + esi - 1]
mov edi, ebx
sar edi, 0x1f
mov edx, 0xa
mul edx
add eax, ebx
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2]
adc ecx, edi
add eax, 0xffffffd0
adc ecx, 0xffffffff
cmp esi, dword [esp + 0x48]
jge 0x4f90e5
inc esi
mov edx, 0x99999999
cmp eax, edx
mov edx, ecx
mov edi, 0x19999999
sbb edx, edi
jb 0x4f90a7
movd xmm0, eax
movd xmm1, ecx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x5e38c0]
subpd xmm0, xmmword [0x5e38d0]
haddpd xmm0, xmm0
mov eax, dword [esp + 0x20]
mulsd xmm0, qword [eax*8 + 0x5f05d8]
mov eax, dword [esp + 0x10]
jmp 0x4f8f85
xor edx, edx
xor edi, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
movsx edi, byte [eax + ecx]
mov dword [esp + 8], edi
inc ecx
sar edi, 0x1f
mov dword [esp + 0xc], edi
mov eax, edx
mov edx, 0xa
mul edx
mov dword [esp + 0x20], edx
mov edx, eax
add edx, dword [esp + 8]
mov eax, dword [esp + 0x10]
lea eax, [eax + eax*4]
mov edi, dword [esp + 0x20]
lea eax, [edi + eax*2]
adc eax, dword [esp + 0xc]
mov edi, eax
add edx, 0xffffffd0
adc edi, 0xffffffff
mov dword [esp + 0x20], ecx
cmp dword [esp + 0x48], ecx
jle 0x4f918c
mov eax, 0x99999999
cmp edx, eax
mov eax, edi
mov ecx, 0x19999999
sbb eax, ecx
jb 0x4f9127
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x48]
jne 0x4f945a
mov dword [esp + 8], edx
mov esi, ebx
mov dword [esp + 0x20], 0
test edi, 0xffc00000
mov edx, edi
je 0x4f93be
xor edi, edi
mov eax, edx
mov dword [esp + 0xc], eax
test eax, eax
js 0x4f93e7
mov ecx, dword [esp + 8]
mov eax, edi
mov edi, dword [esp + 0xc]
shld edi, ecx, 1
add ecx, ecx
dec eax
test edi, edi
jns 0x4f91d0
mov dword [esp + 0xc], edi
mov dword [esp + 8], ecx
mov dword [esp + 0x1c], eax
mov ecx, eax
neg cl
xor edi, edi
mov edx, dword [esp + 0x20]
shld edi, edx, cl
shl edx, cl
xor eax, eax
test cl, 0x20
cmovne edi, edx
mov dword [esp + 0x10], edi
cmovne edx, eax
mov dword [esp + 0x20], edx
cmp esi, 0xfffffea4
jl 0x4f8f8e
movapd xmm0, xmmword [0x5de210]
lea eax, [esp + 0x88]
movupd xmmword [eax], xmm0
lea edi, [esp + 0x84]
mov dword [edi], 0xffffffff
push edi
push eax
push esi
call fcn.004b2a00
add esp, 0xc
sub esi, dword [edi]
je 0x4f9307
lea edx, [esi - 1]
cmp edx, 6
ja case.default.0x4f9269
xor edi, edi
mov eax, 0x98968000
lea ecx, [eax + 0x7698000]
mov dword [esp + 0x14], 4
jmp dword [edx*4 + 0x5f06ac]
xor edx, edx
add eax, 0x61698000
setb dl
mov edi, edx
mov dword [esp + 0x14], 0xa
mov ecx, eax
mov dword [esp + 0x40], ecx
mov eax, ecx
mov ecx, dword [esp + 0xc]
mul ecx
mov dword [esp + 0x18], eax
mov eax, edi
imul eax, ecx
mov dword [esp + 0xc], eax
mov ecx, edx
mov eax, dword [esp + 0x40]
mul dword [esp + 8]
imul edi, dword [esp + 8]
add edi, edx
mov edx, dword [esp + 0x14]
add dword [esp + 0x1c], edx
and eax, 0xffff8000
add edi, dword [esp + 0x18]
adc ecx, dword [esp + 0xc]
add eax, 0x80000000
adc edi, 0
adc ecx, 0
mov dword [esp + 0xc], ecx
mov ecx, 0x13
sub ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x20]
add edx, 4
mov eax, dword [esp + 0x10]
adc eax, 0
cmp ecx, esi
mov ecx, dword [esp + 0x10]
cmovl ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x20]
cmovl eax, edx
mov dword [esp + 0x20], eax
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x8c]
mov eax, ecx
mov edi, dword [esp + 0xc]
mul edi
mov esi, edx
mov dword [esp + 0x14], eax
mov eax, ecx
mul dword [esp + 8]
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x88]
mov eax, ecx
mul edi
mov edi, edx
mov dword [esp + 0xc], eax
mov eax, ecx
mul dword [esp + 8]
xor eax, eax
add edx, dword [esp + 0xc]
setb al
add edx, dword [esp + 0x40]
adc eax, 0
add edi, dword [esp + 0x14]
adc esi, 0
add edi, dword [esp + 0x18]
adc esi, 0
add edx, 0x80000000
mov ecx, dword [esp + 0x90]
adc edi, eax
mov dword [esp + 0xc], edi
adc esi, 0
mov eax, dword [esp + 0x1c]
add eax, ecx
add eax, 0x40
mov dword [esp + 8], eax
xor ecx, ecx
mov eax, dword [esp + 0x20]
mov edx, eax
mov edi, dword [esp + 0x10]
or edx, edi
sete cl
sub eax, ecx
mov ecx, sym.setup.exe_Ordinal_0
sbb edi, 0
add eax, 9
mov dword [esp + 0x20], eax
adc edi, 0
mov dword [esp + 0x10], edi
cmp esi, ecx
mov eax, esi
jb 0x4f94a6
mov edx, dword [esp + 8]
jmp 0x4f94d9
xor edi, edi
mov eax, edx
mov ecx, dword [esp + 8]
shld eax, ecx, 0xa
shl ecx, 0xa
mov dword [esp + 8], ecx
add edi, 0xfffffff6
mov ecx, edx
mov edx, 0x1000
cmp ecx, edx
mov edx, eax
jae 0x4f91ba
jmp 0x4f93c2
mov ecx, dword [esp + 8]
mov eax, edi
mov edi, dword [esp + 0xc]
jmp 0x4f91db
xor edx, edx
add eax, 0x2ab98000
setb dl
mov edi, edx
mov dword [esp + 0x14], 0x11
jmp 0x4f9284
xor edx, edx
add eax, 0x3a98000
setb dl
mov edi, edx
mov dword [esp + 0x14], 0xe
jmp 0x4f9284
xor edx, edx
add eax, 0x2f698000
setb dl
mov edi, edx
mov dword [esp + 0x14], 7
jmp 0x4f9284
xor edx, edx
add eax, 0x5b8d8000
setb dl
mov edi, edx
mov dword [esp + 0x14], 0x14
jmp 0x4f9284
mov ebx, eax
xor eax, eax
mov ecx, dword [esp + 0x3c]
cmp byte [ecx + ebx], 0x35
setge al
add edx, eax
mov dword [esp + 8], edx
adc edi, 0
sub esi, ebx
cmp ebx, dword [esp + 0x48]
je 0x4f9922
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x20], 4
jmp 0x4f91a8
call fcn.0056be00
mov dword [esp + 0x14], 0x18
mov ecx, 0x98968000
jmp case.0x4f9269.1
mov edx, dword [esp + 8]
mov esi, eax
mov edi, dword [esp + 0xc]
shld eax, edi, 0xa
shl edi, 0xa
mov dword [esp + 0xc], edi
add edx, 0xfffffff6
test esi, 0xfffff000
mov esi, eax
jne 0x4f94d9
jmp 0x4f94ac
mov edi, dword [esp + 0xc]
shld eax, edi, 1
add edi, edi
mov dword [esp + 0xc], edi
dec edx
test eax, eax
jns 0x4f94ca
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 8]
sub ecx, edx
mov esi, dword [esp + 0x20]
mov edi, edx
mov edx, ecx
mov eax, dword [esp + 0x10]
shld eax, esi, cl
shl esi, cl
mov ecx, esi
xor esi, esi
test dl, 0x20
mov edx, edi
cmovne eax, ecx
mov dword [esp + 0x10], eax
cmovne ecx, esi
lea eax, [edi + 0x472]
cmp edi, 0xfffffb8f
cmovl eax, esi
cmp edi, 0xfffffbc3
mov esi, 0x35
cmovl esi, eax
cmp esi, 3
mov dword [esp + 0x20], ecx
jle 0x4f96ca
mov dword [esp + 8], edx
mov ecx, 0x40
sub ecx, esi
mov esi, dword [esp + 0x1c]
shr esi, cl
test cl, 0x20
mov dword [esp + 0x14], ecx
mov edx, esi
mov edi, 0
cmovne edx, edi
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0xc]
mov edx, edi
mov eax, dword [esp + 0x1c]
shrd edx, eax, cl
test cl, 0x20
cmovne edx, esi
mov dword [esp + 0x5c], edx
xor edx, edx
dec edx
shl edx, cl
test cl, 0x20
mov esi, edx
mov ecx, 0
cmovne esi, ecx
mov ecx, 0xffffffff
cmove edx, ecx
not esi
and esi, edi
not edx
and edx, eax
shld edx, esi, 3
shl esi, 3
mov eax, dword [esp + 0x14]
mov ecx, eax
dec cl
mov eax, 8
xor edi, edi
shld edi, eax, cl
shl eax, cl
test cl, 0x20
cmovne edi, eax
mov ecx, 0
cmovne eax, ecx
mov ecx, dword [esp + 0x14]
add dword [esp + 8], ecx
mov dword [esp + 0x14], eax
add eax, dword [esp + 0x20]
mov dword [esp + 0x1c], edi
adc edi, dword [esp + 0x10]
mov dword [esp + 0xc], esi
mov dword [esp + 0x54], eax
cmp esi, eax
mov esi, dword [esp + 0x18]
mov dword [esp + 0x40], edx
mov dword [esp + 0x58], edi
sbb edx, edi
setae al
movzx eax, al
add eax, dword [esp + 0x5c]
adc esi, 0
mov ecx, 0xfffffffe
inc ecx
cmp ecx, eax
mov ecx, 0x1fffff
sbb ecx, esi
jb 0x4f9725
mov dword [esp + 0x18], eax
mov edx, esi
mov esi, dword [esp + 8]
cmp esi, 0x3cb
jg 0x4f975c
cmp esi, 0xfffffbce
jl 0x4f9769
xor edi, edi
dec edi
add edi, 1
mov ecx, 0xfffff
adc ecx, 0
and ecx, edx
sete al
cmp esi, 0xfffffbce
je 0x4f9654
or edi, ecx
je 0x4f97b2
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 8]
cmp esi, 0xfffffbce
setne cl
xor al, 1
or al, cl
shl esi, 0x14
add esi, 0x43300000
xor ecx, ecx
test al, al
cmovne ecx, esi
mov eax, 0xfffff
and edx, eax
or edx, ecx
movd xmm0, edx
xor eax, eax
dec eax
mov ecx, dword [esp + 0x18]
and ecx, eax
movd xmm1, ecx
mov edx, dword [esp + 0x14]
sub edx, edi
mov ecx, dword [esp + 0x1c]
sbb ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cmp edx, eax
mov edx, dword [esp + 0x40]
sbb ecx, edx
punpckldq xmm1, xmm0
jae 0x4f96c1
cmp eax, dword [esp + 0x54]
sbb edx, dword [esp + 0x58]
jb 0x4f97f4
movdqa xmm0, xmm1
jmp 0x4f8f8e
mov ecx, 4
sub ecx, esi
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
shrd edi, esi, cl
shr esi, cl
add edx, ecx
mov dword [esp + 8], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
shrd edx, eax, cl
shr eax, cl
test cl, 0x20
cmovne edi, esi
mov dword [esp + 0xc], edi
mov ecx, 0
cmovne esi, ecx
mov dword [esp + 0x1c], esi
cmovne edx, eax
cmovne eax, ecx
add edx, 9
mov dword [esp + 0x20], edx
adc eax, 0
mov dword [esp + 0x10], eax
mov ecx, 0x3c
jmp 0x4f9540
mov ecx, esi
mov edx, esi
mov esi, ecx
mov dword [esp + 0x18], ecx
shld esi, eax, 0x1f
shr edx, 1
inc dword [esp + 8]
xor ecx, ecx
add ecx, 0xffffffff
mov edi, sym.setup.exe_Ordinal_0
adc edi, 0xffffffff
cmp ecx, eax
sbb edi, dword [esp + 0x18]
mov dword [esp + 0x18], esi
mov eax, esi
mov ecx, edx
jae 0x4f9615
jmp 0x4f9729
movsd xmm0, qword [0x5e2ba0]
jmp 0x4f8f8e
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
sbb ecx, dword [esp + 0x10]
cmp eax, dword [esp + 0xc]
mov edx, dword [esp + 0x40]
sbb ecx, edx
xorpd xmm0, xmm0
movapd xmmword [esp + 0x20], xmm0
jae 0x4f97a9
mov eax, edx
mov ecx, dword [esp + 0x54]
cmp dword [esp + 0xc], ecx
sbb eax, dword [esp + 0x58]
xorpd xmm0, xmm0
jae 0x4f8f8e
jmp 0x4f980c
xorpd xmm0, xmm0
jmp 0x4f8f8e
mov edi, dword [esp + 0x20]
mov esi, edx
mov ecx, edx
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x18]
shld ecx, eax, 1
add eax, eax
mov dword [esp + 0x18], eax
and esi, 0x80000
sete al
cmp edx, 0xfffffbd0
lea edx, [edx - 1]
mov dword [esp + 8], edx
jl 0x4f992b
test esi, esi
mov edx, ecx
jne 0x4f9658
jmp 0x4f97b6
movsd xmm0, qword [0x5e2ba0]
movdqa xmmword [esp + 0x20], xmm1
ucomisd xmm1, xmm0
jae 0x4f8f8e
movaps xmm0, xmmword [esp + 0x20]
movsd qword [esp + 0x60], xmm0
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov dword [esp + 0x10], edx
mov eax, edx
shr eax, 0x14
and eax, 0x7ff
add eax, 0xfffffbcc
shld edx, ecx, 1
mov dword [esp + 8], ecx
add ecx, ecx
mov esi, 0xfffffffe
and ecx, esi
mov dword [esp + 0x1c], ecx
mov edi, 0x1fffff
and edx, edi
add esi, 2
adc edi, 0
or edi, edx
or esi, ecx
test dword [esp + 0x10], 0x7ff00000
mov dword [esp + 0xc], 0xfffffbcd
mov ecx, dword [esp + 0xc]
cmovne ecx, eax
mov dword [esp + 0xc], ecx
cmove edi, edx
cmove esi, dword [esp + 0x1c]
mov dword [esp + 0x74], edi
or esi, 1
mov dword [esp + 0x70], esi
mov eax, dword [esp + 0xc]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], 0xffffffff
sub esp, 0x14
movups xmm0, xmmword [esp + 0x84]
movups xmmword [esp + 4], xmm0
mov dword [esp], ebx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x5c]
call fcn.0057ec90
add esp, 0x14
test eax, eax
js 0x4f9936
mov ecx, 0x7ff00000
mov eax, SysReAllocString
jne 0x4f98d9
movaps xmm0, xmmword [esp + 0x20]
test byte [esp + 8], 1
je 0x4f8f8e
xor ecx, dword [esp + 0x10]
or ecx, dword [esp + 8]
movsd xmm0, qword [0x5e2ba0]
je 0x4f8f8e
mov ecx, dword [esp + 0x10]
sar ecx, 0x1f
jns 0x4f990e
xor edx, edx
dec edx
and edx, dword [esp + 8]
and eax, dword [esp + 0x10]
or eax, edx
xorps xmm0, xmm0
je 0x4f8f8e
test ecx, ecx
js 0x4f9940
mov eax, dword [esp + 8]
add eax, 1
mov ecx, dword [esp + 0x10]
adc ecx, 0
jmp 0x4f994e
mov ebx, dword [esp + 0x44]
jmp 0x4f91a0
mov edi, dword [esp + 0x20]
mov edx, ecx
jmp 0x4f9658
movaps xmm0, xmmword [esp + 0x20]
jmp 0x4f8f8e
mov eax, dword [esp + 8]
add eax, 0xffffffff
mov ecx, dword [esp + 0x10]
adc ecx, 0xffffffff
movd xmm1, ecx
movd xmm0, eax
punpckldq xmm0, xmm1
jmp 0x4f8f8e