Function at 0x4042a9
Capabilities:
Check os version
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf0
mov dword [ebp - 4], 0
mov dword [ebp - 0x9c], 0x94
lea eax, [ebp - 0x9c]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x8c], 1
jne 0x40439f
mov dword [ebp - 0xa4], 0
push 0xd
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0xa4], 0
je 0x40439a
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0xe4], eax
mov ecx, dword [ebp - 0xa4]
push ecx
mov edx, dword [ebp - 0xe4]
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [ebp - 0xe0], eax
lea eax, [ebp - 0xdc]
push eax
mov ecx, dword [ebp - 0xe4]
push ecx
call dword [sym.imp.GDI32.dll_GetTextMetricsA]
mov edx, dword [ebp - 0xe0]
push edx
mov eax, dword [ebp - 0xe4]
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [ebp - 0xe4]
push ecx
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edx, dword [ebp - 0xa8]
and edx, 0xff
cmp edx, 0xb2
jne 0x40437d
mov eax, dword [ebp - 4]
or al, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0xa8]
and ecx, 0xff
cmp ecx, 0xb1
jne 0x40439a
mov edx, dword [ebp - 4]
or edx, 2
mov dword [ebp - 4], edx
jmp 0x404579
cmp dword [ebp - 0x8c], 2
jne 0x404574
mov dword [ebp - 0xa0], 0x401
mov dword [ebp - 8], 0x40d
cmp dword [ebp - 0x98], 4
jne 0x40452d
push 0
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0xe8]
shl eax, 2
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [ebp - 0xf0], eax
mov ecx, dword [ebp - 0xf0]
push ecx
mov edx, dword [ebp - 0xe8]
push edx
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
push 0x21
mov eax, dword [ebp - 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x404498
push 9
mov ecx, dword [ebp - 0xa0]
push ecx
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x404498
push 0x11
mov edx, dword [ebp - 0xa0]
push edx
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x404498
mov dword [ebp - 0xec], 0
jmp 0x40445a
mov eax, dword [ebp - 0xec]
add eax, 1
mov dword [ebp - 0xec], eax
mov ecx, dword [ebp - 0xec]
cmp ecx, dword [ebp - 0xe8]
jge 0x404498
cmp dword [ebp - 0xf0], 0
je 0x404496
mov edx, dword [ebp - 0xec]
mov eax, dword [ebp - 0xf0]
xor ecx, ecx
mov cx, word [eax + edx*4]
cmp ecx, dword [ebp - 0xa0]
jne 0x404496
mov edx, dword [ebp - 4]
or edx, 1
mov dword [ebp - 4], edx
jmp 0x404498
jmp 0x40444b
push 0x21
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x40451e
push 9
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x40451e
push 0x11
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x40451e
mov dword [ebp - 0xec], 0
jmp 0x4044e3
mov eax, dword [ebp - 0xec]
add eax, 1
mov dword [ebp - 0xec], eax
mov ecx, dword [ebp - 0xec]
cmp ecx, dword [ebp - 0xe8]
jge 0x40451e
cmp dword [ebp - 0xf0], 0
je 0x40451c
mov edx, dword [ebp - 0xec]
mov eax, dword [ebp - 0xf0]
xor ecx, ecx
mov cx, word [eax + edx*4]
cmp ecx, dword [ebp - 8]
jne 0x40451c
mov edx, dword [ebp - 4]
or edx, 2
mov dword [ebp - 4], edx
jmp 0x40451e
jmp 0x4044d4
mov eax, dword [ebp - 0xf0]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp 0x404572
cmp dword [ebp - 0x98], 5
jb 0x40456d
push 1
mov ecx, dword [ebp - 0xa0]
push ecx
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x404552
mov edx, dword [ebp - 4]
or edx, 1
mov dword [ebp - 4], edx
push 1
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_IsValidLocale]
test eax, eax
je 0x40456b
mov ecx, dword [ebp - 4]
or ecx, 2
mov dword [ebp - 4], ecx
jmp 0x404572
mov eax, dword [ebp - 4]
jmp 0x40457c
jmp 0x404579
mov eax, dword [ebp - 4]
jmp 0x40457c
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret