Function at 0x40280b
Capabilities:
Check os version
Get geographical location
Get keyboard layout
Get system information on windows

Disassembly:
push ebp
lea ebp, [esp - 0x74]
sub esp, 0x36c
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov esi, eax
lea eax, [ebp - 0xf0]
push eax
mov dword [ebp - 0xf0], 0x11c
call edi
mov ebx, eax
mov dword [ebp + 0x6c], ebx
test ebx, ebx
jne 0x402852
lea eax, [ebp - 0xf0]
push eax
mov dword [ebp - 0xf0], 0x114
call edi
mov ebx, eax
push 0x40165c
push 0x401670
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x402875
lea ecx, [ebp + 0x2c]
push ecx
call eax
jmp 0x40287f
lea eax, [ebp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [ebp + 0x7c]
mov dword [ebp + 0x70], eax
test ebx, ebx
je 0x40299a
push 0x40168c
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
mov eax, dword [ebp - 0xe0]
sub eax, 0
pop ecx
je 0x4028cc
dec eax
je 0x4028c5
dec eax
je 0x4028be
mov eax, dword [ebp - 0xe0]
push esi
mov ecx, edi
call fcn.00402766
jmp 0x4028db
push 0x401694
jmp 0x4028d1
push 0x40169c
jmp 0x4028d1
push 0x4016a8
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
pop ecx
push 0x4016b8
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
mov eax, dword [ebp - 0xec]
push esi
mov ecx, edi
call fcn.00402766
push 0x4016c4
mov eax, esi
call fcn.004027ce
mov eax, dword [ebp - 0xe8]
push esi
mov ecx, edi
call fcn.00402766
add esp, 0x10
cmp dword [ebp + 0x6c], 0
je 0x40297d
push 0x4016c8
mov eax, esi
call fcn.004027ce
movzx eax, byte [ebp + 0x2a]
pop ecx
mov ecx, eax
dec ecx
je 0x402950
dec ecx
je 0x402949
dec ecx
je 0x402942
push esi
mov ecx, edi
call fcn.00402766
jmp 0x40295f
push 0x4016dc
jmp 0x402955
push 0x4016d4
jmp 0x402955
push 0x4016e4
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
pop ecx
push 0x4016ec
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
movzx eax, word [ebp + 0x28]
push esi
mov edx, edi
call fcn.00402718
pop ecx
pop ecx
push 0x4016f8
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
pop ecx
lea eax, [ebp - 0xdc]
mov ecx, edi
call fcn.0040265c
push 0x401704
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
movzx eax, word [ebp + 0x2c]
pop ecx
test eax, eax
je 0x4029e5
cmp eax, 6
je 0x4029de
cmp eax, 9
je 0x4029d7
push esi
mov ecx, edi
call fcn.00402766
mov edi, dword [ebp + 0x70]
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [edi + eax*2]
mov dword [ebp + 0x70], eax
jmp 0x4029f5
push 0x401714
jmp 0x4029ea
push 0x401720
jmp 0x4029ea
push 0x40172c
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
pop ecx
lea eax, [ebp + 0x5c]
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x402a44
push 0x401734
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
mov eax, dword [ebp + 0x64]
sub eax, dword [ebp + 0x5c]
push esi
mov ecx, edi
call fcn.00402766
push 0x401740
mov eax, esi
call fcn.004027ce
mov eax, dword [ebp + 0x68]
sub eax, dword [ebp + 0x60]
push esi
mov ecx, edi
call fcn.00402766
add esp, 0x10
lea eax, [ebp + 0x50]
push eax
push 3
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
xor ebx, ebx
mov dword [ebp + 0x6c], eax
test eax, eax
jle 0x402a9c
movzx eax, word [ebp + ebx*4 + 0x50]
push 0x104
lea ecx, [ebp - 0x2f8]
push ecx
push 0x59
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x402a96
push 0x401744
mov eax, esi
lea edi, [ebp + 0x70]
call fcn.004027ce
lea eax, [ebp - 0x2f8]
push eax
mov eax, esi
call fcn.004027ce
pop ecx
pop ecx
inc ebx
cmp ebx, dword [ebp + 0x6c]
jl 0x402a59
mov eax, dword [ebp + 0x70]
xor ecx, ecx
mov word [eax], cx
sub eax, dword [ebp + 0x7c]
pop edi
pop esi
sar eax, 1
pop ebx
add ebp, 0x74
leave
ret