Function at 0x47e0a0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x44]
call fcn.0047e2e0
cmp dword [0x57c264], 0
je 0x47e2c9
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x44]
cmp dword [ecx + eax*4 + 0x94], 0
je 0x47e2c9
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x47e0ea
xor eax, eax
jmp 0x47e2cb
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + edx*4 + 0x94]
je 0x47e2c9
mov ecx, dword [ebp - 0x44]
call fcn.004137d0
push eax
call sub.IMM32.dll_ImmGetContext
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
push edx
call sub.IMM32.dll_ImmGetOpenStatus
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x47e12e
push 0
mov eax, dword [ebp - 8]
push eax
call sub.IMM32.dll_ImmSetOpenStatus
mov ecx, dword [ebp - 8]
push ecx
mov ecx, dword [ebp - 0x44]
call fcn.004137d0
push eax
call sub.IMM32.dll_ImmReleaseContext
cmp dword [ebp + 8], 0
jl 0x47e14c
cmp dword [ebp + 8], 2
jle 0x47e15a
push 0
push 0x30
push 0x54ae84
call fcn.004e20db
push 8
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x44]
mov ecx, dword [eax + edx*4 + 0x94]
push ecx
call dword [sym.imp.USER32.dll_ActivateKeyboardLayout]
mov ecx, dword [ebp - 0x44]
call fcn.004137d0
push eax
call sub.IMM32.dll_ImmGetContext
mov dword [ebp - 8], eax
cmp dword [ebp - 0xc], 0
je 0x47e2b0
push 1
mov edx, dword [ebp - 8]
push edx
call sub.IMM32.dll_ImmSetOpenStatus
push str.JP:Text_Services_Framework
push 0x57c3a8
call fcn.00507c13
add esp, 8
test eax, eax
jne 0x47e2b0
lea eax, [ebp - 0x10]
push eax
push 0x55f5fc
push 1
push 0
push 0x55f19c
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jl 0x47e2b0
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0x18]
push ecx
push 0x55f8ec
mov edx, dword [ebp - 0x10]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x10]
push ecx
mov edx, dword [eax]
call edx
test eax, eax
jne 0x47e2a2
lea eax, [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [edx + 0xc]
call ecx
lea edx, [ebp - 0x1c]
push edx
push 0x55f30c
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x47e250
mov ecx, 3
mov word [ebp - 0x30], cx
mov dword [ebp - 0x28], 1
lea edx, [ebp - 0x30]
push edx
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [edx + 0xc]
call ecx
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x1c]
push edx
push 0x55f59c
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x47e294
mov ecx, 3
mov word [ebp - 0x40], cx
mov dword [ebp - 0x38], 9
lea edx, [ebp - 0x40]
push edx
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [edx + 0xc]
call ecx
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x18]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x18]
push ecx
mov edx, dword [eax + 8]
call edx
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x10]
push edx
mov eax, dword [ecx + 8]
call eax
mov ecx, dword [ebp - 8]
push ecx
mov ecx, dword [ebp - 0x44]
call fcn.004137d0
push eax
call sub.IMM32.dll_ImmReleaseContext
mov eax, 1
jmp 0x47e2cb
xor eax, eax
mov esp, ebp
pop ebp
ret 4