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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xb8
cmp word [ebp + 0x10], 0
xorps xmm0, xmm0
push esi
push edi
mov edi, ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x40], 0
movlpd qword [esp + 0x90], xmm0
mov eax, dword [edi]
mov eax, dword [eax]
mov dword [esp + 0x88], eax
je 0x5c9ebc
test byte [eax + 0x3c], 0x80
je 0x5c9ebc
xor al, al
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movzx eax, word [edx]
mov dword [esp + 0x9c], eax
cmp eax, 0x3f
ja 0x5c9eb4
movzx ecx, ax
xor edx, edx
xor esi, esi
movlpd qword [esp + 0x68], xmm0
mov eax, ecx
movlpd qword [esp + 0x78], xmm0
bts edx, eax
mov byte [esp + 0x28], 1
cmp eax, 0x20
mov dword [esp + 0x34], ecx
mov dword [esp + 0x48], 0
cmovae esi, edx
xor edx, esi
cmp eax, 0x40
mov eax, dword [esp + 0x6c]
cmovae esi, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x68]
add edx, 0xffffffff
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x7c]
adc esi, 0xffffffff
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x74]
cmp edx, eax
ja 0x5ca74f
jb 0x5c9f6d
cmp esi, dword [esp + 0x98]
jae 0x5ca756
movzx eax, word [ebp + 0x10]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x48], eax
jg 0x5ca74b
cmp dword [esp + 0x48], 0
mov edi, dword [esp + 0x24]
jle 0x5c9fb8
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x80]
or ecx, dword [edi + 8]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x84]
or ecx, dword [edi + 0xc]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x48], eax
jge 0x5c9fd5
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x48]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 0x1c]
jmp 0x5c9fd8
mov eax, dword [ebp + 0x14]
test dword [eax + 0x24], 0x400
mov dword [esp + 0x40], eax
jne 0x5ca745
mov edx, eax
movzx eax, byte [edx + 0x10]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
shl ecx, 4
mov edi, dword [ecx + eax + 0x38]
xor eax, eax
mov dword [esp + 0x5c], edi
mov dword [esp + 0x50], eax
cmp dword [esp + 0x34], eax
jle 0x5ca15d
xor esi, esi
mov dword [esp + 0x2c], esi
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x68], ecx
cmovae edx, ecx
and ecx, dword [esp + 0x1c]
mov eax, edx
mov dword [esp + 0x78], edx
and eax, dword [esp + 0x18]
or ecx, eax
jne 0x5ca13d
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 4]
mov esi, dword [esi + eax]
test esi, esi
je 0x5ca075
mov eax, dword [esi + 4]
test eax, 0x1000
je 0x5ca075
test eax, 0x40000
je 0x5ca06e
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 4]
mov esi, dword [eax]
jmp 0x5ca071
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x5ca053
cmp byte [esi], 0x9a
jne 0x5ca13d
cmp dword [esi + 0x1c], edi
jne 0x5ca13d
mov eax, dword [esp + 0x84]
mov edx, edi
mov ecx, dword [esp + 0x80]
not eax
push 0
push 0x182
not ecx
push eax
movsx eax, word [esi + 0x20]
push ecx
mov ecx, dword [esp + 0x34]
push eax
add ecx, 0x148
call fcn.005ce3f0
mov edi, eax
add esp, 0x14
test edi, edi
je 0x5ca139
test byte [edi + 0x12], 0x82
je 0x5ca121
cmp word [esi + 0x20], 0
jl 0x5ca121
mov eax, dword [esp + 0x44]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x2c]
mov edx, dword [edx + eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
call fcn.00609480
test eax, eax
jne 0x5ca0f5
mov eax, dword [esp + 0x88]
mov eax, dword [eax + 8]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov edx, dword [edi]
mov ecx, dword [eax]
call fcn.00609480
test eax, eax
jne 0x5ca112
mov eax, dword [esp + 0x88]
mov eax, dword [eax + 8]
push dword [eax]
push esi
call fcn.0063b5c0
add esp, 8
test eax, eax
jne 0x5ca139
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
or eax, dword [esp + 0x68]
or edx, dword [esp + 0x78]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x50]
add dword [esp + 0x2c], 0x18
inc eax
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x34]
jl 0x5ca016
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x24]
test eax, 0x1000
jne 0x5ca4bc
test eax, 0x100
je 0x5ca181
xor edi, edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x68], edi
lea eax, [edi + 1]
jmp 0x5ca1af
mov edi, dword [edx + 0x1c]
mov dword [esp + 0x38], edi
test edi, edi
je 0x5c9eb4
test byte [edi + 0x38], 4
jne 0x5c9eb4
movzx eax, word [edi + 0x32]
cmp byte [edi + 0x36], 0
mov dword [esp + 0x68], eax
movzx eax, word [edi + 0x34]
setne byte [esp + 0x28]
movzx eax, ax
xor cl, cl
xor esi, esi
mov byte [esp + 0x23], 0
mov byte [esp + 0x22], 0
mov dword [esp + 0x50], ecx
mov dword [esp + 0x30], esi
mov dword [esp + 0x90], eax
test eax, eax
je 0x5ca4bc
mov dword [esp + 0x60], esi
nop dword [eax + eax]
movzx ecx, word [edx + 0x18]
cmp esi, ecx
jge 0x5ca21d
cmp word [edx + 0x2a], 0
jne 0x5ca21d
mov eax, dword [edx + 0x30]
mov eax, dword [eax + esi*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x5ca21d
test eax, 0x100
mov ecx, 0
mov eax, dword [esp + 0x28]
movzx eax, al
cmove ecx, eax
mov byte [esp + 0x28], cl
jmp 0x5ca49c
test edi, edi
je 0x5ca243
mov eax, dword [edi + 4]
movsx edx, word [eax + esi*2]
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x2c], edx
mov al, byte [esi + eax]
mov byte [esp + 0x17], al
mov eax, dword [edi + 0xc]
movsx eax, word [eax + 0x20]
cmp edx, eax
jne 0x5ca24f
jmp 0x5ca248
mov byte [esp + 0x17], 0
or edx, 0xffffffff
mov dword [esp + 0x2c], edx
cmp byte [esp + 0x28], 0
je 0x5ca27c
test edx, edx
js 0x5ca27c
cmp esi, ecx
jl 0x5ca27c
mov eax, dword [edi + 0xc]
lea ecx, [edx + edx*2]
mov edx, dword [esp + 0x28]
xor esi, esi
movzx edx, dl
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0x14], 0
cmove edx, esi
mov dword [esp + 0x28], edx
xor esi, esi
mov byte [esp + 0x16], 1
xor edi, edi
mov dword [esp + 0x78], edi
nop dword [eax]
cmp esi, dword [esp + 0x34]
jge 0x5ca3ce
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x1c]
and ecx, dword [esp + 0x18]
or edx, ecx
jne 0x5ca3ba
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 4]
mov ecx, dword [edi + ecx]
test ecx, ecx
je 0x5ca2f2
nop
mov eax, dword [ecx + 4]
test eax, 0x1000
je 0x5ca2f2
test eax, 0x40000
je 0x5ca2eb
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
jmp 0x5ca2ee
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x5ca2d0
mov eax, dword [ebp + 0xc]
and eax, 0x300
neg eax
sbb al, al
and al, byte [esp + 0x16]
cmp dword [esp + 0x2c], 0xffffffff
mov dl, al
mov byte [esp + 0x16], dl
mov byte [esp + 0x3f], al
jl 0x5ca341
cmp byte [ecx], 0x9a
jne 0x5ca3be
mov edi, dword [esp + 0x5c]
cmp dword [ecx + 0x1c], edi
mov edi, dword [esp + 0x78]
mov byte [esp + 0x16], dl
jne 0x5ca3be
movsx eax, word [ecx + 0x20]
mov byte [esp + 0x16], dl
cmp eax, dword [esp + 0x2c]
jne 0x5ca3be
jmp 0x5ca366
mov eax, dword [esp + 0x38]
push dword [esp + 0x5c]
mov byte [esp + 0x1a], dl
mov eax, dword [eax + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x64]
mov edx, dword [edx + eax]
call fcn.006035b0
add esp, 4
test eax, eax
jne 0x5ca3ba
cmp dword [esp + 0x2c], 0
jl 0x5ca3fc
mov eax, dword [esp + 0x44]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x24]
mov edx, dword [edx + edi]
mov ecx, dword [eax]
call fcn.00609480
mov ecx, eax
test ecx, ecx
jne 0x5ca396
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 8]
mov al, byte [esp + 0x3f]
mov edx, dword [esp + 0x30]
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.0063b5c0
add esp, 8
test eax, eax
je 0x5ca3fc
mov dl, byte [esp + 0x16]
add edi, 0x18
inc esi
mov dword [esp + 0x78], edi
test dl, dl
jne 0x5ca290
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x5ca3e1
mov eax, dword [esp + 0x68]
movzx eax, ax
cmp ecx, eax
jge 0x5ca3e6
mov byte [esp + 0x28], 0
mov ecx, dword [esp + 0x50]
test cl, cl
je 0x5ca4bc
mov byte [esp + 0x28], 1
jmp 0x5ca4c7
test dword [ebp + 0xc], 0x100
jne 0x5ca45f
cmp byte [esp + 0x23], 0
lea ecx, [esi + esi*2]
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 4]
je 0x5ca42b
mov dl, byte [esp + 0x17]
xor dl, byte [esp + 0x22]
cmp dl, byte [eax + ecx*8 + 0xc]
sete al
test al, al
je 0x5ca3ce
jmp 0x5ca45f
mov dh, byte [eax + ecx*8 + 0xc]
xor dh, byte [esp + 0x17]
mov byte [esp + 0x22], dh
je 0x5ca45a
mov eax, dword [esp + 0x48]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [ebp + 0x18]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x23], 1
cmp dword [esp + 0x2c], 0
mov eax, 1
mov edx, dword [esp + 0x50]
movzx edx, dl
cmovl edx, eax
xor eax, eax
bts eax, esi
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x40]
xor ecx, ecx
cmp esi, 0x20
cmovae ecx, eax
xor eax, ecx
cmp esi, 0x40
mov esi, dword [esp + 0x30]
cmovae ecx, eax
or dword [esp + 0x1c], eax
or dword [esp + 0x18], ecx
add dword [esp + 0x60], 0x18
inc esi
mov dword [esp + 0x30], esi
cmp esi, dword [esp + 0x90]
jge 0x5ca3e6
mov edi, dword [esp + 0x38]
jmp 0x5ca1e0
cmp byte [esp + 0x28], 0
je 0x5ca729
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x8c]
or ecx, dword [eax + 8]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x4c]
or ecx, dword [eax + 0xc]
xor eax, eax
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x68], eax
test ecx, ecx
jle 0x5ca72d
xor edi, edi
mov dword [esp + 0x30], edi
nop
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x90], ecx
cmovae edx, ecx
and ecx, dword [esp + 0x1c]
mov eax, edx
mov dword [esp + 0x78], edx
and eax, dword [esp + 0x18]
or ecx, eax
jne 0x5ca70b
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
add ecx, 0x44
mov eax, dword [eax + 4]
mov esi, dword [edi + eax]
mov dword [esp + 0x50], esi
test esi, esi
jne 0x5ca569
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x60], eax
jmp 0x5ca618
cmp byte [esi], 0x9a
jne 0x5ca5b6
mov edx, dword [ecx]
xor eax, eax
test edx, edx
jle 0x5ca58c
mov esi, dword [esi + 0x1c]
add ecx, 4
nop dword [eax]
cmp dword [ecx], esi
je 0x5ca59f
inc eax
add ecx, 4
cmp eax, edx
jl 0x5ca580
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
jmp 0x5ca600
xor esi, esi
xor edi, edi
bts esi, eax
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
cmovae edi, esi
jmp 0x5ca600
mov edx, dword [esi + 0x10]
call fcn.005cebc0
mov ecx, dword [esp + 0x24]
mov edi, edx
mov edx, dword [esp + 0x50]
mov esi, eax
lea ecx, [ecx + 0x44]
mov edx, dword [edx + 0xc]
call fcn.005cebc0
mov ecx, dword [esp + 0x24]
or esi, eax
mov eax, dword [esp + 0x50]
or edi, edx
lea ecx, [ecx + 0x44]
test dword [eax + 4], 0x800
mov edx, dword [eax + 0x14]
je 0x5ca5f7
call fcn.005cf7e0
jmp 0x5ca5fc
call fcn.005ceb50
or esi, eax
or edi, edx
mov dword [esp + 0x60], esi
or esi, edi
mov dword [esp + 0x38], edi
jne 0x5ca6d1
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x30]
mov dword [esp + 0xb8], 0
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movq qword [esp + 0xb0], xmm0
mov byte [esp + 0xb4], 1
mov dword [esp + 0xa0], fcn.00607680
mov dword [esp + 0xa4], 0x607660
mov dword [esp + 0xb8], 0
test esi, esi
je 0x5ca6d1
lea eax, [esp + 0xa0]
push esi
push eax
call fcn.00607680
add esp, 8
test eax, eax
jne 0x5ca6c7
test dword [esi + 4], 0x4000
jne 0x5ca6c7
mov edx, dword [esi + 0xc]
lea ecx, [esp + 0xa0]
call fcn.0060b840
test eax, eax
jne 0x5ca6c7
mov edx, dword [esi + 0x10]
lea ecx, [esp + 0xa0]
call fcn.0060b840
test eax, eax
jne 0x5ca6c7
test dword [esi + 4], 0x800
lea ecx, [esp + 0xa0]
mov edx, dword [esi + 0x14]
je 0x5ca6c2
call fcn.0060b650
jmp 0x5ca6c7
call fcn.0060b800
cmp byte [esp + 0xb4], 0
je 0x5ca70b
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x4c]
not ecx
and ecx, dword [esp + 0x60]
not eax
and eax, dword [esp + 0x38]
or ecx, eax
mov edi, dword [esp + 0x30]
jne 0x5ca70b
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x90]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x78]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x68]
add edi, 0x18
mov ecx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x30], edi
cmp eax, ecx
jl 0x5ca500
jmp 0x5ca72d
mov ecx, dword [esp + 0x34]
inc dword [esp + 0x48]
cmp byte [esp + 0x28], 0
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
je 0x5ca74b
jmp 0x5c9f52
cmp byte [eax + 0x1d], 0
jne 0x5ca75c
mov eax, dword [esp + 0x74]
cmp esi, dword [esp + 0x98]
jne 0x5ca769
cmp edx, eax
jne 0x5ca769
mov al, byte [esp + 0x9c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0x28], 0
jne 0x5ca7cf
lea eax, [ecx - 1]
mov dword [esp + 0x4c], eax
test eax, eax
jle 0x5c9eb4
mov edi, dword [esp + 0x18]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov eax, ecx
adc edx, 0xffffffff
and eax, esi
mov esi, edx
and esi, edi
cmp eax, ecx
jne 0x5ca7ae
cmp esi, edx
je 0x5ca7c5
mov eax, dword [esp + 0x4c]
dec eax
mov dword [esp + 0x4c], eax
test eax, eax
jle 0x5c9eb4
mov esi, dword [esp + 0x1c]
jmp 0x5ca783
mov al, byte [esp + 0x4c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
pop edi
or al, 0xff
pop esi
mov esp, ebp
pop ebp
ret