Function at 0x460e7a5c
Capabilities:
Get keyboard layout

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x408
mov eax, dword [0x460ec018]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
mov ecx, eax
call fcn.460e8e51
mov ecx, 0x46085870
mov edi, eax
call fcn.460a181c
push 0x11
movzx ecx, ax
mov ebx, 0x89
push ebx
push ecx
mov esi, 0x3a4
mov dl, 1
mov ecx, esi
call fcn.460e7d88
mov ecx, 0x460855f0
cmp edi, esi
je 0x460e7ab5
mov ecx, 0x46085850
call fcn.460a181c
push 0x11
movzx eax, ax
xor dl, dl
push 0x8a
push eax
mov ecx, esi
call fcn.460e7d88
mov ecx, 0x460856f8
cmp edi, 0x3b5
je 0x460e7ae0
mov ecx, 0x46085700
call fcn.460a181c
push 0x31
movzx esi, ax
mov dl, 1
push ebx
push esi
mov ecx, 0x3b5
call fcn.460e7d88
push 0x31
push ebx
push esi
xor dl, dl
mov ecx, 0x3b5
call fcn.460e7d88
mov ecx, 0x4608562c
cmp edi, 0x3b6
je 0x460e7b1a
mov ecx, 0x460852f0
call fcn.460a181c
push 0x36
movzx esi, ax
mov dl, 1
push ebx
push esi
mov ecx, 0x3b6
call fcn.460e7d88
push 0x36
push ebx
push esi
xor dl, dl
mov ecx, 0x3b6
call fcn.460e7d88
mov ecx, 0x46085624
cmp edi, 0x3a8
je 0x460e7b54
mov ecx, 0x46085604
call fcn.460a181c
push 0x36
movzx esi, ax
mov edi, 0x3a8
push ebx
push esi
mov dl, 1
mov ecx, edi
call fcn.460e7d88
push 0x36
push 0x8a
push esi
xor dl, dl
mov ecx, edi
call fcn.460e7d88
mov ecx, 0x46084118
call fcn.460a181c
push 0x20
movzx eax, ax
mov esi, 0x4e4
push 8
push eax
mov dl, 1
mov ecx, esi
call fcn.460e7d88
mov ebx, 0x4608405c
mov ecx, ebx
call fcn.460a181c
push 0x20
movzx eax, ax
xor dl, dl
push 0xa
push eax
mov ecx, esi
call fcn.460e7d88
mov ecx, 0x46084160
call fcn.460a181c
xor edi, edi
movzx esi, ax
push edi
push 8
push esi
push 0x2a
mov dl, 1
pop ecx
call fcn.460e7d88
push edi
push 0xa
push esi
push 0x2a
xor dl, dl
pop ecx
call fcn.460e7d88
mov ecx, 0x46084118
call fcn.460a181c
push 0x20
movzx eax, ax
mov esi, 0x4ea
push 8
push eax
mov dl, 1
mov ecx, esi
call fcn.460e7d88
mov ecx, ebx
call fcn.460a181c
push 0x20
pop ebx
push ebx
movzx eax, ax
xor dl, dl
push 0xa
push eax
mov ecx, esi
call fcn.460e7d88
call fcn.460e26fc
mov ecx, 0x460840b0
test al, al
jne 0x460e7c34
mov ecx, 0x46084118
call fcn.460a181c
push ebx
movzx eax, ax
mov esi, 0x36a
push 8
push eax
mov dl, 1
mov ecx, esi
call fcn.460e7d88
mov ecx, 0x46084100
call fcn.460a181c
push ebx
movzx eax, ax
xor dl, dl
push 0xe
push eax
mov ecx, esi
call fcn.460e7d88
mov ecx, 0x460840dc
call fcn.460a181c
push ebx
movzx esi, ax
mov ebx, 0xdeaa
push 8
push esi
mov dl, 1
mov ecx, ebx
call fcn.460e7d88
push 0x20
push 0xa
push esi
xor dl, dl
mov ecx, ebx
call fcn.460e7d88
mov ecx, 0x460840ec
call fcn.460a181c
push 0x20
movzx esi, ax
add ebx, 2
push 8
push esi
mov dl, 1
mov ecx, ebx
call fcn.460e7d88
push 0x20
push 0xa
push esi
xor dl, dl
mov ecx, ebx
call fcn.460e7d88
call fcn.460e26fc
test al, al
je 0x460e7d15
mov ecx, 0x46084130
call fcn.460a181c
push 0x20
movzx esi, ax
mov ebx, 0xe290
push 8
push esi
mov dl, 1
mov ecx, ebx
call fcn.460e7d88
push 0x20
push 0xa
push esi
xor dl, dl
mov ecx, ebx
call fcn.460e7d88
push 0x20
push 8
inc ebx
mov dl, 1
push esi
mov ecx, ebx
call fcn.460e7d88
push 0x20
push 0xa
push esi
xor dl, dl
mov ecx, ebx
call fcn.460e7d88
mov eax, 0xffff
mov word [0x460ec644], ax
lea eax, [ebp - 0x404]
push eax
push 0x100
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov esi, eax
test esi, esi
jle 0x460e7d77
movzx ecx, word [ebp + edi*4 - 0x404]
mov eax, 0x3ff
and cx, ax
call fcn.460e8e51
lea edx, [ebp - 0x408]
mov ecx, eax
call fcn.460e927e
mov ecx, dword [ebp - 0x408]
test ecx, ecx
js 0x460e7d72
mov eax, dword [ebp + edi*4 - 0x404]
mov dword [ecx*4 + 0x460ec7a0], eax
inc edi
cmp edi, esi
jl 0x460e7d38
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.460ea320
mov esp, ebp
pop ebp
ret