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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x62c
mov eax, dword [0x43b068]
xor eax, esp
mov dword [esp + 0x628], eax
push ebx
push esi
push edi
push 0
call fcn.004144a6
add esp, 4
push eax
call fcn.00413aeb
add esp, 4
mov dword [esp + 0x2c], 0
lea eax, [esp + 0x38]
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
push eax
push 0x400
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov ebx, eax
xor esi, esi
test ebx, ebx
jle 0x40633b
movzx edi, word [esp + esi*4 + 0x38]
lea eax, [esp + 0x438]
push 0x1f4
push eax
push 2
push edi
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
lea ecx, [esp + 0x438]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0xf
lea edx, [ecx + 1]
mov byte [esp + 0x10], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4062a0
sub ecx, edx
lea eax, [esp + 0x438]
push ecx
push eax
lea ecx, [esp + 0x18]
call fcn.00401da0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], eax
je 0x4062ed
movups xmm0, xmmword [esp + 0x10]
mov dword [eax + 0x10], 0
movups xmmword [eax], xmm0
movq xmm0, qword [esp + 0x20]
movq qword [eax + 0x10], xmm0
mov dword [eax + 0x18], edi
add dword [esp + 0x30], 0x1c
jmp 0x406332
lea ecx, [esp + 0x10]
push ecx
push eax
lea ecx, [esp + 0x34]
call fcn.004076e0
mov edx, dword [esp + 0x24]
cmp edx, 0x10
jb 0x406332
mov ecx, dword [esp + 0x10]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x406328
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4069a4
push edx
push ecx
call fcn.0040eb70
add esp, 8
inc esi
cmp esi, ebx
jl 0x406264
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
cmp edi, eax
je 0x40641c
nop
push edi
lea ecx, [esp + 0x14]
call fcn.00406a50
cmp dword [esp + 0x24], 0x10
lea ecx, [esp + 0x10]
mov esi, dword [esp + 0x10]
mov ebx, dword [edi + 0x18]
cmovae ecx, esi
mov edx, dword [esp + 0x20]
push 7
push str.Russian
push ecx
mov dword [esp + 0x34], ebx
call fcn.00401ef0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x40699f
cmp dword [esp + 0x24], 0x10
lea ecx, [esp + 0x10]
mov edx, dword [esp + 0x20]
push 7
cmovae ecx, esi
push 0x437274
push ecx
call fcn.00401ef0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x40699f
cmp ebx, 0x419
je 0x40699f
cmp ebx, 0x422
je 0x40699f
cmp ebx, 0x43f
je 0x40699f
mov eax, dword [esp + 0x24]
cmp eax, 0x10
jb 0x40640f
lea ecx, [eax + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x406405
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4069a4
push ecx
push esi
call fcn.0040eb70
add esp, 8
add edi, 0x1c
cmp edi, dword [esp + 0xc]
jne 0x406350
push 1
push 0x43727c
lea ecx, [esp + 0x18]
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0xf
mov byte [esp + 0x18], 0
call fcn.00401da0
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x10]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
mov ebx, dword [esp + 0x20]
mov edx, ebx
push 1
cmovae ecx, edi
push 0x43704c
call fcn.00402150
add esp, 8
test al, al
je 0x406543
sub esp, 0x18
mov ecx, esp
push 5
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.empty
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x437288
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x43728c
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x437290
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x437294
mov byte [ecx], 0
call fcn.00401da0
call fcn.004053f0
mov esi, dword [esp + 0xb4]
add esp, 0x90
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
lea ecx, [esp + 0x10]
push 1
cmovae ecx, edi
mov edx, ebx
push 0x437044
call fcn.00402150
add esp, 8
test al, al
je 0x406639
sub esp, 0x18
mov ecx, esp
push 5
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.empty
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x437298
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x43729c
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372a0
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372a4
mov byte [ecx], 0
call fcn.00401da0
call fcn.004053f0
mov esi, dword [esp + 0xb4]
add esp, 0x90
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
lea ecx, [esp + 0x10]
push 1
cmovae ecx, edi
mov edx, ebx
push 0x4372a8
call fcn.00402150
add esp, 8
test al, al
je 0x40672f
sub esp, 0x18
mov ecx, esp
push 5
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.empty
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372ac
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372b0
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372b4
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372b8
mov byte [ecx], 0
call fcn.00401da0
call fcn.004053f0
mov esi, dword [esp + 0xb4]
add esp, 0x90
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
lea ecx, [esp + 0x10]
push 1
cmovae ecx, edi
mov edx, ebx
push 0x4372bc
call fcn.00402150
add esp, 8
test al, al
je 0x406825
sub esp, 0x18
mov ecx, esp
push 5
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.empty
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372c0
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372c4
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372c8
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372cc
mov byte [ecx], 0
call fcn.00401da0
call fcn.004053f0
mov esi, dword [esp + 0xb4]
add esp, 0x90
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
lea ecx, [esp + 0x10]
push 1
cmovae ecx, edi
mov edx, ebx
push 0x43727c
call fcn.00402150
add esp, 8
test al, al
je 0x40691b
sub esp, 0x18
mov ecx, esp
push 5
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.empty
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372d0
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372d4
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372d8
mov byte [ecx], 0
call fcn.00401da0
sub esp, 0x18
mov ecx, esp
push 3
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push 0x4372dc
mov byte [ecx], 0
call fcn.00401da0
call fcn.004053f0
mov esi, dword [esp + 0xb4]
add esp, 0x90
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp esi, 0x10
lea ecx, [esp + 0x10]
push 1
cmovae ecx, edi
mov edx, ebx
push 0x4372e0
call fcn.00402150
add esp, 8
test al, al
je 0x40699f
sub esp, 0x18
mov ecx, esp
push str.empty
call fcn.00401c10
sub esp, 0x18
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.00406a50
sub esp, 0x18
mov ecx, esp
push 0x4372e4
call fcn.00401c10
sub esp, 0x18
mov ecx, esp
push 0x4372e8
call fcn.00401c10
sub esp, 0x18
mov ecx, esp
push 0x4372ec
call fcn.00401c10
sub esp, 0x18
mov ecx, esp
push 0x4372f0
call fcn.00401c10
call fcn.004053f0
add esp, 0x90
call fcn.0040d2a0
call fcn.00413612
int3