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

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
xor ecx, ecx
xorps xmm0, xmm0
push edi
mov edi, dword [esp + 0xa4]
movlpd qword [esp + 0x3c], xmm0
cmp word [esp + 0xb4], cx
je 0x4fe834
mov eax, dword [edi]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
jne 0x4ff18a
mov eax, dword [esp + 0xa8]
movzx eax, word [eax]
mov dword [esp + 0x38], eax
cmp eax, 0x3f
ja 0x4ff18a
movzx eax, ax
xor edx, edx
bts edx, eax
mov ebp, dword [esp + 0x40]
xor ebx, ebx
mov esi, dword [esp + 0x3c]
cmp eax, 0x20
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x70], xmm0
cmovae ebx, edx
mov byte [esp + 0x24], 1
xor edx, ebx
mov dword [esp + 0x14], ebp
cmp eax, 0x40
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0xb0]
cmovae ebx, edx
add edx, 0xffffffff
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x24]
adc ebx, 0xffffffff
and eax, 0x803
mov dword [esp + 0x64], ebx
neg eax
sbb eax, eax
neg eax
add eax, 0x182
xor ebx, ebx
movzx eax, ax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x4c], eax
nop word [eax + eax]
mov eax, dword [esp + 0x64]
cmp ebp, eax
ja 0x4ff0f4
jb 0x4fe8f8
cmp esi, dword [esp + 0x6c]
jae 0x4ff0f8
movzx eax, word [esp + 0xb4]
cmp ebx, eax
jg 0x4ff10d
test ebx, ebx
jle 0x4fe929
mov edi, dword [esp + 0x4c]
or edi, dword [ecx + 8]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x50]
or edi, dword [ecx + 0xc]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0xa4]
cmp ebx, eax
jge 0x4fe953
mov eax, dword [esp + 0xac]
mov eax, dword [eax + 0x18]
mov ebx, dword [eax + ebx*4]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test eax, 0x800
je 0x4fe965
mov ecx, ebx
jmp 0x4ff0bf
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test dword [ebx + 0x2c], 0x400
jne 0x4ff0de
and eax, 0x80
mov dword [esp + 0x70], eax
je 0x4fe983
xor eax, eax
mov word [ebx + 0x1e], ax
movzx eax, byte [ebx + 0x10]
lea ecx, [eax + eax*8]
mov eax, dword [edi + 4]
mov edi, dword [eax + ecx*8 + 0x34]
xor eax, eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], eax
cmp word [esp + 0x38], ax
je 0x4feabd
mov ebx, dword [esp + 0xa8]
add ebx, 8
mov dword [esp + 0x1c], ebx
xor ebp, ebp
xor edx, edx
bts ebp, eax
cmp eax, 0x20
cmovae edx, ebp
xor ebp, edx
cmp eax, 0x40
mov ecx, ebp
cmovae edx, ebp
and ecx, esi
mov eax, edx
mov dword [esp + 0x48], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x4fea94
mov esi, dword [ebx]
test esi, esi
je 0x4fea90
nop dword [eax]
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x4fea19
test eax, 0x80000
je 0x4fea09
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 8]
jmp 0x4fea11
cmp byte [esi], 0x71
jne 0x4fea15
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x4fe9f0
test esi, esi
je 0x4fea90
mov al, byte [esi]
cmp al, 0xa7
je 0x4fea23
cmp al, 0xa9
jne 0x4fea90
cmp dword [esi + 0x1c], edi
jne 0x4fea90
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x4c]
movzx eax, ax
not ecx
push 0
push eax
mov eax, dword [esp + 0x58]
not eax
push eax
movsx eax, word [esi + 0x20]
push ecx
push eax
mov eax, dword [esp + 0xb8]
add eax, 0x50
push edi
push eax
call fcn.004eb1c0
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x4fea8c
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x4feaf4
mov ecx, dword [esp + 0x2c]
xor eax, eax
movzx edx, word [ecx + 0x30]
test edx, edx
je 0x4feaf0
mov ecx, dword [ecx + 0x38]
nop dword [eax]
cmp edi, dword [ecx]
je 0x4feaf0
inc eax
add ecx, 4
cmp eax, edx
jl 0x4fea80
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
inc eax
add dword [esp + 0x1c], 0x14
mov ebx, dword [esp + 0x1c]
movzx ecx, dx
mov dword [esp + 0x30], eax
cmp eax, ecx
jl 0x4fe9b4
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x2c]
test eax, 0x1000
jne 0x4fef4a
test eax, 0x100
je 0x4feb69
mov dword [esp + 0x44], 0
mov ecx, 1
mov dword [esp + 0x48], 0
jmp 0x4feba5
cmp eax, edx
jge 0x4fea8c
test bl, 0x82
je 0x4feb4a
cmp word [esi + 0x20], 0
jl 0x4feb4a
mov eax, dword [esp + 0xa4]
mov esi, dword [eax]
mov eax, dword [esp + 0x1c]
push dword [eax]
push esi
call fcn.004b43b0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4feb23
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.004b47f0
add esp, 8
test eax, eax
je 0x4fea8c
push dword [eax]
push dword [ebx]
call fcn.004d2a70
add esp, 8
test eax, eax
jne 0x4fea8c
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x34]
or esi, ebp
mov ebp, dword [esp + 0x14]
or ebp, dword [esp + 0x48]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebp
jmp 0x4fea98
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x44], edx
test edx, edx
je 0x4ff18a
test byte [edx + 0x38], 4
jne 0x4ff18a
cmp byte [edx + 0x36], 0
movzx ecx, word [edx + 0x32]
mov dword [esp + 0x48], ecx
movzx ecx, word [edx + 0x34]
je 0x4feba0
mov byte [esp + 0x24], 1
test eax, 0x8000
je 0x4feba5
mov byte [esp + 0x24], 0
xor al, al
xor edi, edi
mov byte [esp + 0x2b], al
mov byte [esp + 0x2a], al
mov dword [esp + 0x30], eax
movzx eax, cx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], eax
test eax, eax
je 0x4fef4a
mov dword [esp + 0x54], edi
nop dword [eax]
movzx esi, word [ebx + 0x18]
mov dl, 1
mov byte [esp + 0x13], dl
cmp edi, esi
jge 0x4fec3e
movzx eax, word [ebx + 0x32]
cmp edi, eax
jl 0x4fec3e
mov ebx, dword [ebx + 0x38]
mov eax, dword [esp + 0x68]
mov edi, dword [ebx + edi*4]
movzx ecx, word [edi + 0xc]
and eax, ecx
test ax, ax
je 0x4fec11
test ecx, 0x180
je 0x4fef29
mov byte [esp + 0x24], 0
jmp 0x4fef29
test dl, cl
je 0x4fec3a
mov eax, dword [esp + 0x1c]
mov edi, dword [edi]
lea edx, [eax + 1]
cmp edx, esi
jge 0x4fec36
lea ecx, [eax + 1]
lea ecx, [ebx + ecx*4]
mov eax, dword [ecx]
cmp dword [eax], edi
je 0x4fec6d
inc edx
add ecx, 4
cmp edx, esi
jl 0x4fec28
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x4fec75
mov eax, dword [ebx + 4]
movsx ebp, word [eax + edi*2]
mov eax, dword [ebx + 0x1c]
mov cl, byte [edi + eax]
mov eax, dword [ebx + 0xc]
and cl, 1
mov byte [esp + 0x23], cl
movsx eax, word [eax + 0x20]
cmp ebp, eax
mov eax, 0xffffffff
cmove ebp, eax
jmp 0x4fec7d
xor dl, dl
mov byte [esp + 0x13], dl
jmp 0x4fec3a
or ebp, 0xffffffff
mov byte [esp + 0x23], 0
mov eax, dword [esp + 0x24]
test al, al
je 0x4fecb4
test ebp, ebp
js 0x4feca5
cmp edi, esi
jl 0x4fecb4
mov eax, dword [ebx + 0xc]
mov ecx, ebp
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
jne 0x4fecb4
mov byte [esp + 0x24], 0
jmp 0x4fecb4
xor ecx, ecx
movzx eax, al
cmp ebp, 0xfffffffe
cmove eax, ecx
mov dword [esp + 0x24], eax
xor ebx, ebx
test dl, dl
je 0x4fee27
mov edi, dword [esp + 0xa8]
add edi, 8
nop dword [eax + eax]
mov ecx, dword [esp + 0x38]
movzx eax, cx
cmp ebx, eax
jge 0x4fee27
xor esi, esi
mov eax, ebx
bts esi, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, esi
xor esi, edx
cmp eax, 0x40
mov ecx, esi
mov dword [esp + 0x80], esi
cmovae edx, esi
and ecx, dword [esp + 0x18]
mov eax, edx
mov dword [esp + 0x78], edx
and eax, dword [esp + 0x14]
or ecx, eax
jne 0x4fee18
mov eax, dword [edi]
test eax, eax
je 0x4fee18
nop
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x4fed4f
test ecx, 0x80000
je 0x4fed3b
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 8]
jmp 0x4fed43
cmp byte [eax], 0x71
jne 0x4fed47
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4fed20
test eax, eax
je 0x4fee18
mov cl, byte [esp + 0xb0]
and cl, 0xc0
neg cl
sbb cl, cl
and byte [esp + 0x13], cl
cmp ebp, 0xffffffff
jl 0x4fed8b
mov cl, byte [eax]
cmp cl, 0xa7
je 0x4fed76
cmp cl, 0xa9
jne 0x4fee18
mov ecx, dword [esp + 0x34]
cmp dword [eax + 0x1c], ecx
jne 0x4fee18
movsx eax, word [eax + 0x20]
cmp eax, ebp
jmp 0x4fedd2
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
mov ecx, dword [ecx + 0x28]
mov ecx, dword [ecx + edx + 8]
test ecx, ecx
je 0x4fedb0
nop
test dword [ecx + 4], 0x2000
je 0x4fedb0
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x4feda0
test dword [eax + 4], 0x2000
je 0x4fedc0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4fedb0
push dword [esp + 0x34]
push ecx
push eax
push 0
call fcn.004b4580
add esp, 0x10
test eax, eax
jne 0x4fee18
cmp ebp, 0xffffffff
je 0x4fee5f
mov eax, dword [esp + 0xa4]
push dword [edi]
mov esi, dword [eax]
push esi
call fcn.004b43b0
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x4fedfc
mov eax, dword [esi]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.004d2a70
add esp, 8
test eax, eax
je 0x4fee58
inc ebx
add edi, 0x14
cmp byte [esp + 0x13], 0
jne 0x4fecd0
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4fee3a
mov eax, dword [esp + 0x48]
movzx eax, ax
cmp ecx, eax
jge 0x4fee3f
mov byte [esp + 0x24], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x30], 0
je 0x4fef4a
mov byte [esp + 0x24], 1
jmp 0x4fef55
mov esi, dword [esp + 0x80]
cmp word [esp + 0x70], 0
mov edi, dword [esp + 0x1c]
je 0x4fee76
mov ecx, dword [esp + 0x2c]
lea eax, [edi + 1]
mov word [ecx + 0x1e], ax
test byte [esp + 0xb0], 0x40
jne 0x4feedb
mov ecx, dword [esp + 0xa8]
lea eax, [ebx + ebx*4]
mov al, byte [ecx + eax*4 + 0x10]
and al, 1
cmp byte [esp + 0x2b], 0
je 0x4feea5
mov cl, byte [esp + 0x23]
xor cl, byte [esp + 0x2a]
cmp cl, al
jne 0x4fee27
jmp 0x4feedb
mov dh, al
xor dh, byte [esp + 0x23]
mov byte [esp + 0x2a], dh
je 0x4feed6
mov eax, dword [esp + 0x60]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0xbc]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x2b], 1
mov ecx, dword [esp + 0xa8]
lea eax, [ebx + ebx*4]
test byte [ecx + eax*4 + 0x10], 2
je 0x4fef03
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + 0x18]
cmp edi, eax
jne 0x4fee27
or dword [ecx + 0x2c], 0x80000
mov eax, dword [esp + 0x30]
cmp ebp, 0xffffffff
mov ebp, dword [esp + 0x14]
mov ecx, 1
movzx eax, al
cmove eax, ecx
or dword [esp + 0x18], esi
or ebp, dword [esp + 0x78]
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], ebp
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], 0x14
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0x3c]
jge 0x4fee43
mov ebx, dword [esp + 0x2c]
jmp 0x4febd0
cmp byte [esp + 0x24], 0
je 0x4ff0d8
mov ecx, dword [esp + 0x2c]
xor ebp, ebp
mov eax, dword [esp + 0x58]
or eax, dword [ecx + 8]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
or eax, dword [ecx + 0xc]
mov dword [esp + 0x5c], eax
cmp word [esp + 0x38], bp
je 0x4ff0b3
mov esi, dword [esp + 0xa8]
add esi, 8
mov dword [esp + 0x30], esi
nop word [eax + eax]
xor edx, edx
xor ecx, ecx
mov eax, ebp
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x18]
and ecx, dword [esp + 0x14]
or edx, ecx
jne 0x4ff096
mov ecx, dword [esp + 0xa4]
mov esi, dword [esi]
add ecx, 0x1f0
test esi, esi
je 0x4ff000
cmp byte [esi], 0xa7
jne 0x4fefe7
test byte [esi + 4], 0x20
jne 0x4fefe7
push dword [esi + 0x1c]
push ecx
call fcn.004eb260
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x4ff011
test dword [esi + 4], 0x810000
jne 0x4ff000
push esi
push ecx
call fcn.004eb060
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x4ff011
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, edi
or eax, ebx
jne 0x4ff065
mov dword [esp + 0x84], 0
mov eax, 1
mov word [esp + 0x98], ax
mov dword [esp + 0x88], fcn.0047ee40
mov dword [esp + 0x8c], 0x4d10f0
test esi, esi
je 0x4ff065
lea eax, [esp + 0x84]
push esi
push eax
call fcn.004e6260
add esp, 8
cmp word [esp + 0x98], 0
je 0x4ff096
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
not ecx
not eax
and ecx, edi
and eax, ebx
or ecx, eax
jne 0x4ff096
mov eax, ebp
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
or dword [esp + 0x18], ecx
or dword [esp + 0x14], edx
mov ecx, dword [esp + 0x38]
inc ebp
add dword [esp + 0x30], 0x14
mov esi, dword [esp + 0x30]
movzx eax, cx
cmp ebp, eax
jl 0x4fef90
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x60]
inc ebx
mov dword [esp + 0x60], ebx
test dl, dl
je 0x4ff0f0
mov edi, dword [esp + 0xa4]
jmp 0x4fe8e0
mov ecx, dword [esp + 0x2c]
jmp 0x4ff0b7
cmp byte [ebx + 0x20], 0
je 0x4ff10d
and eax, 0x280
cmp eax, 0x80
jne 0x4ff0fe
mov eax, dword [esp + 0x64]
cmp esi, dword [esp + 0x6c]
jne 0x4ff10d
cmp ebp, eax
jne 0x4ff10d
mov al, byte [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
test dl, dl
jne 0x4ff17d
mov eax, dword [esp + 0x38]
movzx ebx, ax
dec ebx
test ebx, ebx
jle 0x4ff18a
nop dword [eax]
cmp ebx, 0x40
jge 0x4ff144
xor ecx, ecx
xor edx, edx
mov eax, ebx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
jmp 0x4ff155
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov eax, ecx
and eax, esi
mov esi, edx
and esi, ebp
cmp eax, ecx
jne 0x4ff165
cmp esi, edx
je 0x4ff170
dec ebx
test ebx, ebx
jle 0x4ff18a
mov esi, dword [esp + 0x18]
jmp 0x4ff120
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
or al, 0xff
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x90
ret