Function at 0x426630
Capabilities:
Get keyboard layout

Disassembly:
push 0xffffffffffffffff
push 0x531278
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x20
push esi
mov esi, ecx
push 0x5a17b0
lea ecx, [esp + 8]
call fcn.00511f59
mov eax, dword [esi + 0x851c]
mov dword [esp + 0x2c], 0
cmp eax, 0xfffffdcd
je 0x42667e
push 0x5a17b0
lea ecx, [esi + 0x8510]
call fcn.00512074
mov eax, dword [esi + 0x8518]
test eax, eax
je 0x426cad
mov eax, dword [0x5a1ed4]
test eax, eax
jne 0x426707
mov eax, dword [esi + 0x851c]
cmp eax, 0xfffffdd8
jg 0x4266df
je 0x4266fc
add eax, 0x233
cmp eax, 0xa
ja case.0x426806.117
xor ecx, ecx
mov cl, byte [eax + 0x426cf4]
jmp dword [ecx*4 + 0x426ce0]
push 0x75
jmp 0x4266fe
push 0x7e
jmp 0x4266fe
push 0x7b
jmp 0x4266fe
lea edx, [esi + 0x8510]
lea ecx, [esp + 4]
push edx
call fcn.00512024
jmp 0x426707
cmp eax, 0xfffffdd9
je 0x4266fc
cmp eax, 0xffffff83
je 0x4266f8
cmp eax, 0xffffff8a
jne case.0x426806.117
push 0x53
jmp 0x4266fe
push 0x7c
jmp 0x4266fe
push 0x74
lea ecx, [esp + 8]
call fcn.00512508
mov eax, dword [esi + 0x8518]
test eax, eax
je 0x426cad
mov eax, dword [0x5a1ed4]
test eax, eax
je 0x426cad
mov eax, dword [esi + 0x851c]
cmp eax, 0xffffff84
jg 0x4267f2
je 0x4267d5
cmp eax, 0xfffffdd7
jg 0x42679e
je 0x42678e
cmp eax, 0xfffffdcd
je 0x426779
cmp eax, 0xfffffdcf
je 0x426769
cmp eax, 0xfffffdd6
jne case.0x426806.117
push 0x7b
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0x7d
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
lea eax, [esi + 0x8510]
lea ecx, [esp + 4]
push eax
call fcn.00512024
jmp 0x426cad
push 0x75
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
cmp eax, 0xfffffdd8
je 0x4267c5
cmp eax, 0xfffffdd9
je 0x4267c5
cmp eax, 0xffffff83
jne case.0x426806.117
push 0x7c
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0x74
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0xea
lea ecx, [esp + 8]
call fcn.00512508
mov dword [esi + 0x8514], 1
jmp 0x426cad
add eax, 0x7b
cmp eax, 0xf
ja case.0x426806.117
xor ecx, ecx
mov cl, byte [eax + 0x426d1c]
jmp dword [ecx*4 + 0x426d00]
push 0x53
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0xe9
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0x65
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0x67
lea ecx, [esp + 8]
call fcn.00512508
jmp 0x426cad
push 0xec
jmp 0x4267da
mov eax, dword [0x598d50]
mov dword [esp + 0x14], eax
mov byte [esp + 0x2c], 1
mov dword [esp + 0x10], eax
mov byte [esp + 0x2c], 2
mov dword [esp + 0xc], eax
push 0x648
lea ecx, [esp + 0x18]
mov byte [esp + 0x30], 3
call fcn.00512508
push 0x96a
lea ecx, [esp + 0x14]
call fcn.00512508
push 0x96b
lea ecx, [esp + 0x10]
call fcn.00512508
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.USER32.dll_GetKeyboardLayoutNameA]
mov eax, dword [0x598d50]
mov dword [esp + 8], eax
mov ecx, dword [0x5a1f2c]
lea eax, [esp + 8]
mov byte [esp + 0x2c], 4
mov edx, dword [ecx + 0x20]
push edx
push 0x10b6
push eax
call fcn.0050a958
add esp, 0xc
lea ecx, [esp + 8]
push ecx
lea ecx, [esp + 8]
call fcn.00512024
lea edx, [esi + 0x65cc]
lea eax, [esp + 8]
push edx
push 0x10b7
push eax
call fcn.0050a958
add esp, 0xc
lea ecx, [esp + 8]
push ecx
lea ecx, [esp + 8]
call fcn.00512303
mov edx, dword [0x5a1f2c]
lea ecx, [esp + 8]
mov eax, dword [edx + 0x34]
push eax
push 0x10b8
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1f24]
mov ecx, dword [0x5a1f20]
mov edx, dword [0x5a1f1c]
push eax
mov eax, dword [0x5a1f18]
push ecx
push edx
push eax
lea ecx, [esp + 0x18]
push 0x10b9
push ecx
call fcn.0050a958
add esp, 0x18
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
lea eax, [esp + 0x18]
push eax
push 0x10ba
lea ecx, [esp + 0x10]
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1f2c]
mov ecx, dword [eax + 0x54]
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x4269a8
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c6
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1fe0]
mov ecx, dword [eax + 0x40]
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x4269dd
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c8
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [esi + 0x65b4]
test eax, eax
je 0x426a16
mov eax, dword [0x5a1f2c]
mov eax, dword [eax + 0x198]
inc eax
jmp 0x426a1f
mov ecx, dword [0x5a1f2c]
mov eax, dword [ecx + 0x50]
push eax
lea edx, [esp + 0xc]
push 0x10bb
push edx
call fcn.0050a958
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 4]
push eax
call fcn.00512303
xor ecx, ecx
lea edx, [esp + 8]
mov cx, word [esi + 0x5aaa]
push ecx
push 0x10bc
push edx
call fcn.0050a958
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 4]
push eax
call fcn.00512303
mov ecx, dword [esi + 0x5aa4]
mov edx, dword [esi + 0x5aa0]
push ecx
push edx
lea eax, [esp + 0x10]
push 0x10bd
push eax
call fcn.0050a958
add esp, 0x10
lea ecx, [esp + 8]
push ecx
lea ecx, [esp + 8]
call fcn.00512303
mov eax, dword [esi + 0x65b4]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426aaa
mov eax, dword [esp + 0xc]
push eax
lea edx, [esp + 0xc]
push 0x10be
push edx
call fcn.0050a958
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 4]
push eax
call fcn.00512303
mov ecx, dword [0x5a1f2c]
mov eax, dword [ecx + 0x3c]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426ae0
mov eax, dword [esp + 0xc]
push eax
lea edx, [esp + 0xc]
push 0x10bf
push edx
call fcn.0050a958
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 4]
push eax
call fcn.00512303
mov eax, dword [esi + 0x6780]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426b13
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c3
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [esi + 0x66d0]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426b46
mov eax, dword [esp + 0xc]
push eax
lea eax, [esp + 0xc]
push 0x10c4
push eax
call fcn.0050a958
add esp, 0xc
lea ecx, [esp + 8]
push ecx
lea ecx, [esp + 8]
call fcn.00512303
mov eax, dword [esi + 0x672c]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426b79
mov eax, dword [esp + 0xc]
push eax
lea edx, [esp + 0xc]
push 0x10c5
push edx
call fcn.0050a958
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 4]
push eax
call fcn.00512303
mov eax, dword [esi + 0x5a94]
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x426bac
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c7
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1f2c]
mov ecx, dword [eax + 0x90]
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x426be4
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c0
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1f2c]
mov ecx, dword [eax + 0x94]
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x426c1c
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c1
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
mov eax, dword [0x5a1f2c]
mov ecx, dword [eax + 0xcc]
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x426c54
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0xc]
push 0x10c2
push ecx
call fcn.0050a958
add esp, 0xc
lea edx, [esp + 8]
lea ecx, [esp + 4]
push edx
call fcn.00512303
lea ecx, [esp + 8]
mov byte [esp + 0x2c], 3
call fcn.00511eeb
lea ecx, [esp + 0xc]
mov byte [esp + 0x2c], 2
call fcn.00511eeb
lea ecx, [esp + 0x10]
mov byte [esp + 0x2c], 1
call fcn.00511eeb
lea ecx, [esp + 0x14]
mov byte [esp + 0x2c], 0
call fcn.00511eeb
lea eax, [esp + 4]
lea ecx, [esi + 0x8510]
push eax
call fcn.00512024
lea ecx, [esp + 4]
mov dword [esp + 0x2c], 0xffffffff
call fcn.00511eeb
mov ecx, dword [esp + 0x24]
pop esi
mov dword fs:[0], ecx
add esp, 0x2c
ret