Function at 0x581494
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff90
push ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
call fcn.00573a10
mov eax, dword [ebp + 0xc]
call fcn.00573a10
lea eax, [ebp - 0x70]
mov edx, dword [0x57cc04]
call fcn.00573e90
xor eax, eax
push ebp
push 0x581810
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
cmp dword [ebp - 4], 0
je 0x5817e7
cmp dword [ebp - 8], 0
je 0x5817e7
xor eax, eax
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x1d], 0
xor eax, eax
mov dword [ebp - 0x24], eax
mov al, byte [ebp + 0x1c]
mov byte [ebp - 0xf], al
xor eax, eax
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x28], eax
mov al, byte [ebp + 0x1c]
sub al, 4
jae 0x5815c6
cmp byte [ebp + 0x1c], 0
jne 0x58151b
mov byte [ebp - 0xf], 1
call fcn.0057b7d4
test al, al
je 0x58152c
mov byte [ebp + 0x1c], 3
mov byte [ebp - 0xf], 3
cmp byte [ebp - 0xf], 2
jne 0x58153b
mov dword [ebp - 0x18], 5
jmp 0x581542
mov dword [ebp - 0x18], 6
xor edx, edx
push ebp
push 0x5815b5
push dword fs:[edx]
mov dword fs:[edx], esp
lea edx, [ebp - 0x70]
mov eax, dword [ebp - 4]
call fcn.0057f320
mov dl, byte [ebp - 0x18]
lea eax, [ebp - 0x70]
call fcn.0057f5b4
cmp eax, dword [ebp - 0x18]
jb 0x58158f
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 0xf]
dec al
je 0x581583
dec al
je 0x581589
dec al
jne 0x5815a7
mov byte [ebp - 0xe], 2
jmp 0x5815a7
mov byte [ebp - 0xe], 0
jmp 0x5815a7
mov byte [ebp - 0xe], 1
jmp 0x5815a7
cmp byte [ebp + 0x1c], 0
jne 0x5815a3
cmp byte [ebp + 0x18], 1
jne 0x5815a3
mov al, byte [ebp + 0x1c]
mov byte [ebp - 0xf], al
jmp 0x5815a7
mov byte [ebp - 0x1d], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5815bc
ret
xor ebx, ebx
mov al, byte [ebp - 0xf]
dec eax
sub al, 3
jae 0x581616
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
jne 0x5815fb
push 0
mov al, byte [ebp - 0xe]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call fcn.0057f6d0
mov ebx, eax
jmp 0x581616
mov al, byte [ebp + 0x20]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call fcn.0057f6c4
mov ebx, eax
test bl, bl
jne 0x581665
cmp byte [ebp + 0x1c], 0
jne 0x581665
xor eax, eax
mov dword [ebp - 0x18], eax
xor ebx, ebx
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call fcn.00580304
test al, al
je 0x58165f
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 0x14]
push eax
call fcn.005812b8
test al, al
je 0x58165f
mov bl, 1
mov al, byte [ebp + 0x1c]
mov byte [ebp - 0xf], al
cmp byte [ebp - 0xf], 5
jne 0x581685
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call fcn.0057ff00
test eax, eax
seta bl
cmp byte [ebp - 0xf], 4
jne 0x5816a2
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call fcn.00580304
mov ebx, eax
cmp byte [ebp - 0xf], 6
jne 0x5816c3
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 0x14]
push eax
call fcn.005812b8
mov ebx, eax
mov al, byte [ebp - 0xf]
mov byte [ebp + 0x1c], al
test bl, bl
je 0x5817e7
cmp dword [0x59a9e4], 0
jne 0x5816fa
mov eax, 0x22d
call fcn.005724f4
mov dword [0x59a9e4], eax
mov eax, dword [0x59a9e4]
xor edx, edx
mov dword [eax + 0x229], edx
mov al, 1
jmp 0x581733
mov eax, dword [0x59a9e4]
mov dword [ebp - 0x1c], eax
jmp 0x581707
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x229]
test eax, eax
jne 0x581704
mov eax, 0x22d
call fcn.005724f4
mov ebx, eax
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x229], ebx
xor eax, eax
mov dword [ebx + 0x229], eax
xor eax, eax
test al, al
je 0x58173e
mov eax, dword [0x59a9e4]
jmp 0x581747
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x229]
mov ebx, eax
mov al, byte [ebp + 0x18]
mov byte [ebx + 5], al
mov al, byte [ebp + 0x1c]
mov byte [ebx + 7], al
mov eax, dword [ebp + 0x14]
mov dword [ebx + 0x20d], eax
lea eax, [ebx + 0xd]
mov edx, dword [ebp + 0x10]
mov ecx, 0xff
call fcn.005737fc
lea eax, [ebx + 0x10d]
mov edx, dword [ebp + 0xc]
mov ecx, 0xff
call fcn.005737fc
mov eax, dword [ebp - 4]
mov dword [ebx + 0x211], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 0x215], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
mov dword [ebx + 0x219], eax
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x21d], eax
mov eax, dword [ebp - 0x28]
mov dword [ebx + 0x221], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x225], eax
mov al, byte [ebp + 0x20]
mov byte [ebx + 6], al
mov al, byte [ebp - 0x24]
mov byte [ebx + 0xa], al
mov al, byte [ebp - 0x18]
mov byte [ebx + 8], al
mov al, byte [ebp - 0x14]
mov byte [ebx + 9], al
xor eax, eax
mov dword [ebx], eax
mov byte [ebx + 0xc], 0
mov byte [ebx + 0xb], 1
mov al, byte [ebp + 8]
mov byte [ebx + 4], al
mov byte [ebp - 0xd], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x581817
lea eax, [ebp - 0x70]
mov edx, dword [0x57cc04]
call fcn.00573f60
lea eax, [ebp + 0xc]
mov edx, 2
call fcn.00573590
ret