Function at 0x422b58
Capabilities:
Get geographical location
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe68
push ebx
push esi
push edi
mov esi, eax
xor eax, eax
cmp byte [0x470af0], 0
je 0x422f41
cmp edx, 0x10d
jg 0x422b96
je 0x422ef8
sub edx, 0x1c
je 0x422bb3
sub edx, 0x35
je 0x422e55
jmp 0x422f3f
sub edx, 0x10f
je 0x422f23
sub edx, 0x172
je 0x422edc
jmp 0x422f3f
test ecx, ecx
je 0x422f3f
push 0
push 0
call sub.user32.dll_GetKeyboardLayoutList
mov esi, eax
mov eax, 0x472480
mov edx, dword [0x421654]
call fcn.00404d84
mov eax, esi
shl eax, 2
call fcn.00402680
mov ebx, eax
test ebx, ebx
je 0x422f3f
push ebx
push esi
call sub.user32.dll_GetKeyboardLayoutList
dec esi
test esi, esi
jb 0x422e49
inc esi
mov dword [ebp - 0xc], esi
xor esi, esi
movzx eax, word [ebx + esi*4]
call fcn.00422b4c
cmp ax, 4
je 0x422c2d
movzx eax, word [ebx + esi*4]
call fcn.00422b4c
cmp ax, 0x11
je 0x422c2d
movzx eax, word [ebx + esi*4]
call fcn.00422b4c
cmp ax, 0x12
jne 0x422c3f
mov eax, dword [ebx + esi*4]
push eax
call dword [0x46f620]
test al, al
je 0x422e3f
mov byte [ebp - 1], 0
mov eax, dword [0x472480]
call fcn.00404bbc
dec eax
test eax, eax
jl 0x422c72
inc eax
xor edx, edx
imul ecx, edx, 0x23
mov edi, dword [0x472480]
mov cx, word [edi + ecx*4]
cmp cx, word [ebx + esi*4]
jne 0x422c6e
mov byte [ebp - 1], 1
jmp 0x422c72
inc edx
dec eax
jne 0x422c55
cmp byte [ebp - 1], 0
jne 0x422e3f
mov eax, dword [ebx + esi*4]
mov dword [ebp - 0x98], eax
mov word [ebp - 0x198], 0
movzx eax, word [ebx + esi*4]
call fcn.00422b4c
sub ax, 4
je 0x422cb5
sub ax, 0xd
je 0x422d5e
dec ax
je 0x422d47
jmp 0x422d75
movzx eax, word [ebx + esi*4]
call fcn.00422b54
dec ax
je 0x422ce2
dec ax
jne 0x422cfc
mov ecx, 0x46f63e
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00414134
jmp 0x422dbe
mov ecx, 0x46f644
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00414134
jmp 0x422dbe
push 0x80
lea eax, [ebp - 0x198]
push eax
push 3
mov ax, word [ebx + esi*4]
xor edx, edx
call fcn.004219ac
push eax
call sub.kernel32.dll_GetLocaleInfoW
mov ax, word [ebp - 0x198]
mov word [ebp - 0x94], ax
mov ax, word [ebp - 0x196]
call fcn.00421ce4
mov word [ebp - 0x92], ax
mov word [ebp - 0x90], 0
jmp 0x422dbe
mov ecx, 0x46f64a
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00414134
jmp 0x422dbe
mov ecx, 0x46f650
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00414134
jmp 0x422dbe
push 0x80
lea eax, [ebp - 0x198]
push eax
push 3
mov ax, word [ebx + esi*4]
xor edx, edx
call fcn.004219ac
push eax
call sub.kernel32.dll_GetLocaleInfoW
mov ax, word [ebp - 0x198]
mov word [ebp - 0x94], ax
mov ax, word [ebp - 0x196]
call fcn.00421ce4
mov word [ebp - 0x92], ax
mov word [ebp - 0x90], 0
push 0x80
lea eax, [ebp - 0x198]
push eax
push 2
mov ax, word [ebx + esi*4]
xor edx, edx
call fcn.004219ac
push eax
call sub.kernel32.dll_GetLocaleInfoW
lea ecx, [ebp - 0x198]
lea eax, [ebp - 0x8e]
mov edx, 0x40
call fcn.00414134
mov word [ebp - 0x10], 0
mov eax, dword [0x472480]
call fcn.00404bbc
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
inc eax
push eax
mov eax, 0x472480
mov ecx, 1
mov edx, dword [0x421654]
call fcn.00404d78
add esp, 4
imul eax, dword [ebp - 8], 0x23
mov edx, dword [0x472480]
push esi
lea edi, [edx + eax*4]
lea esi, [ebp - 0x98]
mov ecx, 0x23
rep movsd dword es:[edi], dword [esi]
pop esi
inc esi
dec dword [ebp - 0xc]
jne 0x422c00
mov eax, ebx
call fcn.004026a0
jmp 0x422f3f
push 0
push 0x422f4c
push 0
push 0xffff
push 0x422f74
call fcn.0041480c
mov eax, esi
call fcn.004251cc
movzx ebx, ax
mov eax, esi
call fcn.00421e10
mov eax, esi
call fcn.004251cc
movzx eax, ax
cmp ebx, eax
je 0x422e9e
mov eax, esi
call fcn.004251cc
cmp ax, 0x12
sete byte [0x470ae5]
mov eax, esi
call fcn.00421ed0
cmp dword [0x46f628], 0
je 0x422ed7
call fcn.0042c4c0
push eax
call dword [0x46f5f0]
mov ebx, eax
test ebx, ebx
je 0x422ed7
xor edx, edx
mov eax, ebx
call dword [0x46f628]
push ebx
call fcn.0042c4c0
push eax
call dword [0x46f5f4]
or eax, 0xffffffff
jmp 0x422f41
push 0
push 0x422f80
push 0
push 0xffff
push 0x422f74
call fcn.0041480c
xor eax, eax
jmp 0x422f41
push 0
push 0x422fa8
push 0
push 0xffff
push 0x422f74
call fcn.0041480c
mov eax, esi
call fcn.00421f80
mov byte [0x470ad0], 1
or eax, 0xffffffff
jmp 0x422f41
push 0
push 0x422fdc
push 0
push 0xffff
push 0x422f74
call fcn.0041480c
xor eax, eax
jmp 0x422f41
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4