Function at 0x1001c660
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
push edi
test esi, esi
je 0x1001c67f
imul eax, dword [ebp + 0xc], 0x108
push eax
push 0
push esi
call fcn.100a2620
add esp, 0xc
push dword [0x10115ad4]
mov dword [ebp + 8], 0
mov dword [ebp + 0xc], 0
call dword [sym.imp.IMM32.dll_ImmGetContext]
mov edi, eax
test edi, edi
je 0x1001c6bb
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp + 8]
push eax
push edi
call dword [sym.imp.IMM32.dll_ImmGetConversionStatus]
push edi
push dword [0x10115ad4]
call dword [sym.imp.IMM32.dll_ImmReleaseContext]
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx edx, ax
xor ecx, ecx
xor eax, eax
nop word [eax + eax]
cmp word [eax + 0x1010eb40], dx
je 0x1001c6eb
add eax, 0x14
inc ecx
cmp eax, 0xd20
jb 0x1001c6d0
mov eax, 4
jmp 0x1001c6f5
lea eax, [ecx + ecx*4]
lea eax, [eax*4 + 0x1010eb44]
mov eax, dword [eax]
dec eax
cmp eax, 3
ja case.default.0x1001c701
jmp dword [eax*4 + 0x1001cae4]
test esi, esi
je 0x1001c7ac
push 0x80
push 0x100e573c
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x101100dc
add esp, 0xc
mov edx, dword [0x101100e0]
mov ecx, edx
mov eax, dword [0x101100dc]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c747
xor al, al
jmp 0x1001c755
cmp ecx, edx
je 0x1001c753
test ecx, edx
jne 0x1001c753
xor al, al
jmp 0x1001c755
mov al, 1
push 0x80
mov byte [esi + 0x104], al
add esi, 0x108
push str.IME_English
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x1011014c
mov edx, dword [0x10110150]
mov eax, dword [0x1011014c]
mov ecx, edx
add esp, 0xc
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
jne 0x1001cac8
cmp ecx, edx
je 0x1001c7a4
test ecx, edx
je 0x1001cac8
mov al, 1
mov byte [esi + 0x104], al
pop edi
mov eax, 2
pop esi
pop ebp
ret 8
test esi, esi
je 0x1001c9aa
push 0x80
push str.IME_Hiragana
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x101100ac
add esp, 0xc
mov edx, dword [0x101100b0]
mov ecx, edx
mov eax, dword [0x101100ac]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c7f6
xor al, al
jmp 0x1001c804
cmp ecx, edx
je 0x1001c802
test ecx, edx
jne 0x1001c802
xor al, al
jmp 0x1001c804
mov al, 1
push 0x80
lea edi, [esi + 0x108]
mov byte [esi + 0x104], al
push str.IME_FullWidthKatakana
push edi
call fcn.100a5922
mov dword [edi + 0x100], 0x1011016c
add esp, 0xc
mov edx, dword [0x10110170]
mov ecx, edx
mov eax, dword [0x1011016c]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c847
xor al, al
jmp 0x1001c855
cmp ecx, edx
je 0x1001c853
test ecx, edx
jne 0x1001c853
xor al, al
jmp 0x1001c855
mov al, 1
push 0x80
mov byte [edi + 0x104], al
lea edi, [esi + 0x210]
push str.IME_FullWidthAlphanumeric
push edi
call fcn.100a5922
mov dword [edi + 0x100], 0x101100fc
add esp, 0xc
mov edx, dword [0x10110100]
mov ecx, edx
mov eax, dword [0x101100fc]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c898
xor al, al
jmp 0x1001c8a6
cmp ecx, edx
je 0x1001c8a4
test ecx, edx
jne 0x1001c8a4
xor al, al
jmp 0x1001c8a6
mov al, 1
push 0x80
mov byte [edi + 0x104], al
lea edi, [esi + 0x318]
push str.IME_HalfWidthKatakana
push edi
call fcn.100a5922
mov dword [edi + 0x100], 0x101100ec
add esp, 0xc
mov edx, dword [0x101100f0]
mov ecx, edx
mov eax, dword [0x101100ec]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c8e9
xor al, al
jmp 0x1001c8f7
cmp ecx, edx
je 0x1001c8f5
test ecx, edx
jne 0x1001c8f5
xor al, al
jmp 0x1001c8f7
mov al, 1
push 0x80
mov byte [edi + 0x104], al
lea edi, [esi + 0x420]
push str.IME_HalfWidthAlphanumeric
push edi
call fcn.100a5922
mov dword [edi + 0x100], 0x1011017c
add esp, 0xc
mov edx, dword [0x10110180]
mov ecx, edx
mov eax, dword [0x1011017c]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c93a
xor al, al
jmp 0x1001c948
cmp ecx, edx
je 0x1001c946
test ecx, edx
jne 0x1001c946
xor al, al
jmp 0x1001c948
mov al, 1
push 0x80
add esi, 0x528
mov byte [edi + 0x104], al
push str.IME_English
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x101100cc
add esp, 0xc
mov edx, dword [0x101100d0]
mov ecx, edx
mov eax, dword [0x101100cc]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c99a
xor al, al
mov byte [esi + 0x104], al
mov eax, 6
pop edi
pop esi
pop ebp
ret 8
cmp ecx, edx
je 0x1001c9a2
test ecx, edx
je 0x1001c987
mov al, 1
mov byte [esi + 0x104], al
pop edi
mov eax, 6
pop esi
pop ebp
ret 8
test esi, esi
je 0x1001c7ac
push 0x80
push str.IME_Korean
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x101100bc
add esp, 0xc
mov edx, dword [0x101100c0]
mov ecx, edx
mov eax, dword [0x101100bc]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c9f4
xor al, al
jmp 0x1001ca02
cmp ecx, edx
je 0x1001ca00
test ecx, edx
jne 0x1001ca00
xor al, al
jmp 0x1001ca02
mov al, 1
push 0x80
mov byte [esi + 0x104], al
add esi, 0x108
push str.IME_English
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x1011018c
mov edx, dword [0x10110190]
mov eax, dword [0x1011018c]
jmp 0x1001c786
test esi, esi
je 0x1001c7ac
push 0x80
push 0x100e573c
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x1011013c
add esp, 0xc
mov edx, dword [0x10110140]
mov ecx, edx
mov eax, dword [0x1011013c]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001ca77
xor al, al
jmp 0x1001ca85
cmp ecx, edx
je 0x1001ca83
test ecx, edx
jne 0x1001ca83
xor al, al
jmp 0x1001ca85
mov al, 1
push 0x80
mov byte [esi + 0x104], al
add esi, 0x108
push str.IME_English
push esi
call fcn.100a5922
mov dword [esi + 0x100], 0x1011010c
add esp, 0xc
mov edx, dword [0x10110110]
mov ecx, edx
mov eax, dword [0x1011010c]
or ecx, eax
and ecx, dword [ebp + 8]
test ecx, eax
je 0x1001c798
xor al, al
mov byte [esi + 0x104], al
mov eax, 2
pop edi
pop esi
pop ebp
ret 8
pop edi
xor eax, eax
pop esi
pop ebp
ret 8