Function at 0x450afc
Capabilities:
Get keyboard layout

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffc0
mov ebp, edx
mov esi, eax
mov eax, dword [esi + 0x2c8]
mov eax, dword [eax + 0x58]
call fcn.00414b74
mov ebx, eax
mov eax, 0x477ac8
xor edi, edi
push eax
call sub.user32.dll_GetKeyboardLayoutNameA
mov eax, ebp
mov edx, dword [0x4345a0]
call fcn.00402ef0
cmp byte [eax + 0x2c], 0
jne 0x450b3e
mov dl, 1
call fcn.00436768
mov eax, ebp
mov edx, dword [0x4345a0]
call fcn.00402ef0
mov eax, dword [eax + 0xc]
sub eax, 0x259
je 0x450b6b
dec eax
je 0x450bcc
dec eax
je 0x450c2a
dec eax
je 0x450c87
jmp 0x450ce2
push esi
mov esi, 0x450e4c
lea edi, [esp + 4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
push esi
mov esi, 0x450e58
lea edi, [esp + 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
push esi
mov esi, 0x450e64
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop esi
push esi
mov esi, 0x450e70
lea edi, [esp + 0x34]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
mov edi, 9
xor ebx, ebx
mov dword [0x477024], 0x18
mov eax, 0x477054
mov edx, 0x450e80
call fcn.00403954
jmp 0x450ce2
push esi
mov esi, 0x450e4c
lea edi, [esp + 4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
push esi
mov esi, 0x450e88
lea edi, [esp + 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450e94
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450ea0
lea edi, [esp + 0x34]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
mov edi, 7
xor ebx, ebx
mov dword [0x477024], 9
mov eax, 0x477054
mov edx, 0x450eb0
call fcn.00403954
jmp 0x450ce2
push esi
mov esi, 0x450e4c
lea edi, [esp + 4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
push esi
mov esi, 0x450eb8
lea edi, [esp + 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450ec4
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450ed0
lea edi, [esp + 0x34]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop esi
mov edi, 0x19
mov bl, 0xcc
mov dword [0x477024], 9
mov eax, 0x477054
mov edx, 0x450ee4
call fcn.00403954
jmp 0x450ce2
push esi
mov esi, 0x450e4c
lea edi, [esp + 4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
push esi
mov esi, 0x450eec
lea edi, [esp + 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450ef8
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push esi
mov esi, 0x450f04
lea edi, [esp + 0x34]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop esi
mov edi, 0x1f
mov bl, 0xa2
mov dword [0x477024], 9
mov eax, 0x477054
mov edx, 0x450f18
call fcn.00403954
push 9
mov ecx, 0x477abc
lea edx, [edi + 0x400]
mov eax, esi
call fcn.00450f9c
mov eax, 0x477abc
mov edx, 0x477ac8
mov ecx, 0xa
call fcn.004029f8
jne 0x450d19
cmp byte [0x458bb0], 0
je 0x450e43
push 1
push 0x477abc
call sub.user32.dll_LoadKeyboardLayoutA
test eax, eax
jne 0x450d9d
mov eax, 0x450f28
call fcn.0044a830
mov al, byte [0x477aa0]
dec al
je 0x450d4a
dec al
je 0x450d59
dec al
je 0x450d68
dec al
je 0x450d77
jmp 0x450d84
mov dl, 1
mov eax, dword [esi + 0x3ec]
call fcn.00436768
jmp 0x450d84
mov dl, 1
mov eax, dword [esi + 0x3f0]
call fcn.00436768
jmp 0x450d84
mov dl, 1
mov eax, dword [esi + 0x3f4]
call fcn.00436768
jmp 0x450d84
mov dl, 1
mov eax, dword [esi + 0x3f8]
call fcn.00436768
mov eax, ebp
mov edx, dword [0x4345a0]
call fcn.00402ef0
xor edx, edx
call fcn.004367bc
jmp 0x450e43
push esi
lea esi, [esp + 4]
mov edi, 0x476fe4
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0x2c8]
mov eax, dword [eax + 0x58]
mov edx, ebx
call fcn.00414b7c
mov eax, dword [esi + 0x384]
mov eax, dword [eax + 0x58]
mov edx, ebx
call fcn.00414b7c
mov eax, ebp
mov edx, dword [0x4345a0]
call fcn.00402ef0
mov al, byte [eax + 0xc]
sub al, 0x58
mov byte [0x477aa0], al
mov al, byte [0x477aa0]
cmp al, byte [0x47702e]
jne 0x450e02
xor edx, edx
mov dl, byte [0x477aa0]
mov eax, esi
call fcn.00456cd4
xor edx, edx
mov dl, byte [0x477aa0]
mov eax, esi
call fcn.00453fbc
mov eax, esi
call fcn.00451298
mov eax, dword [esi + 0x2e0]
cmp byte [eax + 0x2d], 0
je 0x450e3c
mov al, byte [0x477324]
mov byte [0x4772e6], al
mov byte [0x4772e7], 4
mov byte [0x458be0], 1
mov eax, esi
call fcn.00451784
add esp, 0x40
pop ebp
pop edi
pop esi
pop ebx
ret