Function at 0x5f9cf0
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 0x5f9d24
mov eax, dword [edi]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
jne 0x5fa67a
mov eax, dword [esp + 0xa8]
movzx eax, word [eax]
mov dword [esp + 0x38], eax
cmp eax, 0x3f
ja 0x5fa67a
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 0x5fa5e4
jb 0x5f9de8
cmp esi, dword [esp + 0x6c]
jae 0x5fa5e8
movzx eax, word [esp + 0xb4]
cmp ebx, eax
jg 0x5fa5fd
test ebx, ebx
jle 0x5f9e19
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 0x5f9e43
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 0x5f9e55
mov ecx, ebx
jmp 0x5fa5af
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], ebx
test dword [ebx + 0x2c], 0x400
jne 0x5fa5ce
and eax, 0x80
mov dword [esp + 0x70], eax
je 0x5f9e73
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 0x5fa02b
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 0x5fa002
mov esi, dword [ebx]
test esi, esi
je 0x5f9ffe
nop dword [eax]
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x5f9f0d
test eax, 0x80000
je 0x5f9ef9
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 8]
jmp 0x5f9f01
cmp byte [esi], 0x71
jne 0x5f9f05
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x5f9ee0
test esi, esi
je 0x5f9ffe
mov al, byte [esi]
cmp al, 0xa7
je 0x5f9f1b
cmp al, 0xa9
jne 0x5f9ffe
cmp dword [esi + 0x1c], edi
jne 0x5f9ffe
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.005e6770
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x5f9ffa
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x5f9f90
mov eax, dword [esp + 0x2c]
xor ecx, ecx
movzx edx, word [eax + 0x30]
test edx, edx
je 0x5f9f8c
mov eax, dword [eax + 0x38]
nop dword [eax]
cmp edi, dword [eax]
je 0x5f9f8c
inc ecx
add eax, 4
cmp ecx, edx
jl 0x5f9f80
cmp ecx, edx
jge 0x5f9ffa
test bl, 0x82
je 0x5f9fde
cmp word [esi + 0x20], 0
jl 0x5f9fde
mov eax, dword [esp + 0xa4]
mov esi, dword [eax]
mov eax, dword [esp + 0x1c]
push dword [eax]
push esi
call fcn.005af430
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x5f9fbf
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.005af870
add esp, 8
test eax, eax
je 0x5f9ffa
push dword [eax]
push dword [ebx]
call fcn.005cdec0
add esp, 8
test eax, eax
jne 0x5f9ffa
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 0x5fa006
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 0x5f9ea4
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x2c]
test eax, 0x1000
jne 0x5fa43a
test eax, 0x100
je 0x5fa057
mov dword [esp + 0x44], 0
mov ecx, 1
mov dword [esp + 0x48], 0
jmp 0x5fa093
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x44], edx
test edx, edx
je 0x5fa67a
test byte [edx + 0x38], 4
jne 0x5fa67a
cmp byte [edx + 0x36], 0
movzx ecx, word [edx + 0x32]
mov dword [esp + 0x48], ecx
movzx ecx, word [edx + 0x34]
je 0x5fa08e
mov byte [esp + 0x24], 1
test eax, 0x8000
je 0x5fa093
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 0x5fa43a
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 0x5fa12e
movzx eax, word [ebx + 0x32]
cmp edi, eax
jl 0x5fa12e
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 0x5fa101
test ecx, 0x180
je 0x5fa419
mov byte [esp + 0x24], 0
jmp 0x5fa419
test dl, cl
je 0x5fa12a
mov eax, dword [esp + 0x1c]
mov edi, dword [edi]
lea edx, [eax + 1]
cmp edx, esi
jge 0x5fa126
lea ecx, [eax + 1]
lea ecx, [ebx + ecx*4]
mov eax, dword [ecx]
cmp dword [eax], edi
je 0x5fa15d
inc edx
add ecx, 4
cmp edx, esi
jl 0x5fa118
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x5fa165
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 0x5fa16d
xor dl, dl
mov byte [esp + 0x13], dl
jmp 0x5fa12a
or ebp, 0xffffffff
mov byte [esp + 0x23], 0
mov eax, dword [esp + 0x24]
test al, al
je 0x5fa1a4
test ebp, ebp
js 0x5fa195
cmp edi, esi
jl 0x5fa1a4
mov eax, dword [ebx + 0xc]
mov ecx, ebp
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
jne 0x5fa1a4
mov byte [esp + 0x24], 0
jmp 0x5fa1a4
xor ecx, ecx
movzx eax, al
cmp ebp, 0xfffffffe
cmove eax, ecx
mov dword [esp + 0x24], eax
xor edi, edi
test dl, dl
je 0x5fa317
mov ebx, dword [esp + 0xa8]
add ebx, 8
nop dword [eax + eax]
mov ecx, dword [esp + 0x38]
movzx eax, cx
cmp edi, eax
jge 0x5fa317
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 0x5fa308
mov eax, dword [ebx]
test eax, eax
je 0x5fa308
nop
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x5fa23f
test ecx, 0x80000
je 0x5fa22b
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 8]
jmp 0x5fa233
cmp byte [eax], 0x71
jne 0x5fa237
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x5fa210
test eax, eax
je 0x5fa308
mov cl, byte [esp + 0xb0]
and cl, 0xc0
neg cl
sbb cl, cl
and byte [esp + 0x13], cl
cmp ebp, 0xffffffff
jl 0x5fa27b
mov cl, byte [eax]
cmp cl, 0xa7
je 0x5fa266
cmp cl, 0xa9
jne 0x5fa308
mov ecx, dword [esp + 0x34]
cmp dword [eax + 0x1c], ecx
jne 0x5fa308
movsx eax, word [eax + 0x20]
cmp eax, ebp
jmp 0x5fa2c2
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 0x5fa2a0
nop
test dword [ecx + 4], 0x2000
je 0x5fa2a0
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x5fa290
test dword [eax + 4], 0x2000
je 0x5fa2b0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x5fa2a0
push dword [esp + 0x34]
push ecx
push eax
push 0
call fcn.005af600
add esp, 0x10
test eax, eax
jne 0x5fa308
cmp ebp, 0xffffffff
je 0x5fa34f
mov eax, dword [esp + 0xa4]
push dword [ebx]
mov esi, dword [eax]
push esi
call fcn.005af430
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x5fa2ec
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.005cdec0
add esp, 8
test eax, eax
je 0x5fa348
inc edi
add ebx, 0x14
cmp byte [esp + 0x13], 0
jne 0x5fa1c0
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x5fa32a
mov eax, dword [esp + 0x48]
movzx eax, ax
cmp ecx, eax
jge 0x5fa32f
mov byte [esp + 0x24], 0
mov ebp, dword [esp + 0x14]
cmp byte [esp + 0x30], 0
je 0x5fa43a
mov byte [esp + 0x24], 1
jmp 0x5fa445
mov esi, dword [esp + 0x80]
cmp word [esp + 0x70], 0
mov ebx, dword [esp + 0x1c]
je 0x5fa366
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 1]
mov word [ecx + 0x1e], ax
test byte [esp + 0xb0], 0x40
jne 0x5fa3cb
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 0x5fa395
mov cl, byte [esp + 0x23]
xor cl, byte [esp + 0x2a]
cmp cl, al
jne 0x5fa317
jmp 0x5fa3cb
mov dh, al
xor dh, byte [esp + 0x23]
mov byte [esp + 0x2a], dh
je 0x5fa3c6
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 0x5fa3f3
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + 0x18]
cmp ebx, eax
jne 0x5fa317
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 0x5fa333
mov ebx, dword [esp + 0x2c]
jmp 0x5fa0c0
cmp byte [esp + 0x24], 0
je 0x5fa5c8
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 0x5fa5a3
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 0x5fa586
mov ecx, dword [esp + 0xa4]
mov esi, dword [esi]
add ecx, 0x1f0
test esi, esi
je 0x5fa4f0
cmp byte [esi], 0xa7
jne 0x5fa4d7
test byte [esi + 4], 0x20
jne 0x5fa4d7
push dword [esi + 0x1c]
push ecx
call fcn.005e6810
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5fa501
test dword [esi + 4], 0x810000
jne 0x5fa4f0
push esi
push ecx
call fcn.005e6610
add esp, 8
mov edi, eax
mov ebx, edx
jmp 0x5fa501
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 0x5fa555
mov dword [esp + 0x84], 0
mov eax, 1
mov word [esp + 0x98], ax
mov dword [esp + 0x88], fcn.0057a070
mov dword [esp + 0x8c], 0x5cc3d0
test esi, esi
je 0x5fa555
lea eax, [esp + 0x84]
push esi
push eax
call fcn.005e1800
add esp, 8
cmp word [esp + 0x98], 0
je 0x5fa586
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
not ecx
not eax
and ecx, edi
and eax, ebx
or ecx, eax
jne 0x5fa586
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 0x5fa480
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 0x5fa5e0
mov edi, dword [esp + 0xa4]
jmp 0x5f9dd0
mov ecx, dword [esp + 0x2c]
jmp 0x5fa5a7
cmp byte [ebx + 0x20], 0
je 0x5fa5fd
and eax, 0x280
cmp eax, 0x80
jne 0x5fa5ee
mov eax, dword [esp + 0x64]
cmp esi, dword [esp + 0x6c]
jne 0x5fa5fd
cmp ebp, eax
jne 0x5fa5fd
mov al, byte [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
test dl, dl
jne 0x5fa66d
mov eax, dword [esp + 0x38]
movzx ebx, ax
dec ebx
test ebx, ebx
jle 0x5fa67a
nop dword [eax]
cmp ebx, 0x40
jge 0x5fa634
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 0x5fa645
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 0x5fa655
cmp esi, edx
je 0x5fa660
dec ebx
test ebx, ebx
jle 0x5fa67a
mov esi, dword [esp + 0x18]
jmp 0x5fa610
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