Function at 0x401060
Capabilities:
Check os version

Disassembly:
sub esp, 0x120
mov eax, dword [0x423ad4]
xor eax, esp
mov dword [esp + 0x11c], eax
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
lea eax, [esp + 4]
push eax
mov dword [esp + 8], 0x11c
call esi
test eax, eax
jne 0x4010b7
lea ecx, [esp + 4]
push ecx
mov dword [esp + 8], 0x114
call esi
test eax, eax
jne 0x4010b7
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
mov eax, dword [esp + 0x14]
push ebx
mov ebx, 1
cmp eax, ebx
jne 0x40114a
cmp dword [esp + 0xc], 4
jne case.default.0x401163
mov eax, dword [esp + 0x10]
test eax, eax
je 0x401131
cmp eax, 0xa
je 0x401107
xor edx, edx
cmp eax, 0x5a
setne dl
sub edx, ebx
and edx, 3
pop ebx
mov eax, edx
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
mov eax, dword [esp + 0x14]
shr eax, 0x10
sub eax, 0x45a
neg eax
sbb eax, eax
pop ebx
add eax, 3
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
mov eax, ebx
pop ebx
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp eax, 2
jne case.default.0x401163
mov eax, dword [esp + 0xc]
add eax, 0xfffffffd
cmp eax, 3
ja case.default.0x401163
jmp dword [eax*4 + 0x4013b4]
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4011c7
call fcn.00401000
test eax, eax
je 0x4011a1
xor eax, eax
cmp byte [esp + 0x122], bl
pop ebx
setne al
pop esi
add eax, 0x6b
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
xor eax, eax
cmp byte [esp + 0x122], bl
pop ebx
setne al
pop esi
add eax, 0x12
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp eax, ebx
jne 0x401216
call fcn.00401000
test eax, eax
je 0x4011fa
xor eax, eax
cmp byte [esp + 0x122], bl
pop ebx
setne al
pop esi
add eax, 0x6f
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0x14
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp eax, 2
jne 0x401266
call fcn.00401000
test eax, eax
je 0x40124a
xor eax, eax
cmp byte [esp + 0x122], bl
pop ebx
setne al
pop esi
add eax, 0x73
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0x15
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0xff
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4012ae
cmp byte [esp + 0x122], bl
pop ebx
setne al
pop esi
add eax, 0xd
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp eax, ebx
jne 0x4012dc
mov eax, dword [esp + 0x120]
and eax, 0x200
neg eax
sbb eax, eax
pop ebx
add eax, 0x10
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp eax, 2
jne case.default.0x401163
call fcn.00401000
test eax, eax
je 0x40133d
cmp byte [esp + 0x122], bl
jne 0x401321
mov eax, dword [esp + 0x120]
and eax, 0x200
neg eax
sbb eax, eax
pop ebx
add eax, 0x66
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0x67
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0x11
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
pop ebx
mov eax, 0xc
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
cmp dword [esp + 0x10], 0x33
jne case.default.0x401163
pop ebx
mov eax, 0xb
pop esi
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.0040b0f5
add esp, 0x120
ret
mov ecx, dword [esp + 0x124]
pop ebx
pop esi
xor ecx, esp
xor eax, eax
call fcn.0040b0f5
add esp, 0x120
ret