Function at 0x10014f1f
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10072a57
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5cc
movzx eax, byte [ebp + 8]
test eax, eax
je 0x1001501f
mov eax, dword [ebp + 0x20]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x120], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x144], eax
lea eax, [ebp + 0x14]
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0x110]
movzx eax, byte [eax]
test eax, eax
je 0x10014fe1
mov eax, dword [ebp - 0x120]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0xec], eax
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0xec]
mov dword [ebp - 0x130], eax
mov eax, dword [ebp - 0x54]
mov dword [eax], 0
jmp 0x10014fbd
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
dec eax
mov ecx, dword [ebp - 0x54]
mov dword [ecx], eax
mov eax, dword [ebp - 0x54]
cmp dword [eax], 0xffffffe2
jg 0x10014fdf
mov dword [ebp - 0xf4], 4
mov eax, dword [ebp - 0x130]
mov eax, dword [eax]
mov dword [ebp - 0xf4], eax
jmp 0x10014fb2
jmp 0x1001501a
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0xfc]
mov dword [ebp - 0x14c], eax
mov eax, dword [ebp - 0x14c]
movzx eax, byte [eax]
test eax, eax
je 0x1001501a
push 0x2bab
push 0x2b3c
push 0
call fcn.1001ea3b
add esp, 0xc
jmp 0x10015b63
lea eax, [ebp + 0x1c]
mov dword [ebp - 0x154], eax
lea eax, [ebp + 0xc]
mov dword [ebp - 0x104], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x15c], eax
mov eax, dword [ebp - 0x104]
movzx eax, byte [eax]
test eax, eax
je 0x10015b5b
mov eax, dword [ebp - 0x154]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x15c]
mov dword [ebp - 0x74], eax
mov eax, dword [0x1063d4e4]
and eax, 1
jne 0x10015091
mov eax, dword [0x1063d4e4]
or eax, 1
mov dword [0x1063d4e4], eax
and dword [ebp - 4], 0
mov ecx, 0x1063d4a4
call fcn.1001f4d3
push 0x100738e9
call fcn.10059879
pop ecx
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [ebp - 0xd8], eax
lea eax, [ebp - 0x194]
push eax
mov ecx, 0x1063d4a4
call fcn.1001f58a
push eax
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x1c4]
push eax
mov ecx, 0x1063d4a4
call fcn.1001f598
mov ecx, eax
call fcn.1001f5ad
movzx eax, al
test eax, eax
je 0x1001518c
mov dword [ebp - 0x134], 0xa339
mov dword [ebp - 0x30], 0xfffffff6
mov dword [ebp - 0x114], 0x938f738f
mov dword [ebp - 0x190], 0xcfdfe92
mov dword [ebp - 0x18c], 0xcfdfe92
mov dword [ebp - 0x188], 0xcfdfe92
mov dword [ebp - 0x184], 0xcfdfe92
lea eax, [ebp - 0x114]
push eax
push 1
push 0
lea eax, [ebp - 0x134]
push eax
push 0x3dd5
lea eax, [ebp - 0x30]
push eax
call fcn.100161f2
add esp, 0x18
mov dword [ebp - 0x30], 0
jmp 0x1001514e
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 4
jge 0x10015164
mov eax, dword [ebp - 0x30]
mov dword [ebp + eax*4 - 0x190], 7
jmp 0x10015147
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [ebp - 0x11c], eax
lea eax, [ebp - 0x11c]
push eax
mov ecx, 0x1063d4a4
call fcn.1001f527
mov ecx, dword [ebp - 0x74]
mov al, byte [eax]
mov byte [ecx], al
jmp 0x10015b63
mov dword [ebp - 0x1c0], 0x862fd41e
mov byte [ebp - 0x29], 0
movzx eax, byte [ebp - 0x29]
test eax, eax
je 0x100151c2
push 0x65f0
push 0
push 0
push 0x33b2
push 0x405f
push 0x3b9f
call fcn.100161f2
add esp, 0x18
mov dword [ebp - 0x150], 0x17ca
cmp dword [ebp - 0x150], 0xf65
jge 0x10015527
call fcn.10059f09
push 0x20
pop ecx
imul ecx, ecx, 0
add eax, ecx
push eax
push 0x10007b64
push 0x10007b68
call fcn.1005a0b8
add esp, 0xc
call fcn.10059f09
push 0x20
pop ecx
shl ecx, 0
add eax, ecx
push eax
push 0x10007b70
push 0x10007b74
call fcn.1005a0b8
add esp, 0xc
xor eax, eax
inc eax
imul eax, eax, 0
mov byte [ebp + eax - 0x1f8], 0x20
and dword [ebp - 0x4c], 0
jmp 0x10015237
mov eax, dword [ebp - 0x4c]
inc eax
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0x1a
jge 0x1001524f
mov eax, dword [ebp - 0x4c]
add eax, 0x41
mov ecx, dword [ebp - 0x4c]
mov byte [ebp + ecx - 0x1f7], al
jmp 0x10015230
lea ecx, [ebp - 0x1dc]
call fcn.1000f749
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x180]
call fcn.1000f749
mov byte [ebp - 4], 2
lea eax, [ebp - 0x124]
push eax
mov ecx, 0x1061a7d0
call fcn.1001f023
mov dword [ebp - 0x68], 1
jmp 0x10015291
mov eax, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x68]
cmp eax, dword [ebp - 0x124]
jg 0x10015509
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x44]
push eax
mov ecx, 0x1061a7d0
call fcn.1001f023
mov ecx, eax
call fcn.1001f023
lea edx, [ebp - 0x1dc]
mov ecx, 0x1061a7d0
call fcn.10021b6f
push 0x1e4
push 0
lea eax, [ebp - 0x3f4]
push eax
call fcn.100372b2
add esp, 0xc
and dword [ebp - 0x3c], 0
jmp 0x100152ec
mov eax, dword [ebp - 0x3c]
inc eax
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x44]
jge 0x1001533d
and dword [ebp - 0x34], 0
jmp 0x10015301
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x20]
jge 0x1001533b
mov eax, dword [ebp - 0x20]
imul eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x34]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.10010c47
movsx eax, byte [eax]
cmp eax, 0x31
jne 0x10015339
imul eax, dword [ebp - 0x3c], 0x16
lea eax, [ebp + eax - 0x3f4]
mov ecx, dword [ebp - 0x34]
mov byte [eax + ecx], 1
jmp 0x100152fa
jmp 0x100152e5
and dword [ebp - 0x40], 0
and dword [ebp - 0x48], 0
and dword [0x106319e8], 0
mov dword [0x1061b7fc], 1
and dword [ebp - 0x38], 0
and dword [ebp - 0x5c], 0
push 0x10007771
lea ecx, [ebp - 0x180]
call fcn.1001eff3
push 0x1e4
push 0
lea eax, [ebp - 0x5d8]
push eax
call fcn.100372b2
add esp, 0xc
and dword [ebp - 0x28], 0
jmp 0x10015391
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x44]
imul eax, dword [ebp - 0x20]
cmp dword [ebp - 0x28], eax
jge 0x10015496
mov eax, dword [ebp - 0x20]
shl eax, 1
mov ecx, dword [ebp - 0x44]
lea eax, [eax + ecx*2 - 5]
cmp dword [ebp - 0x28], eax
jge 0x100153ea
mov eax, dword [ebp - 0x20]
dec eax
cmp dword [ebp - 0x28], eax
jne 0x100153c0
call fcn.10014efa
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + eax - 2]
cmp dword [ebp - 0x28], eax
jne 0x100153d4
call fcn.10014efa
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x44]
lea eax, [ecx + eax*2 - 3]
cmp dword [ebp - 0x28], eax
jne 0x100153e8
call fcn.10014efa
jmp 0x10015413
mov eax, dword [ebp - 0x40]
add eax, dword [0x106319e8]
imul eax, eax, 0x16
lea eax, [ebp + eax - 0x5d8]
mov ecx, dword [ebp - 0x48]
add ecx, dword [0x1061b7fc]
movzx eax, byte [eax + ecx]
test eax, eax
je 0x10015413
call fcn.10014efa
imul eax, dword [ebp - 0x40], 0x16
lea eax, [ebp + eax - 0x3f4]
mov ecx, dword [ebp - 0x48]
movzx eax, byte [eax + ecx]
cmp eax, 1
jne 0x1001543b
push 4
pop ecx
sub ecx, dword [ebp - 0x38]
xor eax, eax
inc eax
shl eax, cl
add eax, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 5
jne 0x10015467
mov eax, dword [ebp - 0x5c]
movzx eax, byte [ebp + eax - 0x1f8]
push eax
lea ecx, [ebp - 0x180]
call fcn.1001f012
and dword [ebp - 0x5c], 0
and dword [ebp - 0x38], 0
imul eax, dword [ebp - 0x40], 0x16
lea eax, [ebp + eax - 0x5d8]
mov ecx, dword [ebp - 0x48]
mov byte [eax + ecx], 1
mov eax, dword [ebp - 0x40]
add eax, dword [0x106319e8]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x48]
add eax, dword [0x1061b7fc]
mov dword [ebp - 0x48], eax
jmp 0x1001538a
lea ecx, [ebp - 0x180]
call fcn.1000f992
dec eax
push eax
lea ecx, [ebp - 0x180]
call fcn.10010c47
movsx eax, byte [eax]
cmp eax, 0x20
jne 0x100154d2
push 1
lea ecx, [ebp - 0x180]
call fcn.1000f992
dec eax
push eax
lea ecx, [ebp - 0x180]
call fcn.10010bc5
jmp 0x10015496
push 0x10021d11
push dword [ebp - 0x68]
mov ecx, 0x1061a6b8
call fcn.1001f21b
mov edx, 0x10007b7c
mov ecx, eax
call fcn.10011dbf
lea edx, [ebp - 0x180]
mov ecx, eax
call fcn.10021b74
mov ecx, eax
call fcn.1001f20f
jmp 0x1001528a
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x180]
call fcn.1000f789
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1dc]
call fcn.1000f789
mov byte [ebp - 0x21], 0
push 0
lea eax, [ebp - 0x21]
push eax
push 0x1b5
push 0x57fb
call fcn.10014ed3
add esp, 0x10
mov eax, dword [ebp - 0x64]
push dword [eax]
lea eax, [ebp - 0x210]
push eax
call fcn.1001450c
pop ecx
pop ecx
mov dword [ebp - 0x148], eax
mov eax, dword [ebp - 0x148]
mov dword [ebp - 0x12c], eax
mov dword [ebp - 4], 3
mov ecx, dword [ebp - 0x12c]
call fcn.1000f793
mov al, byte [eax]
mov byte [ebp - 0xd], al
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x210]
call fcn.1000f959
mov dword [ebp - 0x1a8], 0xbcd
mov dword [ebp - 0x1b0], 0xfffffff8
push 4
lea ecx, [ebp - 0x1a0]
call fcn.1000fa0b
mov dword [ebp - 4], 4
mov dword [ebp - 0x1a4], 9
mov dword [ebp - 0x1b8], 0
mov dword [ebp - 0x158], 0x260389a9
push 1
lea eax, [ebp - 0x1ac]
push eax
push 0
lea eax, [ebp - 0x1a0]
push eax
push 0x7250
call fcn.1001b79a
add esp, 0x14
push 0x4c7b
push 1
push 0x61b6
push 0
lea eax, [ebp - 0x158]
push eax
push 0x6fe2
call fcn.10014652
add esp, 0x18
mov byte [ebp - 0x1a], 0
push 0
lea eax, [ebp - 0x1a]
push eax
call fcn.10017d94
pop ecx
pop ecx
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1a0]
call fcn.1000fa6d
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [ebp - 0x10c], eax
lea eax, [ebp - 0x10c]
push eax
mov ecx, 0x1063d4a4
call fcn.1001f527
mov cl, byte [ebp - 0xd]
mov byte [eax], cl
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x9c], 0xfffffffd
mov dword [ebp - 0x100], 0xfffffffc
mov dword [ebp - 0x58], 0
jmp 0x10015681
mov eax, dword [ebp - 0x58]
inc eax
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x58], 3
jge 0x10015697
mov eax, dword [ebp - 0x58]
mov dword [ebp + eax*4 - 0x168], 4
jmp 0x1001567a
mov dword [ebp - 0x18], 0
jmp 0x100156a7
mov eax, dword [ebp - 0x18]
dec eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0xfffffff7
jge 0x10015b4f
mov dword [ebp - 0x14], 1
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xac], 0xffffffff
mov dword [ebp - 0x70], 7
push 3
lea ecx, [ebp - 0x140]
call fcn.1000fa0b
mov dword [ebp - 4], 5
mov dword [ebp - 0xa0], 0xfffffff7
mov dword [ebp - 0x60], 0
jmp 0x10015701
mov eax, dword [ebp - 0x60]
inc eax
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 3
jge 0x1001571d
push dword [ebp - 0x60]
lea ecx, [ebp - 0x140]
call fcn.1000fa89
mov dword [eax], 0xc01d4c3f
jmp 0x100156fa
mov dword [ebp - 0x14], 0x16
jmp 0x1001572d
mov eax, dword [ebp - 0x14]
dec eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffe5
jl 0x10015b3b
mov dword [ebp - 0xa4], 0xffffffff
mov dword [ebp - 0x50], 0x6b37990
mov dword [ebp - 0xbc], 9
cmp dword [ebp - 0x18], 0
jne 0x1001580a
cmp dword [ebp - 0x14], 0xfff839e0
je 0x10015771
mov dword [ebp - 0xd4], 1
jmp 0x10015778
and dword [ebp - 0xd4], 0
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0xd4]
cmp eax, dword [ebp - 0x14]
jg 0x10015792
mov dword [ebp - 0xa8], 1
jmp 0x10015799
and dword [ebp - 0xa8], 0
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0xa8], eax
jg 0x100157ad
mov dword [ebp - 0x80], 1
jmp 0x100157b1
and dword [ebp - 0x80], 0
cmp dword [ebp - 0x80], 0xffff
jbe 0x100157c6
mov dword [ebp - 0xc0], 1
jmp 0x100157cd
and dword [ebp - 0xc0], 0
mov eax, dword [ebp - 0xc0]
sub eax, 0x6f9ee43d
cmp dword [ebp - 0xa4], eax
je 0x100157ec
mov dword [ebp - 0x88], 1
jmp 0x100157f3
and dword [ebp - 0x88], 0
mov eax, dword [ebp - 0x18]
imul eax, dword [ebp - 0x88]
test eax, eax
jne 0x1001580a
and dword [ebp - 0xb0], 0
jmp 0x10015814
mov dword [ebp - 0xb0], 1
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0xb0], eax
jge 0x1001582b
mov dword [ebp - 0x90], 1
jmp 0x10015832
and dword [ebp - 0x90], 0
mov eax, dword [ebp - 0x90]
sub eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x18]
jl 0x1001584c
mov dword [ebp - 0xd0], 1
jmp 0x10015853
and dword [ebp - 0xd0], 0
mov eax, dword [ebp - 0x50]
imul eax, dword [ebp - 0xd0]
cmp eax, 0x77ab
jle 0x10015870
mov dword [ebp - 0x98], 1
jmp 0x10015877
and dword [ebp - 0x98], 0
mov eax, dword [ebp - 0x98]
add eax, 0x30b9
je 0x10015a36
mov dword [ebp - 0x1bc], 0x2699
mov dword [ebp - 0x1b4], 0
mov dword [ebp - 0x108], 0xffffffff
mov dword [ebp - 0x118], 0x2cfb1158
mov dword [ebp - 0xdc], 0xd7d231d5
mov dword [ebp - 0xb8], 0xf23d37f4
mov eax, dword [ebp - 0xb8]
add eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x14]
jle 0x10015970
mov eax, dword [ebp - 0xa0]
inc eax
mov dword [ebp - 0xa0], eax
cmp dword [ebp - 0xbc], 0x4060a3b7
jne 0x100158fb
mov dword [ebp - 0xc8], 1
jmp 0x10015902
and dword [ebp - 0xc8], 0
mov dword [ebp - 0x70], 0
mov eax, dword [ebp - 0x70]
sub eax, dword [ebp - 0xc8]
cmp eax, dword [ebp - 0xac]
jne 0x10015923
mov dword [ebp - 0x6c], 1
jmp 0x10015927
and dword [ebp - 0x6c], 0
push 4
pop eax
imul eax, eax, 0
mov ecx, dword [ebp - 0x6c]
mov dword [ebp + eax - 0x168], ecx
cmp dword [ebp - 0x6c], 0
je 0x10015958
push 0
lea ecx, [ebp - 0x140]
call fcn.1000fa89
cmp dword [eax], 0
je 0x10015958
mov dword [ebp - 0x78], 1
jmp 0x1001595c
and dword [ebp - 0x78], 0
mov eax, dword [ebp - 0x108]
cmp dword [ebp - 0x78], eax
jg 0x10015970
mov dword [ebp - 0x7c], 1
jmp 0x10015974
and dword [ebp - 0x7c], 0
mov eax, dword [ebp - 0x9c]
cmp dword [ebp - 0x7c], eax
jge 0x1001598b
mov dword [ebp - 0x84], 1
jmp 0x10015992
and dword [ebp - 0x84], 0
cmp dword [ebp - 0x84], 0xfe98d7e9
jae 0x100159aa
mov dword [ebp - 0x8c], 1
jmp 0x100159b1
and dword [ebp - 0x8c], 0
mov eax, dword [ebp - 0x118]
cmp dword [ebp - 0x8c], eax
jne 0x100159cb
mov dword [ebp - 0x94], 1
jmp 0x100159d2
and dword [ebp - 0x94], 0
mov eax, dword [ebp - 0x94]
add eax, 6
imul eax, dword [ebp - 0xdc]
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x50], 0
jmp 0x100159f8
mov eax, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x50], 0x12
jne 0x10015a34
mov byte [ebp - 0x19], 0
push 0x5747
lea eax, [ebp - 0x19]
push eax
push 0x579c
push 0
call fcn.100160d0
add esp, 0x10
lea eax, [ebp - 0xa4]
push eax
push 0
push 1
push 0x5d15
call fcn.10016009
add esp, 0x10
jmp 0x100159f1
jmp 0x10015a50
mov dword [ebp - 0xe0], 1
push 0
lea eax, [ebp - 0xe0]
push eax
call fcn.1001648d
pop ecx
pop ecx
push 4
pop eax
imul eax, eax, 0
mov ecx, dword [ebp - 0x70]
cmp dword [ebp + eax - 0x168], ecx
jl 0x10015a6e
mov dword [ebp - 0xe8], 1
jmp 0x10015a75
and dword [ebp - 0xe8], 0
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0xac], eax
jge 0x10015a8c
mov dword [ebp - 0xf0], 1
jmp 0x10015a93
and dword [ebp - 0xf0], 0
push 4
pop eax
shl eax, 0
cmp dword [ebp + eax - 0x168], 0xfffd
je 0x10015ab2
mov dword [ebp - 0xb4], 1
jmp 0x10015ab9
and dword [ebp - 0xb4], 0
cmp dword [ebp - 0xb4], 4
jb 0x10015ace
mov dword [ebp - 0xf8], 1
jmp 0x10015ad5
and dword [ebp - 0xf8], 0
push 0
lea ecx, [ebp - 0x140]
call fcn.1000fa89
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0xc4], eax
push 0
lea ecx, [ebp - 0x140]
call fcn.1000fa89
mov ecx, dword [ebp - 0xc4]
mov dword [eax], ecx
mov eax, dword [ebp - 0x100]
cmp dword [ebp - 0xc4], eax
je 0x10015b1d
mov dword [ebp - 0xcc], 1
jmp 0x10015b24
and dword [ebp - 0xcc], 0
push 4
pop eax
shl eax, 1
mov ecx, dword [ebp - 0xcc]
mov dword [ebp + eax - 0x168], ecx
jmp 0x10015726
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x140]
call fcn.1000fa6d
jmp 0x100156a0
mov eax, dword [ebp - 0x74]
mov cl, byte [ebp - 0xd]
mov byte [eax], cl
jmp 0x10015b63
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret