Function at 0x10055084
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor edx, edx
push ebp
push 0x1005573e
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa8]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x100550ec
inc ebx
xor esi, esi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa8]
mov edx, esi
call fcn.100176a4
mov edi, eax
mov edx, dword [ebp - 8]
mov eax, dword [edi + 4]
call dword [edi]
test al, al
je 0x100550e8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x10055753
inc esi
dec ebx
jne 0x100550bd
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.10054f38
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx]
mov eax, ebx
cmp eax, 0x53
jg 0x100551b5
je 0x10055653
cmp eax, 0x16
jg 0x1005517c
je 0x10055418
cmp eax, 0x14
ja case.0x10055121.1
jmp dword [eax*4 + 0x10055128]
cmp eax, 0x1d
jg 0x1005519e
je 0x100556f7
sub eax, 0x1a
je 0x100556d1
sub eax, 2
je 0x10055317
jmp case.0x10055121.1
sub eax, 0x37
je 0x100552e3
sub eax, 0x13
je 0x10055434
jmp case.0x10055121.1
cmp eax, 0xb017
jg 0x1005520b
je 0x1005552b
cmp eax, 0xb000
jg 0x100551f2
je 0x100555c4
sub eax, 0x112
je 0x1005524d
add eax, 0xffffffe0
sub eax, 7
jb 0x100553ec
sub eax, 0x1e1
je 0x1005570a
jmp case.0x10055121.1
sub eax, 0xb001
je 0x100555ec
sub eax, 0x15
je 0x10055509
jmp case.0x10055121.1
cmp eax, 0xb020
jg 0x10055231
je 0x1005566d
sub eax, 0xb01a
je 0x10055614
sub eax, 5
je 0x10055653
jmp case.0x10055121.1
sub eax, 0xb031
je 0x100556a6
add eax, 0xfffffff2
sub eax, 2
jb 0x100554e8
jmp case.0x10055121.1
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
and eax, 0xfff0
sub eax, 0xf020
je 0x10055268
sub eax, 0x100
je 0x10055275
jmp 0x10055282
mov eax, dword [ebp - 4]
call fcn.100557a4
jmp 0x10055734
mov eax, dword [ebp - 4]
call fcn.10055854
jmp 0x10055734
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x10055734
call fcn.1005273c
jmp 0x10055734
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.10006c7c
test eax, eax
je 0x100552c2
push ebp
call fcn.10055038
pop ecx
jmp 0x10055734
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
mov eax, dword [ebp - 8]
mov dword [eax], 0x27
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
mov eax, dword [ebp - 4]
call fcn.10055788
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x10055734
push 0
push 0
push 0xb01a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.10006d1c
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
push ebp
call fcn.10054ffc
pop ecx
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
sbb eax, eax
inc eax
mov edx, dword [ebp - 4]
mov byte [edx + 0x9d], al
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x1005535c
mov eax, dword [ebp - 4]
call fcn.10054e9c
push 0
push 0
push 0xb000
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.10006d1c
jmp 0x10055734
mov eax, dword [ebp - 4]
call fcn.10054e8c
push 0
push 0
push 0xb001
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.10006d1c
jmp 0x10055734
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x100553b8
mov eax, dword [ebp - 4]
call fcn.10054e9c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xac]
test eax, eax
je 0x100553ac
call fcn.1004ce04
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xac], edx
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
push ebp
call fcn.10054ffc
pop ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0xac], 0
jne 0x100553df
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.1004cd50
mov edx, dword [ebp - 4]
mov dword [edx + 0xac], eax
mov eax, dword [ebp - 4]
call fcn.10054e94
jmp 0x10055734
mov esi, dword [ebp - 8]
mov esi, dword [esi + 8]
push esi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 8]
add ebx, 0xbc00
push ebx
mov eax, dword [ebp - 8]
push esi
call fcn.10006d84
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x10055734
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x10055734
mov eax, dword [ebp - 4]
mov byte [eax + 0x9c], 1
jmp 0x10055734
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
cmp dword [eax], 0xde534454
jne 0x10055734
mov eax, dword [ebp - 4]
cmp byte [eax + 0x9e], 0
je 0x10055734
mov eax, dword [ebp - 4]
cmp dword [eax + 0xa0], 0
jne 0x100554db
mov edx, 0x8000
mov eax, 0x10055764
call fcn.1000d88c
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0xa0], ebx
test ebx, ebx
je 0x100554c0
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
push 0x10055774
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa0]
push eax
call sub.user32.dll_GetMenuItemInfoA
mov esi, eax
mov ebx, esi
test esi, esi
je 0x10055734
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [eax + 8]
push edx
mov edx, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
call ebx
jmp 0x10055734
call sub.user32.dll_GetKeyboardLayout
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xa0], edx
jmp 0x10055734
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
jmp 0x10055734
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov eax, dword [ebp - 8]
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.100570e8
and eax, 0x7f
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x10055734
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.10055b3c
test al, al
je 0x10055734
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x10055734
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x10055734
mov esi, eax
mov eax, esi
call fcn.1003ce88
test eax, eax
je 0x10055734
mov eax, esi
call fcn.1003ce88
push eax
call fcn.10006c94
test eax, eax
je 0x10055734
mov eax, esi
call fcn.1003ce88
push eax
call fcn.10006c9c
test eax, eax
je 0x10055734
mov byte [0x10076cd4], 0
call fcn.10006b1c
mov ebx, eax
mov eax, esi
call fcn.1003ce88
push eax
call fcn.10006dbc
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 4]
mov edx, 0x112
mov eax, esi
call fcn.10037854
push ebx
call fcn.10006dbc
mov byte [0x10076cd4], 1
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x10055734
mov eax, dword [ebp - 4]
cmp word [eax + 0x112], 0
je 0x10055734
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x114]
call dword [ebx + 0x110]
jmp 0x10055734
mov eax, dword [ebp - 4]
cmp word [eax + 0x10a], 0
je 0x10055734
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x10c]
call dword [ebx + 0x108]
jmp 0x10055734
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.10006c7c
test eax, eax
jne 0x10055734
call fcn.10006b1c
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x30]
jne 0x10055734
xor eax, eax
call fcn.1004cea0
test eax, eax
je 0x10055734
push eax
call fcn.10006dbc
jmp 0x10055734
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov edx, dword [ebp - 8]
mov dx, word [edx + 4]
mov eax, dword [ebp - 4]
call fcn.100561bc
jmp 0x10055734
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
jne 0x1005568e
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.10055c7c
jmp 0x10055734
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.10055cd8
jmp 0x10055734
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
jne 0x100556c0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb0]
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x10055734
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xb0], eax
jmp 0x10055734
mov edx, dword [ebp - 8]
mov edx, dword [edx + 4]
mov eax, dword [0x1007ad3c]
mov eax, dword [eax]
call fcn.100417e0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.10054f90
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
mov eax, dword [0x1007bbbc]
call fcn.1005453c
push ebp
call fcn.10054ffc
pop ecx
jmp 0x10055734
call fcn.1002c118
call fcn.1002c1f8
test al, al
je 0x10055734
call fcn.1002c118
call fcn.1002c254
jmp 0x10055734
xor eax, eax
call fcn.1001d0bc
jmp 0x10055734
push ebp
call fcn.10054ffc
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x10055753
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret