Function at 0x6ca448b0
Capabilities:
Get keyboard layout

Disassembly:
push ebx
mov ebx, eax
sub esp, 0x10
call fcn.6ca44030
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 0x34]
je 0x6ca441a0
mov eax, dword [ebx + 0x1510]
mov dword [ebx + 0x2c], 0
mov dword [esp + 0xc], 0
test eax, eax
je 0x6ca44195
cmp dword [ebx + 0x1514], 0xffffffff
je 0x6ca44195
mov edx, dword [eax]
lea ecx, [esp + 0xc]
mov dword [esp + 4], 0x6ca96d30
mov dword [esp + 8], ecx
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
test eax, eax
js 0x6ca44195
mov eax, dword [esp + 0xc]
mov ecx, dword [ebx + 0x1514]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x10]
mov dword [ebx + 0x1514], 0xffffffff
sub esp, 8
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
add esp, 0x10
pop ebx
ret
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.IMM32.DLL_ImmAssociateContext
sub esp, 8
jmp 0x6ca44123
push edi
push esi
mov esi, edx
push ebx
mov ebx, eax
sub esp, 0x1c
mov dword [eax + 0x28], 1
mov dword [esp], str.imm32.dll
call fcn.6ca60080
mov dword [ebx + 0x14f0], eax
test eax, eax
je 0x6ca44c50
mov dword [esp + 4], str.ImmLockIMC
mov dword [esp], eax
call fcn.6ca60150
mov dword [esp + 4], str.ImmUnlockIMC
mov dword [ebx + 0x14fc], eax
mov eax, dword [ebx + 0x14f0]
mov dword [esp], eax
call fcn.6ca60150
mov dword [esp + 4], str.ImmLockIMCC
mov dword [ebx + 0x1500], eax
mov eax, dword [ebx + 0x14f0]
mov dword [esp], eax
call fcn.6ca60150
mov dword [esp + 4], str.ImmUnlockIMCC
mov dword [ebx + 0x1504], eax
mov eax, dword [ebx + 0x14f0]
mov dword [esp], eax
call fcn.6ca60150
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x1508], eax
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x6ca4498d
mov dword [esp + 0x18], 0
mov edx, dword [eax]
lea ecx, [esp + 0x18]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [edx + 0x24]
sub esp, 0x10
test eax, eax
js 0x6ca4498d
mov eax, dword [esp + 0x18]
test eax, eax
je 0x6ca4498d
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
mov dword [esp], esi
call sub.IMM32.DLL_ImmGetContext
sub esp, 4
mov dword [ebx + 0x3c], eax
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.IMM32.DLL_ImmReleaseContext
mov ecx, dword [ebx + 0x3c]
sub esp, 8
test ecx, ecx
je 0x6ca44aa0
mov dword [ebx + 0x30], 1
mov esi, dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov dword [esp], 0
call esi
mov dword [ebx + 0x14ec], eax
sub esp, 4
cmp eax, dword [0x6cb1cc0c]
je 0x6ca44a04
mov edx, eax
mov dword [0x6cb1cc0c], eax
and edx, 0x3ff
cmp edx, 0x11
je 0x6ca44c68
cmp edx, 0x12
je 0x6ca44cc0
cmp edx, 4
je 0x6ca44c30
mov eax, ebx
call fcn.6ca438f0
mov dword [esp + 4], 0
mov dword [esp], str.SDL_IME_SHOW_UI
call fcn.6c942a20
mov edi, eax
test eax, eax
je 0x6ca44ab0
xor edi, edi
mov dword [ebx + 0x150c], edi
mov dword [esp], 0
call esi
mov dword [ebx + 0x14ec], eax
sub esp, 4
cmp eax, dword [0x6cb1cc0c]
je 0x6ca44a73
mov edx, eax
mov dword [0x6cb1cc0c], eax
and edx, 0x3ff
cmp edx, 0x11
je 0x6ca44c90
cmp edx, 0x12
je 0x6ca44c80
cmp edx, 4
je 0x6ca44ca0
mov edx, dword [ebx + 0x28]
test edx, edx
je 0x6ca44a90
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x6ca44a90
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
jmp 0x6ca44110
add esp, 0x1c
pop ebx
pop esi
pop edi
ret
mov dword [ebx + 0x30], 0
jmp 0x6ca44a73
lea eax, [ebx + 0x1510]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x6ca96cd0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x6ca96ce0
call dword [sym.imp.ole32.dll_CoCreateInstance]
sub esp, 0x14
test eax, eax
js 0x6ca44a2b
mov eax, dword [ebx + 0x1510]
lea ecx, [esp + 0x14]
mov edx, dword [eax]
mov dword [esp + 8], 4
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 0xc
test eax, eax
js 0x6ca44a2b
mov dword [esp], 0xc
call fcn.6c9d3a30
mov dword [esp], 0xc
mov dword [ebx + 0x1524], eax
call fcn.6c9d3a30
lea ecx, [esp + 0x18]
mov dword [ebx + 0x1528], eax
mov eax, dword [ebx + 0x1524]
mov dword [eax], 0x6ca64c90
mov eax, dword [ebx + 0x1524]
mov dword [eax + 4], 1
mov eax, dword [ebx + 0x1524]
mov dword [eax + 8], ebx
mov eax, dword [ebx + 0x1528]
mov dword [eax], 0x6ca64c80
mov eax, dword [ebx + 0x1528]
mov dword [eax + 4], 1
mov eax, dword [ebx + 0x1528]
mov dword [eax + 8], ebx
mov eax, dword [ebx + 0x1510]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x6ca96d30
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
test eax, eax
js 0x6ca44a2b
mov eax, dword [esp + 0x18]
lea ecx, [ebx + 0x1514]
mov edx, dword [eax]
mov dword [esp + 0xc], ecx
mov ecx, dword [ebx + 0x1524]
mov dword [esp + 4], 0x6ca96d50
mov dword [esp], eax
mov dword [esp + 8], ecx
call dword [edx + 0xc]
sub esp, 0x10
test eax, eax
js 0x6ca44c14
mov eax, dword [esp + 0x18]
lea ecx, [ebx + 0x1518]
mov edx, dword [eax]
mov dword [esp + 0xc], ecx
mov ecx, dword [ebx + 0x1528]
mov dword [esp + 4], 0x6ca96d60
mov dword [esp], eax
mov dword [esp + 8], ecx
call dword [edx + 0xc]
not eax
sub esp, 0x10
mov edi, eax
shr edi, 0x1f
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
jmp 0x6ca44a2b
shr ax, 0xa
cmp ax, 2
setne al
movzx eax, al
mov dword [ebx + 0x14bc], eax
jmp 0x6ca44a04
mov dword [ebx + 0x30], 0
add esp, 0x1c
pop ebx
pop esi
pop edi
jmp fcn.6c942630
mov dword [ebx + 0x14bc], 1
jmp 0x6ca44a04
mov dword [ebx + 0x14bc], 0
jmp 0x6ca44a73
mov dword [ebx + 0x14bc], 1
jmp 0x6ca44a73
shr ax, 0xa
cmp ax, 2
setne al
movzx eax, al
mov dword [ebx + 0x14bc], eax
jmp 0x6ca44a73
mov dword [ebx + 0x14bc], 0
jmp 0x6ca44a04