Function at 0x423808
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff24
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0xd0], eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x423c90
push dword fs:[eax]
mov dword fs:[eax], esp
or edi, 0xffffffff
or esi, 0xffffffff
xor ebx, ebx
lea edx, [ebp - 4]
mov eax, dword [0x46faf4]
mov eax, dword [eax]
call fcn.00408da0
mov eax, dword [0x46ff50]
mov eax, dword [eax]
dec eax
je 0x423872
dec eax
je 0x4238fc
jmp case.default.0x423ac5
mov eax, dword [0x46fd84]
mov eax, dword [eax]
sub eax, 0xa
jb 0x42388a
sub eax, 0x50
jb 0x4238b6
je 0x4238f5
jmp case.default.0x423ac5
mov eax, dword [ebp - 4]
mov edx, 0x423ca8
call fcn.00404e34
je 0x4238a8
mov eax, dword [ebp - 4]
mov edx, 0x423cb4
call fcn.00404e34
jne 0x4238af
mov bl, 2
jmp case.default.0x423ac5
mov bl, 1
jmp case.default.0x423ac5
cmp dword [0x474f34], 0x4005a
jne 0x4238c9
mov bl, 5
jmp case.default.0x423ac5
mov eax, dword [ebp - 4]
mov edx, 0x423cc0
call fcn.00404e34
je 0x4238e7
mov eax, dword [ebp - 4]
mov edx, 0x423ca8
call fcn.00404e34
jne 0x4238ee
mov bl, 4
jmp case.default.0x423ac5
mov bl, 3
jmp case.default.0x423ac5
mov bl, 5
jmp case.default.0x423ac5
mov eax, dword [0x46fb28]
mov eax, dword [eax]
add eax, 0xfffffffd
cmp eax, 7
ja case.default.0x423ac5
jmp dword [eax*4 + 0x423916]
mov eax, dword [0x46fd84]
mov eax, dword [eax]
dec eax
je 0x42394f
sub eax, 4
je 0x423956
sub eax, 0x2e
je 0x42395d
jmp case.default.0x423ac5
mov bl, 6
jmp case.default.0x423ac5
mov bl, 7
jmp case.default.0x423ac5
mov bl, 8
jmp case.default.0x423ac5
mov bl, 9
jmp case.default.0x423ac5
mov eax, dword [0x46fd84]
mov eax, dword [eax]
sub eax, 1
jb 0x423981
je 0x423988
dec eax
je 0x42398f
jmp case.default.0x423ac5
mov bl, 0xa
jmp case.default.0x423ac5
mov bl, 0xb
jmp case.default.0x423ac5
mov dword [ebp - 0xcc], 0x9c
xor eax, eax
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
call fcn.00424200
push 0x59
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x4239b8
mov bl, 0xe
jmp case.default.0x423ac5
cmp word [ebp - 0x30], 0
je 0x4239dc
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x4239dc
cmp byte [ebp - 0x32], 1
jne 0x4239dc
mov bl, 0xd
jmp case.default.0x423ac5
mov bl, 0xc
jmp case.default.0x423ac5
mov eax, dword [0x46fd84]
cmp dword [eax], 2
jne 0x423ab2
lea eax, [ebp - 8]
call fcn.00423d1c
lea edx, [ebp - 0xd0]
mov eax, dword [0x46fd2c]
call fcn.00406abc
mov eax, dword [ebp - 0xd0]
mov edx, dword [ebp - 8]
call fcn.00404fe8
dec eax
je 0x423a3b
lea edx, [ebp - 0xd4]
mov eax, dword [0x46fd90]
call fcn.00406abc
mov eax, dword [ebp - 0xd4]
mov edx, dword [ebp - 8]
call fcn.00404fe8
dec eax
jne 0x423a42
mov esi, 3
jmp 0x423aba
lea edx, [ebp - 0xd8]
mov eax, dword [0x46feb8]
call fcn.00406abc
mov eax, dword [ebp - 0xd8]
mov edx, dword [ebp - 8]
call fcn.00404fe8
dec eax
je 0x423a84
lea edx, [ebp - 0xdc]
mov eax, dword [0x46fee4]
call fcn.00406abc
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 8]
call fcn.00404fe8
dec eax
jne 0x423a8b
mov esi, 2
jmp 0x423aba
call fcn.00423ec8
mov edi, eax
cmp edi, 6
jne 0x423a9e
mov esi, 4
jmp 0x423aba
cmp edi, 0xa
jne 0x423aa8
or esi, 0xffffffff
jmp 0x423aba
mov esi, dword [0x46fd84]
mov esi, dword [esi]
jmp 0x423aba
mov esi, dword [0x46fd84]
mov esi, dword [esi]
mov eax, esi
cmp eax, 4
ja case.default.0x423ac5
jmp dword [eax*4 + 0x423acc]
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423b07
cmp byte [ebp - 0x32], 1
jne 0x423b07
mov bl, 0xf
jmp case.default.0x423ac5
mov bl, 0x10
jmp case.default.0x423ac5
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423b35
cmp byte [ebp - 0x32], 1
jne 0x423b35
mov bl, 0x11
jmp case.default.0x423ac5
mov bl, 0x12
jmp case.default.0x423ac5
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423b60
cmp byte [ebp - 0x32], 1
jne 0x423b60
mov bl, 0x13
jmp case.default.0x423ac5
mov bl, 0x15
jmp case.default.0x423ac5
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423b88
cmp byte [ebp - 0x32], 1
jne 0x423b88
mov bl, 0x16
jmp case.default.0x423ac5
mov bl, 0x18
jmp case.default.0x423ac5
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423bb0
cmp byte [ebp - 0x32], 1
jne 0x423bb0
mov bl, 0x19
jmp case.default.0x423ac5
mov bl, 0x1a
jmp case.default.0x423ac5
mov edi, dword [0x46fb28]
mov edi, dword [edi]
mov esi, dword [0x46fd84]
mov esi, dword [esi]
cmp edi, 0xa
jl 0x423c65
sub edi, 0xa
jne 0x423c65
cmp esi, 0xffffffff
jne 0x423be2
call fcn.00424060
mov esi, eax
sub esi, 1
jae 0x423c65
mov dword [ebp - 0xcc], 0x9c
lea eax, [ebp - 0xcc]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x423c1b
cmp byte [ebp - 0x32], 1
jne 0x423c1b
call fcn.00423ddc
cmp eax, 0x55f0
jl 0x423c17
mov bl, 0x1d
jmp 0x423c65
mov bl, 0x19
jmp 0x423c65
push 0
lea eax, [ebp - 0xc]
push eax
mov ecx, 0x423ccc
mov edx, 0x423cd8
mov eax, 0x423cec
call fcn.004236d0
or edx, 0xffffffff
mov eax, dword [ebp - 0xc]
call fcn.00409084
sub eax, 0x647
je 0x423c57
sub eax, 0xca
je 0x423c5b
sub eax, 0xc8
je 0x423c5f
jmp 0x423c63
mov bl, 0x1a
jmp 0x423c65
mov bl, 0x1b
jmp 0x423c65
mov bl, 0x1e
jmp 0x423c65
mov bl, 0x1c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x423c97
lea eax, [ebp - 0xdc]
mov edx, 4
call fcn.00404a30
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.00404a30
ret