Function at 0x5c8c68
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xb
push 0
push 0
dec ecx
jne 0x5c8c70
push ebx
push esi
push edi
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x5c95d8
push dword fs:[eax]
mov dword fs:[eax], esp
mov ebx, dword [ebp - 0xc]
cmp byte [ebx + 0x30], 0
jne 0x5c8cd2
mov dl, 8
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c8cc9
lea ecx, [ebp - 0x14]
mov edx, 8
mov eax, ebx
call fcn.00470a10
lea eax, [ebp - 0x14]
mov edx, 0x5c95f4
call fcn.00406dc4
mov ecx, dword [ebp - 0x14]
mov dl, 8
mov eax, ebx
mov esi, dword [eax]
call dword [esi + 0x34]
call fcn.005c3a78
mov byte [ebx + 0x30], 1
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc8]
add eax, 4
push eax
call sub.kernel32.dll_EnterCriticalSection
xor ecx, ecx
push ebp
push 0x5c9584
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c8d3c
push 0
mov eax, dword [0x62f804]
mov eax, dword [eax]
call eax
pop ecx
lea edx, [ebp - 0x18]
call fcn.00471e10
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 8]
call fcn.00406bcc
lea eax, [ebp - 0x1c]
mov ecx, dword [ebp - 8]
mov edx, 0x5c9614
call fcn.00406e84
mov ecx, dword [ebp - 0x1c]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x34]
cmp byte [0x629fd0], 0
jne 0x5c8d61
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0xc0], 0
je 0x5c8d61
mov eax, dword [0x62f328]
mov eax, dword [eax]
call eax
mov byte [0x629fd0], 1
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x3c], 0
jne 0x5c8d94
mov eax, dword [ebp - 0xc]
call fcn.005c50f0
mov ebx, eax
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x3c], ebx
test ebx, ebx
jne 0x5c8d94
mov ecx, 0x5c9668
mov dl, 1
mov eax, dword [0x5b23c8]
call fcn.004777c0
call fcn.004051f0
xor ecx, ecx
push ebp
push 0x5c9538
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 0xc]
cmp word [eax + 0xba], 0
je 0x5c8dc1
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebx + 0xbc]
call dword [ebx + 0xb8]
mov eax, dword [0x62f024]
cmp dword [eax], 0x1010000f
jb 0x5c8e2e
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 0x94]
push eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f334]
mov eax, dword [eax]
call eax
add esp, 8
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c8e2e
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 0xc]
movzx edx, byte [eax + 0x94]
mov eax, dword [0x5b1c20]
call fcn.00483b68
mov ecx, dword [ebp - 0x24]
lea eax, [ebp - 0x20]
mov edx, 0x5c96b0
call fcn.00406e84
mov ecx, dword [ebp - 0x20]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x34]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc4]
test eax, eax
je 0x5c8e4d
test byte [eax + 0x45], 1
je 0x5c8e4d
mov edx, eax
mov eax, dword [ebp - 0xc]
call fcn.005c8a08
jmp 0x5c8ecc
push 0x5c53d4
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f53c]
mov eax, dword [eax]
call eax
add esp, 8
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f8b4]
mov eax, dword [eax]
call eax
add esp, 8
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4c]
call fcn.005cb318
test al, al
jne 0x5c8ecc
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x58]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x5c8ebe
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x54], 0
jne 0x5c8ebe
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x58]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0xc]
call fcn.005c7f40
jmp 0x5c8ecc
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x54]
mov eax, dword [ebp - 0xc]
call fcn.005c7d28
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4c]
call fcn.005cb310
test al, al
jne 0x5c8eea
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4c]
call fcn.005cb320
test al, al
je 0x5c8ef4
mov eax, dword [ebp - 0xc]
call fcn.005c767c
jmp 0x5c8f35
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x48]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x5c8f27
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x44], 0
jne 0x5c8f27
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x48]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0xc]
call fcn.005c78c4
jmp 0x5c8f35
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x44]
mov eax, dword [ebp - 0xc]
call fcn.005c7468
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4c]
call fcn.005cb320
test al, al
jne 0x5c8f94
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x60]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x5c8f80
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x5c], 0
jne 0x5c8f80
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x64], 0
jne 0x5c8f80
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x60]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0xc]
call fcn.005c7324
jmp 0x5c8f94
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 0x64]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x5c]
mov eax, dword [ebp - 0xc]
call fcn.005c6b58
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x68]
mov eax, dword [ebp - 0xc]
call fcn.005c65b8
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x6c]
mov eax, dword [ebp - 0xc]
call fcn.005c6920
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x74]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x5c8fe3
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x70], 0
jne 0x5c8fe3
lea edx, [ebp - 0x34]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x74]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0xc]
call fcn.005c8630
jmp 0x5c8ff1
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0x70]
mov eax, dword [ebp - 0xc]
call fcn.005c834c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 0x8c]
cmp al, 1
jne 0x5c902e
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
mov edx, 1
call fcn.005a996c
test eax, eax
jne 0x5c909e
push 0x5c96e8
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
jmp 0x5c909e
test al, al
jbe 0x5c909e
and eax, 0x7f
mov eax, dword [eax*4 + 0x629f98]
push eax
mov eax, dword [0x62f698]
mov eax, dword [eax]
call eax
pop ecx
mov ebx, eax
test ebx, ebx
jne 0x5c9062
push 0x5c9738
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x3c]
push ebx
push 0
push 4
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
test eax, eax
jne 0x5c9093
push 0x5c9788
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x3c]
push ebx
mov eax, dword [0x62f4b0]
mov eax, dword [eax]
call eax
pop ecx
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax + 0x84]
or ebx, 0x4000
mov eax, dword [ebp - 0xc]
cmp byte [eax + 0x41], 5
jne 0x5c90bd
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x41], 0
mov eax, dword [0x62f024]
cmp dword [eax], 0x1010000f
jb 0x5c9142
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 0x41]
mov edx, dword [ebp - 0xc]
cmp al, byte [edx + 0x42]
ja 0x5c91e3
and eax, 0x7f
mov eax, dword [eax*4 + 0x629fac]
push 0
push eax
push 0x7b
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 0x42]
mov eax, dword [eax*4 + 0x629fac]
push 0
push eax
push 0x7c
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
and ebx, 0xfdffffff
and ebx, 0xfbffffff
and ebx, 0xf7ffffff
and ebx, 0xefffffff
jmp 0x5c91e3
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 0x41]
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 0x42]
cmp al, dl
ja 0x5c91e3
and ebx, 0xfdffffff
and ebx, 0xfbffffff
and ebx, 0xf7ffffff
and ebx, 0xefffffff
test al, al
jbe 0x5c91a8
cmp al, 1
jne 0x5c9180
or ebx, 0x2000000
jmp 0x5c91a8
cmp al, 2
jne 0x5c9192
or ebx, 0x2000000
or ebx, 0x4000000
jmp 0x5c91a8
cmp al, 3
jne 0x5c91a8
or ebx, 0x2000000
or ebx, 0x4000000
or ebx, 0x10000000
cmp dl, 5
jae 0x5c91e3
test dl, dl
jne 0x5c91c5
or ebx, 0x4000000
or ebx, 0x10000000
or ebx, 0x8000000
jmp 0x5c91e3
cmp dl, 1
jne 0x5c91d8
or ebx, 0x10000000
or ebx, 0x8000000
jmp 0x5c91e3
cmp dl, 2
jne 0x5c91e3
or ebx, 0x8000000
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c9243
push 0x5c97d8
lea ecx, [ebp - 0x3c]
mov eax, dword [ebp - 0xc]
movzx edx, byte [eax + 0x41]
mov eax, dword [0x5b16b0]
call fcn.00483b68
push dword [ebp - 0x3c]
push 0x5c9804
lea ecx, [ebp - 0x40]
mov eax, dword [ebp - 0xc]
movzx edx, byte [eax + 0x42]
mov eax, dword [0x5b16b0]
call fcn.00483b68
push dword [ebp - 0x40]
lea eax, [ebp - 0x38]
mov edx, 4
call fcn.00406f68
mov ecx, dword [ebp - 0x38]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x34]
mov eax, dword [ebp - 0xc]
movzx edx, byte [eax + 0xb0]
mov eax, dword [ebp - 0xc]
call fcn.005caaf0
mov eax, dword [0x62f024]
cmp dword [eax], 0x1010000f
ja 0x5c926f
mov eax, ebx
and eax, 0x20
cmp eax, 0x20
jne 0x5c926f
and ebx, 0xffffffdf
push 0
push ebx
push 0x20
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x88], 0
je 0x5c92e0
lea eax, [ebp - 0x44]
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + 0x88]
mov ecx, 0
call fcn.00406bf4
mov eax, dword [ebp - 0x44]
call fcn.004061d8
push eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f56c]
mov eax, dword [eax]
call eax
add esp, 8
test eax, eax
jne 0x5c92f6
push 0x5c9834
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x3c]
jmp 0x5c92f6
mov ecx, 0x5c9874
mov dl, 1
mov eax, dword [0x5b23c8]
call fcn.004777c0
call fcn.004051f0
mov eax, dword [ebp - 0xc]
call fcn.005ca758
mov byte [ebp - 0xd], al
push 0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x98]
push eax
push 0x2c
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
test byte [ebp - 0xd], 0x10
jne 0x5c939a
mov eax, dword [ebp - 0xc]
push eax
push 0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f624]
mov eax, dword [eax]
call eax
add esp, 0xc
test eax, eax
jne 0x5c935a
push 0x5c98a4
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x3c]
push 0x5c58c8
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f860]
mov eax, dword [eax]
call eax
add esp, 8
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x9c]
cmp eax, 0x5000
je 0x5c939a
push 0
push eax
push 0x2a
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f5b8]
mov eax, dword [eax]
call eax
add esp, 0x10
test byte [ebp - 0xd], 2
je 0x5c9477
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xa0]
test eax, eax
jbe 0x5c93c5
push eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f9ec]
mov eax, dword [eax]
call eax
add esp, 8
push 0x5c5b38
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f8d0]
mov eax, dword [eax]
call eax
add esp, 8
push 0x5c5d28
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f89c]
mov eax, dword [eax]
call eax
add esp, 8
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5c9407
sub eax, 4
mov eax, dword [eax]
test eax, eax
jle 0x5c945a
mov eax, dword [ebp - 0xc]
add eax, 0xa4
call fcn.00407480
mov edi, eax
mov eax, dword [ebp - 0xc]
mov esi, dword [eax + 0xa4]
test esi, esi
je 0x5c942c
sub esi, 4
mov esi, dword [esi]
push esi
push edi
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x3c]
push eax
mov eax, dword [0x62f1bc]
mov eax, dword [eax]
call eax
add esp, 0xc
test eax, eax
jne 0x5c945a
push 0x5c98e8
mov cl, 1
mov edx, dword [0x5b23c8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x3c]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c9477
mov ecx, 0x5c9940
mov dl, 8
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x34]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
test al, al
je 0x5c952e
mov esi, 1
lea eax, [ebp - 4]
xor edx, edx
call fcn.00406a04
xor edi, edi
test esi, ebx
je 0x5c94c5
push dword [ebp - 4]
lea ecx, [ebp - 0x48]
mov edx, 8
mov eax, esi
call fcn.00470a10
push dword [ebp - 0x48]
push 0x5c9980
lea eax, [ebp - 4]
mov edx, 3
call fcn.00406f68
add esi, esi
inc edi
cmp edi, 0x1f
jne 0x5c949a
push 0x5c9994
lea ecx, [ebp - 0x50]
mov edx, 8
mov eax, ebx
call fcn.00470a10
push dword [ebp - 0x50]
push 0x5c99bc
push dword [ebp - 4]
lea eax, [ebp - 0x4c]
mov edx, 4
call fcn.00406f68
mov ecx, dword [ebp - 0x4c]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x34]
lea edx, [ebp - 0x58]
mov eax, dword [ebp - 0xc]
call fcn.005cadf0
mov ecx, dword [ebp - 0x58]
lea eax, [ebp - 0x54]
mov edx, 0x5c99d0
call fcn.00406e84
mov ecx, dword [ebp - 0x54]
mov dl, 8
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x34]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5c9564
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5c958b
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc8]
add eax, 4
push eax
call sub.kernel32.dll_LeaveCriticalSection
ret