Function at 0x5f9450
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 0x5f9484
mov eax, dword [edi]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
jne 0x5f9dda
mov eax, dword [esp + 0xa8]
movzx eax, word [eax]
mov dword [esp + 0x38], eax
cmp eax, 0x3f
ja 0x5f9dda
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 0x5f9d44
jb 0x5f9548
cmp esi, dword [esp + 0x6c]
jae 0x5f9d48
movzx eax, word [esp + 0xb4]
cmp ebx, eax
jg 0x5f9d5d
test ebx, ebx
jle 0x5f9579
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 0x5f95a3
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 0x5f95b5
mov ecx, ebx
jmp 0x5f9d0f
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test dword [ebx + 0x2c], 0x400
jne 0x5f9d2e
and eax, 0x80
mov dword [esp + 0x70], eax
je 0x5f95d3
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 0x5f978b
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 0x5f9762
mov esi, dword [ebx]
test esi, esi
je 0x5f975e
nop dword [eax]
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x5f966d
test eax, 0x80000
je 0x5f9659
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 8]
jmp 0x5f9661
cmp byte [esi], 0x71
jne 0x5f9665
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x5f9640
test esi, esi
je 0x5f975e
mov al, byte [esi]
cmp al, 0xa7
je 0x5f967b
cmp al, 0xa9
jne 0x5f975e
cmp dword [esi + 0x1c], edi
jne 0x5f975e
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.005e5ed0
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x5f975a
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x5f96f0
mov eax, dword [esp + 0x2c]
xor ecx, ecx
movzx edx, word [eax + 0x30]
test edx, edx
je 0x5f96ec
mov eax, dword [eax + 0x38]
nop dword [eax]
cmp edi, dword [eax]
je 0x5f96ec
inc ecx
add eax, 4
cmp ecx, edx
jl 0x5f96e0
cmp ecx, edx
jge 0x5f975a
test bl, 0x82
je 0x5f973e
cmp word [esi + 0x20], 0
jl 0x5f973e
mov eax, dword [esp + 0xa4]
mov esi, dword [eax]
mov eax, dword [esp + 0x1c]
push dword [eax]
push esi
call fcn.005aeba0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x5f971f
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.005aefe0
add esp, 8
test eax, eax
je 0x5f975a
push dword [eax]
push dword [ebx]
call fcn.005cd620
add esp, 8
test eax, eax
jne 0x5f975a
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 0x5f9766
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 0x5f9604
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x2c]
test eax, 0x1000
jne 0x5f9b9a
test eax, 0x100
je 0x5f97b7
mov dword [esp + 0x44], 0
mov ecx, 1
mov dword [esp + 0x48], 0
jmp 0x5f97f3
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x44], edx
test edx, edx
je 0x5f9dda
test byte [edx + 0x38], 4
jne 0x5f9dda
cmp byte [edx + 0x36], 0
movzx ecx, word [edx + 0x32]
mov dword [esp + 0x48], ecx
movzx ecx, word [edx + 0x34]
je 0x5f97ee
mov byte [esp + 0x24], 1
test eax, 0x8000
je 0x5f97f3
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 0x5f9b9a
mov dword [esp + 0x54], edi
nop word [eax + eax]
movzx esi, word [ebx + 0x18]
mov dl, 1
mov byte [esp + 0x13], dl
cmp edi, esi
jge 0x5f988e
movzx eax, word [ebx + 0x32]
cmp edi, eax
jl 0x5f988e
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 0x5f9861
test ecx, 0x180
je 0x5f9b79
mov byte [esp + 0x24], 0
jmp 0x5f9b79
test dl, cl
je 0x5f988a
mov eax, dword [esp + 0x1c]
mov edi, dword [edi]
lea edx, [eax + 1]
cmp edx, esi
jge 0x5f9886
lea ecx, [eax + 1]
lea ecx, [ebx + ecx*4]
mov eax, dword [ecx]
cmp dword [eax], edi
je 0x5f98bd
inc edx
add ecx, 4
cmp edx, esi
jl 0x5f9878
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x5f98c5
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 0x5f98cd
xor dl, dl
mov byte [esp + 0x13], dl
jmp 0x5f988a
or ebp, 0xffffffff
mov byte [esp + 0x23], 0
mov eax, dword [esp + 0x24]
test al, al
je 0x5f9904
test ebp, ebp
js 0x5f98f5
cmp edi, esi
jl 0x5f9904
mov eax, dword [ebx + 0xc]
mov ecx, ebp
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
jne 0x5f9904
mov byte [esp + 0x24], 0
jmp 0x5f9904
xor ecx, ecx
movzx eax, al
cmp ebp, 0xfffffffe
cmove eax, ecx
mov dword [esp + 0x24], eax
xor edi, edi
test dl, dl
je 0x5f9a77
mov ebx, dword [esp + 0xa8]
add ebx, 8
nop dword [eax + eax]
mov ecx, dword [esp + 0x38]
movzx eax, cx
cmp edi, eax
jge 0x5f9a77
xor esi, esi
mov eax, edi
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 0x5f9a68
mov eax, dword [ebx]
test eax, eax
je 0x5f9a68
nop
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x5f999f
test ecx, 0x80000
je 0x5f998b
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 8]
jmp 0x5f9993
cmp byte [eax], 0x71
jne 0x5f9997
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x5f9970
test eax, eax
je 0x5f9a68
mov cl, byte [esp + 0xb0]
and cl, 0xc0
neg cl
sbb cl, cl
and byte [esp + 0x13], cl
cmp ebp, 0xffffffff
jl 0x5f99db
mov cl, byte [eax]
cmp cl, 0xa7
je 0x5f99c6
cmp cl, 0xa9
jne 0x5f9a68
mov ecx, dword [esp + 0x34]
cmp dword [eax + 0x1c], ecx
jne 0x5f9a68
movsx eax, word [eax + 0x20]
cmp eax, ebp
jmp 0x5f9a22
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 0x5f9a00
nop
test dword [ecx + 4], 0x2000
je 0x5f9a00
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x5f99f0
test dword [eax + 4], 0x2000
je 0x5f9a10
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x5f9a00
push dword [esp + 0x34]
push ecx
push eax
push 0
call fcn.005aed70
add esp, 0x10
test eax, eax
jne 0x5f9a68
cmp ebp, 0xffffffff
je 0x5f9aaf
mov eax, dword [esp + 0xa4]
push dword [ebx]
mov esi, dword [eax]
push esi
call fcn.005aeba0
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x5f9a4c
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.005cd620
add esp, 8
test eax, eax
je 0x5f9aa8
inc edi
add ebx, 0x14
cmp byte [esp + 0x13], 0
jne 0x5f9920
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x5f9a8a
mov eax, dword [esp + 0x48]
movzx eax, ax
cmp ecx, eax
jge 0x5f9a8f
mov byte [esp + 0x24], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x30], 0
je 0x5f9b9a
mov byte [esp + 0x24], 1
jmp 0x5f9ba5
mov esi, dword [esp + 0x80]
cmp word [esp + 0x70], 0
mov ebx, dword [esp + 0x1c]
je 0x5f9ac6
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 1]
mov word [ecx + 0x1e], ax
test byte [esp + 0xb0], 0x40
jne 0x5f9b2b
mov ecx, dword [esp + 0xa8]
lea eax, [edi + edi*4]
mov al, byte [ecx + eax*4 + 0x10]
and al, 1
cmp byte [esp + 0x2b], 0
je 0x5f9af5
mov cl, byte [esp + 0x23]
xor cl, byte [esp + 0x2a]
cmp cl, al
jne 0x5f9a77
jmp 0x5f9b2b
mov dh, al
xor dh, byte [esp + 0x23]
mov byte [esp + 0x2a], dh
je 0x5f9b26
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, [edi + edi*4]
test byte [ecx + eax*4 + 0x10], 2
je 0x5f9b53
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + 0x18]
cmp ebx, eax
jne 0x5f9a77
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 0x5f9a93
mov ebx, dword [esp + 0x2c]
jmp 0x5f9820
cmp byte [esp + 0x24], 0
je 0x5f9d28
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 0x5f9d03
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 0x5f9ce6
mov ecx, dword [esp + 0xa4]
mov esi, dword [esi]
add ecx, 0x1f0
test esi, esi
je 0x5f9c50
cmp byte [esi], 0xa7
jne 0x5f9c37
test byte [esi + 4], 0x20
jne 0x5f9c37
push dword [esi + 0x1c]
push ecx
call fcn.005e5f70
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5f9c61
test dword [esi + 4], 0x810000
jne 0x5f9c50
push esi
push ecx
call fcn.005e5d70
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5f9c61
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 0x5f9cb5
mov dword [esp + 0x84], 0
mov eax, 1
mov word [esp + 0x98], ax
mov dword [esp + 0x88], fcn.005797a0
mov dword [esp + 0x8c], 0x5cbb30
test esi, esi
je 0x5f9cb5
lea eax, [esp + 0x84]
push esi
push eax
call fcn.005e0f60
add esp, 8
cmp word [esp + 0x98], 0
je 0x5f9ce6
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
not ecx
not eax
and ecx, edi
and eax, ebx
or ecx, eax
jne 0x5f9ce6
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 0x5f9be0
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 0x5f9d40
mov edi, dword [esp + 0xa4]
jmp 0x5f9530
mov ecx, dword [esp + 0x2c]
jmp 0x5f9d07
cmp byte [ebx + 0x20], 0
je 0x5f9d5d
and eax, 0x280
cmp eax, 0x80
jne 0x5f9d4e
mov eax, dword [esp + 0x64]
cmp esi, dword [esp + 0x6c]
jne 0x5f9d5d
cmp ebp, eax
jne 0x5f9d5d
mov al, byte [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
test dl, dl
jne 0x5f9dcd
mov eax, dword [esp + 0x38]
movzx ebx, ax
dec ebx
test ebx, ebx
jle 0x5f9dda
nop dword [eax]
cmp ebx, 0x40
jge 0x5f9d94
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 0x5f9da5
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 0x5f9db5
cmp esi, edx
je 0x5f9dc0
dec ebx
test ebx, ebx
jle 0x5f9dda
mov esi, dword [esp + 0x18]
jmp 0x5f9d70
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