Function at 0x5c5cc0
Capabilities:
Check for vm using instruction vpcext

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x770c0540]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0x34], esi
cmp dword [edi + 0x74], 0
je 0x5c5dfc
mov eax, dword [edi]
mov esi, dword [eax + 0x74]
mov ecx, esi
call dword [0x770c3934]
mov ecx, edi
call esi
test al, al
jne 0x5c63ba
mov eax, dword [0x76eb00c0]
lea edx, [edi + 0x20]
mov dword [ebp - 0x18], eax
mov esi, 0xc
mov eax, dword [0x76eb00c4]
mov dword [ebp - 0x14], eax
mov eax, dword [0x76eb00c8]
mov dword [ebp - 0x10], eax
mov eax, dword [0x76eb00cc]
mov dword [ebp - 0xc], eax
mov eax, 0x76eb00c0
mov byte [ebp - 8], 0
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x5c62cc
add edx, 4
add eax, 4
sub esi, 4
jae 0x5c5d30
xor eax, eax
test eax, eax
je 0x5c5d6f
lea eax, [ebp - 0x18]
push eax
push 1
call dword [0x770c3810]
test eax, eax
jne 0x5c5d6f
lea eax, [edi + 0x20]
push eax
push 2
call dword [0x770c3810]
test eax, eax
jne 0x5c5d6f
mov byte [ebp - 8], 1
mov eax, dword [edi]
mov esi, dword [eax + 4]
cmp esi, 0x76f738e0
jne 0x638860
mov ecx, dword [edi + 0x74]
mov eax, dword [ecx + 0x5c]
mov dword [ebp - 0x28], eax
mov eax, dword [ecx + 0x60]
mov dword [ebp - 0x24], eax
mov eax, dword [ecx + 0x64]
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 0x68]
mov dword [ebp - 0x1c], eax
test byte [0x770c2840], 8
jne 0x638874
cmp byte [ebp - 8], 0
je 0x5c5dba
lea eax, [ebp - 0x18]
push eax
push 2
call dword [0x770c3810]
mov esi, dword [edi + 0x74]
mov ecx, esi
call 0x55b885
mov ecx, dword [esi + 0xe8]
test ecx, ecx
je 0x5c5ddd
call fcn.005c63e0
mov dword [esi + 0xe8], 0
mov ecx, dword [esi + 0x110]
test ecx, ecx
jne 0x5c63c6
mov ecx, dword [esi + 0x114]
test ecx, ecx
jne 0x63888c
mov esi, dword [ebp - 0x34]
mov ecx, dword [edi + 0x7c]
test ecx, ecx
jne 0x5c6370
cmp dword [esi + 8], 0
je 0x5c5e61
mov esi, dword [edi + 0x74]
test byte [esi + 0xc], 0x20
mov eax, dword [esi + 0x138]
jne 0x5c62b0
cmp dword [esi + 0x7c], eax
jne 0x6388a1
mov dword [esi + 0x7c], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x68]
mov dword [ebp - 0x30], eax
cmp eax, 0x76f71bb0
jne 0x5c634a
mov ecx, esi
call fcn.005c47b0
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x7c], 0
mov dword [esi + 0x138], 0
mov dword [eax + 8], 0
mov esi, dword [edi + 0x74]
mov dword [ebp - 0x34], 0
test esi, esi
je 0x5c60a2
mov ecx, dword [esi + 0xdc]
test ecx, ecx
jne 0x5c63a6
mov ecx, dword [esi + 0xe0]
test ecx, ecx
jne 0x5c63b0
mov eax, dword [edi + 0x74]
mov dword [eax + 0x138], 0
mov dword [eax + 0x160], 0
mov dword [eax + 0x164], 0
mov dword [eax + 0x168], 0
mov dword [eax + 0x16c], 0
mov dword [eax + 0x170], 0
mov dword [eax + 0x174], 0
mov dword [eax + 0x178], 0
mov dword [eax + 0x17c], 0
mov dword [eax + 0x180], 0
mov dword [eax + 0x184], 0
mov dword [eax + 0x188], 0
mov dword [eax + 0x18c], 0
mov dword [eax + 0x198], 0
mov dword [eax + 0x19c], 0
mov dword [eax + 0x190], 0
mov dword [eax + 0x194], 0
mov dword [eax + 0x1a0], 0
mov dword [eax + 0x1a4], 0
mov dword [eax + 0x1a8], 0
mov dword [eax + 0x1ac], 0
mov dword [eax + 0x1b0], 0
cmp dword [edi + 0x3c], 0
jne 0x6388c3
mov esi, dword [edi + 0x74]
mov dword [ebp - 0x38], esi
mov eax, dword [esi]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x30], eax
cmp eax, 0x76f725f0
jne 0x5c62f6
push ecx
push 0x9c3
push 0x76ea87e8
mov ecx, 0x770bfc6c
call fcn.005c6d40
mov eax, dword [esi + 0x1c0]
mov dword [ebp - 0x48], eax
or eax, 0x40000
mov dword [esi + 0x1c0], eax
sub dword [0x770bfc70], 1
jne 0x5c6008
cmp byte [0x770bfc6c], 0x13
je 0x5c6008
mov esi, dword fs:[0x18]
mov esi, dword [esi + 0xf80]
test esi, esi
je 0x5c6005
mov cl, byte [0x770bfc6c]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x16c]
mov dword [ebp - 0x30], eax
test ecx, eax
je 0x6388eb
not eax
and eax, ecx
mov dword [esi + 0x16c], eax
mov esi, dword [ebp - 0x38]
push 0x770bfc80
call dword [0x770c34f4]
call fcn.0061099b
test al, al
jne 0x6388fe
mov esi, dword [edi + 0x74]
lea eax, [esi + 0xf8]
push eax
call dword [0x770c3500]
lea eax, [esi + 0xf8]
mov dword [esi + 0xfc], 0
test eax, eax
je 0x5c604b
push eax
call dword [0x770c34fc]
mov esi, dword [edi + 0x74]
mov eax, dword [esi]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x30], eax
cmp eax, 0x76fa44e0
jne 0x5c630d
test byte [esi + 0x1c0], 2
jne 0x63896e
xor cl, cl
mov al, byte [edi + 0x90]
lea esi, [edi + 0x70]
xor al, cl
and al, 1
xor byte [edi + 0x90], al
push esi
call dword [0x770c3500]
mov eax, dword [edi + 0x74]
mov dword [ebp - 0x34], eax
mov dword [edi + 0x74], 0
test esi, esi
je 0x5c60a2
push esi
call dword [0x770c34fc]
mov al, byte [edi + 0x58]
or edx, 0xffffffff
test al, 1
je 0x5c618f
mov esi, dword [edi + 0x34]
mov eax, edx
add esi, 8
mov dword [ebp - 0x38], esi
lock xadd dword [esi + 0x28], eax
dec eax
push ecx
push 0x1fd8
push 0x76ea87c0
mov ecx, 0x770c021c
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x30], 0
call fcn.005c6d40
test byte [esi + 4], 2
jne 0x638987
xor al, al
cmp dword [ebp - 0x40], 0
mov byte [ebp - 0x29], al
jne 0x5c60fd
test al, al
jne 0x63898e
sub dword [0x770c0220], 1
jne 0x5c614b
cmp byte [0x770c021c], 0x13
je 0x5c614b
mov esi, dword fs:[0x18]
mov esi, dword [esi + 0xf80]
test esi, esi
je 0x5c6148
mov cl, byte [0x770c021c]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x16c]
mov dword [ebp - 0x3c], eax
test ecx, eax
je 0x63899d
not eax
and eax, ecx
mov dword [esi + 0x16c], eax
mov esi, dword [ebp - 0x38]
push 0x770c0230
call dword [0x770c34f4]
cmp byte [ebp - 0x29], 0
jne 0x5c6361
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0xcc]
push ecx
mov eax, dword [ecx]
mov esi, dword [eax + 8]
cmp esi, 0x76f21c80
je 0x5c6383
mov ecx, esi
call dword [0x770c3934]
call esi
and byte [edi + 0x58], 0xfe
or edx, 0xffffffff
mov al, byte [edi + 0x58]
test al, 2
je 0x5c61b7
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov ecx, dword [eax + 0x20]
dec ecx
mov dword [eax + 0x20], ecx
test dword [eax + 0xc], 0x8000
jne 0x6389bf
and byte [edi + 0x58], 0xfd
mov esi, dword [ebp - 0x34]
test esi, esi
je 0x5c629e
mov eax, dword [esi]
mov dword [ebp - 0x34], 0
mov edi, dword [eax + 4]
cmp edi, 0x76f72690
jne 0x5c6326
lea eax, [esi + 0x1b8]
lock xadd dword [eax], edx
dec edx
jne 0x5c629e
mov dword [eax], 0xde1e7edd
mov eax, dword [esi + 4]
mov dword [esi], 0x76e857d0
mov eax, dword [eax + 4]
mov dword [eax + esi + 4], 0x76e8583c
mov eax, dword [esi + 4]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x1d8]
mov dword [esi + ecx], eax
mov ecx, esi
mov eax, dword [esi + 0x1c0]
mov dword [ebp - 0x50], eax
mov dword [esi + 0x1c0], 0
call 0x5ca290
push ecx
lea eax, [ebp - 0x44]
mov ecx, 0x770c073c
push eax
call 0x5ee715
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0xffffffff
je 0x6389d4
mov eax, dword [ebp - 0x30]
add eax, 7
mov ecx, 9
and eax, 0xfffffff8
sub esi, eax
call fcn.005c6c30
test al, al
jne 0x5c638d
mov eax, dword fs:[0x30]
test dword [eax + 0x68], 0x100
jne 0x5c638d
call fcn.005c6ce0
test eax, eax
je 0x5c638d
add eax, 4
je 0x5c638d
cmp dword [eax], 0
jne 0x5c638d
mov dword [eax], esi
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call 0x60ecc0
mov esp, ebp
pop ebp
ret 4
test eax, eax
je 0x5c5e46
push eax
push 0
push dword [0x770c0ffc]
call dword [0x770c32d4]
jmp 0x5c5e46
cmp cl, byte [eax]
jne 0x5c62ec
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x5c62ec
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x5c62ec
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x5c5d45
sbb eax, eax
or eax, 1
jmp 0x5c5d47
cmp eax, 0x76f07d60
jne 0x63895c
mov ecx, esi
call fcn.0055a960
jmp 0x5c6020
cmp eax, 0x76fad2b0
jne 0x638975
mov ecx, esi
call 0x5ffeb0
mov cl, al
jmp 0x5c6070
push esi
cmp edi, 0x76f7fe50
jne 0x6389ec
call fcn.005d2a50
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call 0x60ecc0
mov esp, ebp
pop ebp
ret 4
cmp eax, 0x76f07cf0
jne 0x6388b1
mov ecx, esi
call fcn.0055a8f0
jmp 0x5c5e46
cmp dword [ebp - 0x40], 0
jne 0x5c6160
jmp 0x6389b0
push 1
mov dword [edi + 0x7c], 0
call fcn.0056c92e
jmp 0x5c5e07
call fcn.00574880
jmp 0x5c6185
mov ecx, esi
call 0x5febda
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call 0x60ecc0
mov esp, ebp
pop ebp
ret 4
call fcn.00577b2c
jmp 0x5c5e81
call fcn.00577b2c
jmp 0x5c5e8f
mov ecx, edi
call 0x53c434
jmp 0x5c5dba
push ecx
call fcn.0060a516
mov dword [esi + 0x110], 0
jmp 0x5c5deb
push ebp
dec ecx
outsb dx, byte [esi]
imul ebp, dword fs:[esi + 0x67], 0x74636552
popal
jb 0x6389b0
je 0x6389cc
dec ecx
insd dword es:[edi], dx
jb 0x638a0e
push ebp