Function at 0x10050cee
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
push ebx
push esi
mov dword [ebp - 8], 0xae5a
xor esi, esi
inc esi
mov ebx, ecx
mov dword [ebp - 0x18], esi
xor edx, edx
mov dword [ebp - 0x28], 0xfffffffc
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x34], 0xfffffff9
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x10], edx
jmp 0x10050d2e
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x40], 0xfffffffa
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 2
jl 0x10050d20
mov dword [ebp - 8], 0xffff
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 8]
sub ecx, eax
push edi
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
cmp ecx, dword [ebp - 0x40]
jl 0x10050d7c
mov byte [ebp - 1], dl
cmp byte [ebp - 1], dl
je 0x10050f30
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_EndPage]
jmp 0x10050f2e
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x14], 0x28c7fffa
mov dword [ebp - 0x20], 0x58fe4de5
mov dword [ebp - 0x28], 0x642e5f0e
mov dword [ebp - 0x34], 5
mov dword [ebp - 0x10], 0x5de082ad
mov dword [ebp - 0x30], 6
mov dword [ebp - 8], edx
cmp dword [ebp - 8], esi
jg 0x10050f30
xor ebx, ebx
mov dword [ebp - 0xc], 0xfffffffc
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x2c], esi
push 3
call fcn.1001a27b
mov dword [ebp - 0xc], ebx
jmp 0x10050de0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x54]
mov dword [eax + ecx*4], 0x55d48264
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 3
jl 0x10050dd0
mov dword [ebp - 0xc], ebx
jmp 0x10050e5b
mov dword [ebp - 0x14], ebx
jmp 0x10050dfe
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x48], 0xec02dfce
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10050df0
mov eax, dword [ebp - 0xc]
cmp dword [ebp + eax*4 - 0x40], ebx
je 0x10050e27
mov eax, dword [ebp - 0xc]
xor ecx, ecx
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
test eax, eax
mov eax, dword [ebp - 0xc]
sets cl
mov dword [ebp + eax*4 - 0x40], ecx
mov eax, dword [ebp - 0x1c]
or edx, 0xffffffff
sub edx, eax
xor ecx, ecx
add edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
cmp edx, eax
setl cl
imul eax, ecx, 0x707
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x28], 0x46552ded
inc dword [ebp - 0x10]
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], esi
jle 0x10050deb
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], esi
jg 0x10050f17
mov esi, dword [ebp - 0x54]
mov eax, dword [ebp - 8]
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x40]
test eax, eax
mov eax, dword [ebp - 0x2c]
setne cl
mov dword [ebp - 0x34], ecx
xor ecx, ecx
cmp eax, dword [esi + 4]
mov eax, dword [ebp - 0x40]
setle cl
imul eax, ecx
imul eax, eax, 0x585f
sub eax, 0x4a0c8287
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], eax
jge 0x10050eaa
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x3c]
cmp dword [ebp - 0x18], eax
jge 0x10050ebf
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 8]
xor ecx, ecx
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0xc], 0xc08f497c
mov eax, dword [ebp - 8]
mov edx, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x20]
cmp eax, 1
mov eax, dword [ebp - 0x18]
setg cl
xor ebx, ebx
imul edx, ecx
cmp edx, eax
mov eax, dword [ebp - 0xc]
setle bl
sub eax, 0x4212964f
xor ecx, ecx
cmp dword [ebp - 0x34], eax
setl cl
xor eax, eax
cmp ecx, ebx
setg al
mov dword [ebp - 0x3c], eax
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jle 0x10050e6f
xor esi, esi
xor ebx, ebx
inc esi
lea ecx, [ebp - 0x54]
call fcn.1001a2fd
inc dword [ebp - 8]
cmp dword [ebp - 8], esi
jle 0x10050db7
mov ebx, dword [ebp - 0x38]
xor edx, edx
cmp dword [ebp - 8], edx
je 0x10050f40
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], edx
jne 0x10050f42
mov esi, edx
cmp dword [ebp - 0x40], edx
je 0x10050f4c
xor eax, eax
inc eax
jmp 0x10050f4e
mov eax, edx
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
sub ecx, 0x2579
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp eax, ecx
mov eax, dword [ebp - 0x24]
setle dl
xor ecx, ecx
sub edx, eax
mov eax, dword [ebp - 0x24]
cmp edx, eax
setg cl
sub esi, ecx
cmp esi, dword [ebp - 0x24]
jle 0x10050f8f
cmp dword [ebp - 8], 0
jne 0x10050f8f
xor eax, eax
jmp 0x10050f92
xor eax, eax
inc eax
push 1
push ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x34], eax
push 0x568b
call fcn.10049fcb
add esp, 0xc
lea ecx, [ebp - 0x60]
push 4
call fcn.1001a27b
mov dword [ebp - 0x18], 0x5052061f
mov dword [ebp - 0x18], 0
jmp 0x10050fd2
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], 0xe48d327c
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 4
jl 0x10050fc2
mov dword [ebp - 0x18], 0
jmp 0x10050ffa
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10050ff7
call edi
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_SetParent]
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jle 0x10050fe1
lea ecx, [ebp - 0x60]
call fcn.1001a2fd
push ebx
call fcn.1002f3d6
pop ecx
push 3
lea ecx, [ebp - 0x6c]
mov esi, eax
call fcn.1001a27b
xor ebx, ebx
mov dword [ebp - 0x18], ebx
pop edi
jmp 0x10051033
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*4], 0xb3c692be
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x10051023
mov byte [ebp - 1], bl
cmp byte [ebp - 1], bl
je 0x1005104c
push 0x1eba
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov byte [ebp - 1], bl
cmp byte [ebp - 1], bl
je 0x1005109c
push ebx
push 0x1672
push 0x49e
push 0x90e
push 0x2605
push 0x2078
push 0x14a6
push 0x89a
push 0x2647
push 0x259f
push 0x1cb6
push 0xb7d
push 0x12e8
push 0x136a
call dword [sym.imp.GDI32.dll_CreateFontA]
lea ecx, [ebp - 0x6c]
call fcn.1001a2fd
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret