Function at 0x43b63c
Capabilities:
Get keyboard layout

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffe0
mov ebx, ecx
mov ebp, edx
mov esi, eax
cmp byte [esi + 0x1a8], 0
je 0x43b671
cmp byte [esi + 0x1a7], 0
je 0x43b671
cmp dword [esi + 0x17c], 0
je 0x43b671
mov eax, dword [esi + 0x17c]
mov edx, ebp
mov ecx, dword [eax]
call dword [ecx + 0x20]
mov eax, dword [esi + 0x198]
test eax, eax
je 0x43b75e
xor edi, edi
test ebx, ebx
je 0x43b694
mov edx, ebx
call fcn.004142e4
mov edi, eax
test edi, edi
jge 0x43b694
xor edi, edi
mov eax, dword [esi + 0x198]
mov eax, dword [eax + 8]
mov dword [esp], eax
cmp edi, dword [esp]
jge 0x43b75e
mov eax, dword [esi + 0x198]
mov edx, edi
call fcn.00414288
mov ebx, eax
cmp byte [ebx + 0x57], 0
jne 0x43b6d2
test byte [ebx + 0x1c], 0x10
je 0x43b754
test byte [ebx + 0x51], 4
jne 0x43b754
mov eax, dword [ebx + 0x44]
add eax, dword [ebx + 0x4c]
push eax
lea eax, [esp + 0x14]
push eax
mov ecx, dword [ebx + 0x40]
add ecx, dword [ebx + 0x48]
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x40]
call fcn.00412c68
lea eax, [esp + 0x10]
push eax
push ebp
call sub.user32.dll_GetKeyboardLayoutList
test eax, eax
je 0x43b754
test byte [esi + 0x54], 0x80
je 0x43b70a
or word [ebx + 0x54], 0x80
push ebp
call sub.user32.dll_GetMenu
mov dword [esp + 4], eax
mov ecx, dword [ebx + 0x44]
mov edx, dword [ebx + 0x40]
mov eax, ebp
call fcn.00435a4c
mov eax, dword [ebx + 0x4c]
push eax
mov eax, dword [ebx + 0x48]
push eax
push 0
push 0
push ebp
call sub.user32.dll_GetDlgItem
push 0
mov ecx, ebp
mov edx, 0xf
mov eax, ebx
call fcn.004382c4
mov eax, dword [esp + 4]
push eax
push ebp
call sub.user32.dll_GetLastActivePopup
and word [ebx + 0x54], 0xff7f
inc edi
cmp edi, dword [esp]
jl 0x43b6a9
mov eax, dword [esi + 0x19c]
test eax, eax
je 0x43b864
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x43b864
inc eax
mov dword [esp + 0xc], eax
xor edi, edi
mov eax, dword [esi + 0x19c]
mov edx, edi
call fcn.00414288
mov ebx, eax
cmp byte [ebx + 0x1a5], 0
je 0x43b859
test byte [ebx + 0x50], 0x10
je 0x43b859
cmp byte [ebx + 0x57], 0
jne 0x43b7bf
test byte [ebx + 0x1c], 0x10
je 0x43b859
test byte [ebx + 0x51], 4
jne 0x43b859
mov eax, 0x80000010
call fcn.0041ea18
push eax
call sub.user32.dll_DrawIcon
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
push eax
mov eax, dword [ebx + 0x44]
add eax, dword [ebx + 0x4c]
push eax
lea eax, [esp + 0x18]
push eax
mov ecx, dword [ebx + 0x40]
add ecx, dword [ebx + 0x48]
mov edx, dword [ebx + 0x44]
dec edx
mov eax, dword [ebx + 0x40]
dec eax
call fcn.00412c68
lea eax, [esp + 0x14]
push eax
push ebp
call fcn.00406ff0
mov eax, dword [esp + 8]
push eax
call sub.user32.dll_DrawTextA
mov eax, 0x80000014
call fcn.0041ea18
push eax
call sub.user32.dll_DrawIcon
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
push eax
mov eax, dword [ebx + 0x44]
add eax, dword [ebx + 0x4c]
inc eax
push eax
lea eax, [esp + 0x18]
push eax
mov ecx, dword [ebx + 0x40]
add ecx, dword [ebx + 0x48]
inc ecx
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x40]
call fcn.00412c68
lea eax, [esp + 0x14]
push eax
push ebp
call fcn.00406ff0
mov eax, dword [esp + 8]
push eax
call sub.user32.dll_DrawTextA
inc edi
dec dword [esp + 0xc]
jne 0x43b77f
add esp, 0x20
pop ebp
pop edi
pop esi
pop ebx
ret