Function at 0x4523e0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x529eb1
mov eax, dword fs:[0]
push eax
sub esp, 0x584
mov eax, dword [0x578750]
xor eax, ebp
mov dword [ebp - 0x1c], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x588], ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0xdc
call fcn.0041e140
mov ecx, dword [ebp - 0x588]
add ecx, 0x168
call fcn.0041e140
mov ecx, dword [ebp - 0x588]
add ecx, 0x1f4
call fcn.0041e140
mov ecx, dword [ebp - 0x588]
add ecx, 0xf0
call fcn.0041e140
mov ecx, dword [ebp - 0x588]
add ecx, 0x17c
call fcn.0041e140
mov ecx, dword [ebp - 0x588]
add ecx, 0x208
call fcn.0041e140
lea eax, [ebp - 0x574]
push eax
push 0x65
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov dword [ebp - 0x580], eax
cmp dword [ebp - 0x580], 0x64
jle 0x45249f
mov dword [ebp - 0x580], 0x64
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x578], 0
mov dword [ebp - 0x18], 0
jmp 0x4524c9
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x18]
cmp edx, dword [ebp - 0x580]
jge 0x4529c6
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + eax*4 - 0x574]
and ecx, 0xffff
cmp ecx, 0x804
je 0x452520
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + edx*4 - 0x574]
and eax, 0xffff
cmp eax, 0x404
je 0x452520
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + ecx*4 - 0x574]
and edx, 0xffff
cmp edx, 0x411
je 0x452520
jmp 0x4524c0
push 0x104
lea eax, [ebp - 0x24c]
push eax
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + ecx*4 - 0x574]
push edx
call sub.IMM32.dll_ImmGetIMEFileNameW
lea eax, [ebp - 0x24c]
push eax
call fcn.00504c07
add esp, 4
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jne 0x452559
jmp 0x4524c0
xor ecx, ecx
mov word [ebp - 0x3dc], cx
mov dword [ebp - 0x57c], 0
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + edx*4 - 0x574]
and eax, 0xffff
cmp eax, 0x804
jne 0x4526b0
push 0x31
lea ecx, [ebp - 0x314]
push ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + edx*4 - 0x574]
push eax
call sub.IMM32.dll_ImmGetDescriptionW
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x314]
push ecx
push 0
push 0x3a8
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x57c], eax
cmp dword [ebp - 0x57c], 0x64
jle 0x4525d6
mov dword [ebp - 0x57c], 0x64
cmp dword [ebp - 0x57c], 0
je 0x45260f
lea edx, [ebp - 0x314]
push edx
lea eax, [ebp - 0x3dc]
push eax
call fcn.00504ae3
add esp, 8
lea ecx, [ebp - 0x3dc]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0xdc
call fcn.0041e160
jmp 0x452627
lea edx, [ebp - 0x314]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0xdc
call fcn.0041e160
lea eax, [ebp - 0x24c]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0xf0
call fcn.0041e160
push 0x540c2c
mov ecx, dword [ebp - 0x588]
add ecx, 0x80
call fcn.00423260
mov ecx, dword [ebp - 0x40]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0xf0
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x78
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x4526a2
mov edx, dword [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x80
call fcn.0041e270
mov eax, dword [ebp - 0x40]
add eax, 1
mov dword [ebp - 0x40], eax
jmp 0x4529c1
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + ecx*4 - 0x574]
and edx, 0xffff
cmp edx, 0x404
jne 0x4527f6
push 0x31
lea eax, [ebp - 0x314]
push eax
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + ecx*4 - 0x574]
push edx
call sub.IMM32.dll_ImmGetDescriptionW
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x314]
push eax
push 0
push 0x3b6
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x57c], eax
cmp dword [ebp - 0x57c], 0x64
jle 0x45271c
mov dword [ebp - 0x57c], 0x64
cmp dword [ebp - 0x57c], 0
je 0x452755
lea ecx, [ebp - 0x314]
push ecx
lea edx, [ebp - 0x3dc]
push edx
call fcn.00504ae3
add esp, 8
lea eax, [ebp - 0x3dc]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x168
call fcn.0041e160
jmp 0x45276d
lea ecx, [ebp - 0x314]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x168
call fcn.0041e160
lea edx, [ebp - 0x24c]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x17c
call fcn.0041e160
push 0x540c30
mov ecx, dword [ebp - 0x588]
add ecx, 0x10c
call fcn.00423260
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x17c
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x7c
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x4527e8
mov ecx, dword [ebp - 0x14]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x10c
call fcn.0041e270
mov edx, dword [ebp - 0x14]
add edx, 1
mov dword [ebp - 0x14], edx
jmp 0x4529c1
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + eax*4 - 0x574]
and ecx, 0xffff
cmp ecx, 0x411
jne 0x4529c1
push 5
lea edx, [ebp - 0x24c]
push edx
push 0x540c34
call fcn.005079c9
add esp, 0xc
test eax, eax
jne 0x452831
jmp 0x4524c0
push 5
lea eax, [ebp - 0x24c]
push eax
push 0x540c4c
call fcn.005079c9
add esp, 0xc
test eax, eax
jne 0x452850
jmp 0x4524c0
push 0x31
lea ecx, [ebp - 0x314]
push ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + edx*4 - 0x574]
push eax
call sub.IMM32.dll_ImmGetDescriptionW
movzx ecx, byte [0x57c864]
test ecx, ecx
je 0x4528a9
push str.Microsoft_Office_IME_2007
lea edx, [ebp - 0x314]
push edx
call fcn.00507c13
add esp, 8
test eax, eax
je 0x4528a4
push str.Microsoft_Office_IME_2010
lea eax, [ebp - 0x314]
push eax
call fcn.00507c13
add esp, 8
test eax, eax
jne 0x4528a9
jmp 0x4524c0
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x314]
push ecx
push 0
push 0x3a4
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x57c], eax
cmp dword [ebp - 0x57c], 0x64
jle 0x4528e0
mov dword [ebp - 0x57c], 0x64
cmp dword [ebp - 0x57c], 0
je 0x452919
lea edx, [ebp - 0x314]
push edx
lea eax, [ebp - 0x3dc]
push eax
call fcn.00504ae3
add esp, 8
lea ecx, [ebp - 0x3dc]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x1f4
call fcn.0041e160
jmp 0x452931
lea edx, [ebp - 0x314]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x1f4
call fcn.0041e160
lea eax, [ebp - 0x24c]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x208
call fcn.0041e160
push 0x540ccc
mov ecx, dword [ebp - 0x588]
add ecx, 0x198
call fcn.00423260
mov ecx, dword [ebp - 0x578]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x208
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x74
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x4529b2
mov edx, dword [ebp - 0x578]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x198
call fcn.0041e270
mov eax, dword [ebp - 0x578]
add eax, 1
mov dword [ebp - 0x578], eax
jmp 0x4524c0
lea ecx, [ebp - 0x10]
call fcn.00401b80
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], 0
jmp 0x4529e7
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x18], 0x64
jge 0x452dbe
push 0xa
lea edx, [ebp - 0x3c]
push edx
mov eax, dword [ebp - 0x18]
add eax, 1
push eax
call fcn.005095af
add esp, 0xc
lea ecx, [ebp - 0x3c]
push ecx
push 0x540cd0
push reloc.TranslateMemoryCJ.dll_Ordinal_1
lea edx, [ebp - 0x584]
push edx
call fcn.00465760
add esp, 0x10
mov dword [ebp - 0x58c], eax
mov eax, dword [ebp - 0x58c]
mov dword [ebp - 0x590], eax
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x590]
push ecx
lea ecx, [ebp - 0x10]
call fcn.00413820
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x584]
call fcn.004d61e0
push 0x540bbb
lea edx, [ebp - 0x10]
push edx
call fcn.00421790
add esp, 8
movzx eax, al
test eax, eax
je 0x452a74
jmp 0x452dbe
push str.00000804
lea ecx, [ebp - 0x10]
push ecx
call fcn.00421790
add esp, 8
movzx edx, al
test edx, edx
je 0x452b87
push 1
mov ecx, dword [ebp - 0x588]
call fcn.00452270
test eax, eax
je 0x452b87
push str.GB:Text_Services_Framework
mov ecx, dword [ebp - 0x588]
add ecx, 0x78
call fcn.004d6200
push eax
call fcn.00507c13
add esp, 8
test eax, eax
jne 0x452adf
mov eax, dword [ebp - 0x588]
add eax, 0x42c
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x78
call fcn.00402b30
mov ecx, dword [ebp - 0x588]
add ecx, 0x42c
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0xdc
call fcn.0041e160
mov edx, dword [ebp - 0x588]
add edx, 0x42c
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0xf0
call fcn.0041e160
push 0x540d44
mov ecx, dword [ebp - 0x588]
add ecx, 0x80
call fcn.00423260
mov eax, dword [ebp - 0x40]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0xf0
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x78
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x452b7e
mov ecx, dword [ebp - 0x40]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x80
call fcn.0041e270
mov edx, dword [ebp - 0x40]
add edx, 1
mov dword [ebp - 0x40], edx
push str.00000404
lea eax, [ebp - 0x10]
push eax
call fcn.00421790
add esp, 8
movzx ecx, al
test ecx, ecx
je 0x452c9a
push 2
mov ecx, dword [ebp - 0x588]
call fcn.00452270
test eax, eax
je 0x452c9a
push str.BIG5:Text_Services_Framework
mov ecx, dword [ebp - 0x588]
add ecx, 0x7c
call fcn.004d6200
push eax
call fcn.00507c13
add esp, 8
test eax, eax
jne 0x452bf3
mov edx, dword [ebp - 0x588]
add edx, 0x62c
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x7c
call fcn.00402b30
mov eax, dword [ebp - 0x588]
add eax, 0x62c
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x168
call fcn.0041e160
mov ecx, dword [ebp - 0x588]
add ecx, 0x62c
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x17c
call fcn.0041e160
push 0x540d90
mov ecx, dword [ebp - 0x588]
add ecx, 0x10c
call fcn.00423260
mov edx, dword [ebp - 0x14]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x17c
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x7c
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x452c91
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x10c
call fcn.0041e270
mov ecx, dword [ebp - 0x14]
add ecx, 1
mov dword [ebp - 0x14], ecx
push str.00000411
lea edx, [ebp - 0x10]
push edx
call fcn.00421790
add esp, 8
movzx eax, al
test eax, eax
je 0x452db9
push 0
mov ecx, dword [ebp - 0x588]
call fcn.00452270
test eax, eax
je 0x452db9
push 0x540da0
mov ecx, dword [ebp - 0x588]
add ecx, 0x74
call fcn.004d6200
push eax
call fcn.00507c13
add esp, 8
test eax, eax
jne 0x452d06
mov ecx, dword [ebp - 0x588]
add ecx, 0x22c
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x74
call fcn.00402b30
mov edx, dword [ebp - 0x588]
add edx, 0x22c
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x1f4
call fcn.0041e160
mov eax, dword [ebp - 0x588]
add eax, 0x22c
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x208
call fcn.0041e160
push 0x540dd8
mov ecx, dword [ebp - 0x588]
add ecx, 0x198
call fcn.00423260
mov ecx, dword [ebp - 0x578]
push ecx
mov ecx, dword [ebp - 0x588]
add ecx, 0x208
call fcn.004485b0
mov ecx, eax
call fcn.004d6200
push eax
mov ecx, dword [ebp - 0x588]
add ecx, 0x74
call fcn.004d6200
push eax
call fcn.00507b80
add esp, 8
test eax, eax
jne 0x452daa
mov edx, dword [ebp - 0x578]
push edx
mov ecx, dword [ebp - 0x588]
add ecx, 0x198
call fcn.0041e270
mov eax, dword [ebp - 0x578]
add eax, 1
mov dword [ebp - 0x578], eax
jmp 0x4529de
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x10]
call fcn.004d61e0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x1c]
xor ecx, ebp
call fcn.00504a55
mov esp, ebp
pop ebp
ret