Function at 0x10009b2b
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x1006f29e
call fcn.1006ec78
sub esp, 0xd4
push ebx
mov dword [ebp - 0x20], 0x831d26ec
push esi
mov dword [ebp - 0x1c], 0x54114571
mov dword [ebp - 0x14], 0xfffffff9
push edi
mov dword [ebp - 0x54], ecx
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x2c], 0x41311e2d
mov dword [ebp - 0x28], 0x5537c57f
mov dword [ebp - 0x24], 0x74fd
push 3
mov dword [ebp - 0x40], edx
call fcn.1000ecc9
xor edx, edx
inc edx
xor ebx, ebx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x18], ebx
jmp 0x10009b9b
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x90]
mov dword [eax + ecx*4], 0xdda8db88
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x10009b88
mov byte [ebp - 0xd], bl
cmp byte [ebp - 0xd], bl
je 0x10009bd7
push ebx
push 0x433
push ebx
push ebx
push 0x966
push 0x13ab
push 0x1705
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_ExtTextOutA]
xor edx, edx
inc edx
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], ebx
jne 0x10009be8
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x1c], 0x7637
jg 0x10009bf6
cmp dword [ebp - 0x14], ebx
jne 0x10009bf8
mov edx, ebx
mov dword [ebp - 0x1c], edx
xor edx, edx
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
setne dl
mov dword [ebp - 0x28], edx
xor edx, edx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
neg ecx
cmp ecx, eax
mov eax, dword [ebp - 0x14]
setge dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x90]
setg cl
mov dword [eax + 4], ecx
lea ecx, [ebp - 0x90]
call fcn.1000f79f
push 4
pop edi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x18], edi
jmp 0x10009c70
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x28], 1
mov byte [ebp - 0xd], bl
cmp byte [ebp - 0xd], bl
je 0x10009c6d
push 0x378
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xe
je 0x10009c4c
mov byte [ebp - 0xd], bl
cmp byte [ebp - 0xd], bl
je 0x10009c90
push 0x214e
push ebx
push ebx
push 0x19ed
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
mov dword [ebp - 0x28], 0x13a9
cmp dword [ebp - 0x28], 0x53b
jge 0x10009dea
lea eax, [ebp - 0x50]
mov ecx, 0x10660630
push eax
call fcn.1000e895
mov esi, dword [ebp - 0x50]
lea ecx, [ebp - 0x4c]
push esi
call fcn.1000edb2
mov dword [ebp - 4], ebx
test esi, esi
jle 0x10009cdc
mov edi, dword [ebp - 0x4c]
mov ebx, esi
mov edx, edi
mov ecx, 0x10660630
call fcn.10013dcc
add edi, 0x18
dec ebx
jne 0x10009cca
mov eax, dword [ebp - 0x4c]
mov edi, dword [eax + 0x10]
imul edi, esi
test esi, esi
jle 0x10009dc9
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x20], esi
push eax
lea ecx, [ebp - 0x78]
call fcn.1000e782
mov byte [ebp - 4], 1
jmp 0x10009d7b
push ecx
push ecx
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x78]
call fcn.1000e852
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x78]
cmp dword [ebp - 0x64], 0x10
mov edx, eax
cmovae ecx, dword [ebp - 0x78]
movzx ecx, byte [ecx]
push ecx
lea ecx, [ebp - 0xc8]
call fcn.10013284
pop ecx
push eax
lea ecx, [ebp - 0x78]
call fcn.1000e80b
push ebx
push 1
lea ecx, [ebp - 0xc8]
call fcn.1000f2f7
xor eax, eax
lea ecx, [ebp - 0xe0]
inc eax
push ebx
push eax
mov byte [ebp - 4], al
call fcn.1000f2f7
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [eax + 0x10]
imul eax, esi
cmp ecx, eax
ja 0x10009d8c
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x78]
call fcn.10013f4e
test al, al
je 0x10009d0b
jmp 0x10009d8f
or edi, 0xffffffff
push ebx
push 1
lea ecx, [ebp - 0x78]
mov byte [ebp - 4], bl
call fcn.1000f2f7
mov eax, dword [ebp - 0x2c]
add eax, 0x18
dec dword [ebp - 0x20]
mov dword [ebp - 0x2c], eax
jne 0x10009cfc
mov eax, dword [ebp - 0x18]
cmp edi, eax
cmovl eax, edi
add dword [ebp - 0x14], 0x18
dec dword [ebp - 0x1c]
mov edi, eax
mov eax, dword [ebp - 0x4c]
jne 0x10009cf3
push edi
mov ecx, 0x10660578
call fcn.1000ea90
push eax
call fcn.100132aa
or dword [ebp - 4], 0xffffffff
pop ecx
lea ecx, [ebp - 0x4c]
call fcn.1000f80e
push 4
pop edi
mov dword [ebp - 0x24], 0xffffffff
xor edx, edx
inc edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x20], 0xb752bf39
mov dword [ebp - 0x2c], 0xffff
mov dword [ebp - 0x28], 0x25d0bc5d
mov dword [ebp - 0x30], 0xecde22f5
mov dword [ebp - 0x24], ebx
cmp dword [ebp - 0x24], 0xfffffff0
jl 0x10009ed3
mov dword [ebp - 0x30], 0xffffffff
lea ecx, [ebp - 0x84]
push edx
call fcn.1000ecc9
xor edx, edx
inc edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x14], ebx
jmp 0x10009e58
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0x5f5b1b6f
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edx
jl 0x10009e45
cmp dword [ebp - 0x24], ebx
jne 0x10009e69
mov esi, ebx
cmp dword [ebp - 0x1c], ebx
je 0x10009e6b
mov esi, edx
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x18]
je 0x10009e7b
cmp dword [ebp - 0x30], ebx
jne 0x10009e7d
mov edx, ebx
mov eax, dword [ebp - 0x84]
xor ecx, ecx
mov dword [eax], edx
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp esi, eax
setl cl
cmp ecx, dword [ebp - 0x24]
jne 0x10009ea0
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], 0x93e623b4
mov byte [ebp - 0xd], bl
cmp byte [ebp - 0xd], 0
je 0x10009eb8
push ebx
push ebx
call dword [sym.imp.USER32.dll_LoadCursorA]
lea ecx, [ebp - 0x84]
call fcn.1000f79f
dec dword [ebp - 0x24]
cmp dword [ebp - 0x24], 0xfffffff0
push 1
pop edx
jge 0x10009e27
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x24], ebx
jne 0x10009ee4
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x24], ebx
jne 0x10009ef3
mov eax, edx
cmp dword [ebp - 0x1c], ebx
je 0x10009ef5
mov eax, ebx
xor ecx, ecx
cmp eax, 0xef21
mov eax, dword [ebp - 0x20]
setge cl
sub eax, ecx
cmp eax, 0xfffffffd
ja 0x10009f0c
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edx
jl 0x10009f1a
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], ebx
je 0x10009f80
mov dword [ebp - 0x14], 0xffffffff
xor ecx, ecx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x14]
test eax, eax
setns cl
xor edx, edx
imul ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
cmp eax, ecx
mov eax, dword [ebp - 0x14]
setne dl
xor ecx, ecx
cmp edx, eax
setne cl
sub edi, ecx
xor ecx, ecx
sub edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
cmp edi, eax
mov eax, dword [ebp - 0x1c]
setle cl
xor edx, edx
cmp eax, ecx
setle dl
sub edx, dword [ebp - 0x28]
neg edx
sbb edx, edx
inc edx
mov dword [ebp - 0x24], edx
jmp 0x1000a02a
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x10007f00]
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x3c], ebx
push eax
push ebx
lea ecx, [ebp - 0x3c]
mov dword [ebp - 0x38], ebx
movdqu xmmword [ebp - 0xa0], xmm0
mov dword [ebp - 0x34], ebx
call fcn.100140d9
mov dword [ebp - 0x14], 0xfffffffb
mov eax, dword [ebp - 0x1c]
add eax, 0xa308
cmp eax, 0xfffd
sbb eax, eax
xor ecx, ecx
neg eax
cmp eax, 0x46fe
setl cl
xor eax, eax
test ecx, ecx
setg al
xor ecx, ecx
cmp eax, 0xfffffffd
mov eax, dword [ebp - 0x3c]
setl cl
add ecx, dword [eax + 4]
je 0x10009ff6
cmp dword [ebp - 0x2c], ebx
je 0x10009ff6
xor eax, eax
inc eax
jmp 0x10009ff8
mov eax, ebx
mov ecx, dword [ebp - 0x2c]
sub ecx, eax
mov eax, dword [ebp - 0x18]
neg ecx
sbb ecx, ecx
neg ecx
lea eax, [ecx + 0x7547197e]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x3c]
cmp dword [eax], ebx
jne 0x1000a01c
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x3c]
mov dword [ebp - 0x30], eax
call fcn.1000f79f
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x10007f40]
lea eax, [ebp - 0xa0]
push eax
lea eax, [ebp - 0xb0]
mov dword [ebp - 0x60], ebx
push eax
push ebx
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x5c], ebx
movdqu xmmword [ebp - 0xb0], xmm0
mov dword [ebp - 0x58], ebx
call fcn.100140d9
mov dword [ebp - 0x14], 0x82bd7b1c
mov dword [ebp - 0x14], 3
cmp dword [ebp - 0x14], ebx
jl 0x1000a0a9
mov dword [ebp - 0x28], 0xef2c3654
mov dword [ebp - 0x30], 0x8abc106e
mov dword [ebp - 0x28], ebx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x30], eax
mov byte [ebp - 0xd], bl
cmp byte [ebp - 0xd], 0
je 0x1000a0a4
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_EndPage]
dec dword [ebp - 0x14]
jns 0x1000a070
lea ecx, [ebp - 0x60]
call fcn.1000f79f
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov eax, dword [ecx]
mov dword [ecx], eax
cmp dword [ecx], ebx
jne 0x1000a0c0
mov eax, dword [ecx]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
cmp dword [edx], 0x7637
jg 0x1000a0d7
cmp dword [esi], ebx
je 0x1000a0d7
xor eax, eax
inc eax
jmp 0x1000a0d9
mov eax, ebx
mov dword [edx], eax
xor edx, edx
mov eax, dword [ecx]
mov ecx, dword [ebp + 8]
pop edi
mov dword [ecx], eax
mov ecx, dword [ecx]
mov eax, dword [esi]
cmp ecx, eax
mov eax, dword [ebp - 0x40]
setne dl
mov dword [eax], edx
xor edx, edx
mov ecx, dword [esi]
mov eax, dword [ebp + 0x18]
neg ecx
mov eax, dword [eax]
cmp ecx, eax
mov eax, dword [esi]
setge dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x54]
pop esi
setg cl
pop ebx
mov eax, dword [eax]
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret