Function at 0x10018ce0
Capabilities:
Get keyboard layout
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x100c6040]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1023fefd], 0
push esi
push edi
je 0x10018ef6
cmp byte [0x1023ff5e], 1
jne 0x10018ef6
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x10018e94
cmp edi, 0xd
je 0x10018e24
cmp edi, 0x30
jb 0x10018d2e
cmp edi, 0x39
jbe 0x10018d3a
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x10018d81
movzx eax, word [ebp - 0x128]
jmp 0x10018d83
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.10095482
mov ecx, 0x1023ff5f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10018db5
sub ecx, edx
cmp ecx, 5
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1023ff5f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10018df0
test dl, dl
je 0x10018dec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10018df0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10018dd0
xor eax, eax
jmp 0x10018df5
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1023ff5f
jne 0x10019878
call fcn.10095482
add esp, 0xc
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
push 0x1023ff5f
call fcn.100960f4
mov edx, eax
add esp, 4
lea ecx, [edx - 1]
cmp ecx, 0x105b7
ja 0x10018e6f
mov al, byte [0x106464a8]
lea ecx, [ebp - 0x10]
xorps xmm0, xmm0
mov word [ebp - 7], 0
movq qword [ebp - 0xf], xmm0
mov byte [ebp - 5], 0
mov dword [ebp - 8], edx
mov edx, 0xc
mov dword [ebp - 0x10], 0xd8f30cc1
mov byte [ebp - 0xc], al
call fcn.10084a30
pop edi
mov byte [0x1023fefd], 0
mov al, 1
mov dword [0x11c4454], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100b82db
mov eax, 0x1023ff5f
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10018ec0
test dl, dl
je 0x10018ebc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10018ec0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10018ea0
xor eax, eax
jmp 0x10018ec5
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1023ff5f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10018ed5
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1023ff5e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
mov al, byte [0x1024037d]
test al, al
je 0x10019126
cmp byte [0x1024055e], 1
jne 0x10019126
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x100190c0
cmp edi, 9
jne 0x10018fa7
cmp dword [0x1028aee8], 0
je 0x10018f93
push 0x100b82db
push 0x102405bf
mov byte [0x1024055e], 0
mov byte [0x102405be], 1
call fcn.10019ad0
add esp, 8
mov ecx, 0x100b82db
mov eax, 0x1024055f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10018f78
test dl, dl
je 0x10018f74
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10018f78
add eax, 2
add ecx, 2
test dl, dl
jne 0x10018f58
xor eax, eax
jmp 0x10018f7d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10018f93
push 0x100b9bec
push 0x1024055f
call fcn.10019ad0
add esp, 8
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp edi, 0xd
je 0x100190a7
cmp edi, 0x30
jb 0x10018fba
cmp edi, 0x39
jbe 0x10018fc2
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x10019009
movzx eax, word [ebp - 0x128]
jmp 0x1001900b
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.10095482
mov ecx, 0x1024055f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019040
sub ecx, edx
cmp ecx, 0xa
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1024055f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019090
test dl, dl
je 0x1001907c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019090
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019060
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024055f
jmp 0x10018e02
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024055f
jmp 0x10018e02
call fcn.1004e320
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100b82db
mov eax, 0x1024055f
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100190f0
test dl, dl
je 0x100190ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100190f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x100190d0
xor eax, eax
jmp 0x100190f5
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1024055f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019105
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1024055e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp dword [0x1028aee8], 0
je 0x10019329
test al, al
je 0x10019329
cmp byte [0x102405be], 1
jne 0x10019329
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x100192c9
cmp edi, 9
jne 0x100191cc
cmp dword [0x1028aeec], 0
je 0x10018f93
push 0x100b82db
push 0x1024061f
mov byte [0x102405be], 0
mov byte [0x1024061e], 1
call fcn.10019ad0
add esp, 8
mov ecx, 0x100b82db
mov eax, 0x102405bf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100191b0
test dl, dl
je 0x100191ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100191b0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019190
xor eax, eax
jmp 0x100191b5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10018f93
push 0x100b9bec
push 0x102405bf
jmp 0x10018f8b
cmp edi, 0xd
je 0x100190a7
cmp edi, 0x30
jb 0x100191df
cmp edi, 0x39
jbe 0x100191eb
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x10019232
movzx eax, word [ebp - 0x128]
jmp 0x10019234
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.10095482
mov ecx, 0x102405bf
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019266
sub ecx, edx
cmp ecx, 0xa
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x102405bf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100192b2
test dl, dl
je 0x1001929e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100192b2
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019282
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102405bf
jmp 0x10018e02
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102405bf
jmp 0x10018e02
mov ecx, 0x100b82db
mov eax, 0x102405bf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100192f3
test dl, dl
je 0x100192ef
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100192f3
add eax, 2
add ecx, 2
test dl, dl
jne 0x100192d3
xor eax, eax
jmp 0x100192f8
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x102405bf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019308
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102405be], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp dword [0x1028aeec], 0
je 0x10019537
test al, al
je 0x10019537
cmp byte [0x1024061e], 1
jne 0x10019537
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x100194d7
cmp edi, 9
jne 0x100193cf
cmp dword [0x1028aef0], 0
je 0x10018f93
push 0x100b82db
push 0x1024067f
mov byte [0x1024061e], 0
mov byte [0x1024067e], 1
call fcn.10019ad0
add esp, 8
mov ecx, 0x100b82db
mov eax, 0x1024061f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100193b3
test dl, dl
je 0x100193af
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100193b3
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019393
xor eax, eax
jmp 0x100193b8
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10018f93
push 0x100b9bec
push 0x1024061f
jmp 0x10018f8b
cmp edi, 0xd
je 0x100190a7
cmp edi, 0x30
jb 0x100193e2
cmp edi, 0x39
jbe 0x100193ee
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x10019435
movzx eax, word [ebp - 0x128]
jmp 0x10019437
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.10095482
mov ecx, 0x1024061f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019470
sub ecx, edx
cmp ecx, 0xa
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1024061f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100194c0
test dl, dl
je 0x100194ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100194c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019490
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024061f
jmp 0x10018e02
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024061f
jmp 0x10018e02
mov ecx, 0x100b82db
mov eax, 0x1024061f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019501
test dl, dl
je 0x100194fd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019501
add eax, 2
add ecx, 2
test dl, dl
jne 0x100194e1
xor eax, eax
jmp 0x10019506
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1024061f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019516
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1024061e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp dword [0x1028aef0], 0
je 0x10019737
test al, al
je 0x10019737
cmp byte [0x1024067e], 1
jne 0x10019737
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x100196d7
cmp edi, 9
jne 0x100195d0
push 0x100b82db
push 0x1024055f
mov byte [0x1024067e], 0
mov byte [0x1024055e], 1
call fcn.10019ad0
add esp, 8
mov ecx, 0x100b82db
mov eax, 0x1024067f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100195b4
test dl, dl
je 0x100195b0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100195b4
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019594
xor eax, eax
jmp 0x100195b9
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10018f93
push 0x100b9bec
push 0x1024067f
jmp 0x10018f8b
cmp edi, 0xd
je 0x100190a7
cmp edi, 0x30
jb 0x100195e3
cmp edi, 0x39
jbe 0x100195ef
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x10019636
movzx eax, word [ebp - 0x128]
jmp 0x10019638
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.10095482
mov ecx, 0x1024067f
add esp, 0x18
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019670
sub ecx, edx
cmp ecx, 0xa
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1024067f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100196c0
test dl, dl
je 0x100196ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100196c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019690
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024067f
jmp 0x10018e02
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1024067f
jmp 0x10018e02
mov ecx, 0x100b82db
mov eax, 0x1024067f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019701
test dl, dl
je 0x100196fd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019701
add eax, 2
add ecx, 2
test dl, dl
jne 0x100196e1
xor eax, eax
jmp 0x10019706
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1024067f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019716
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1024067e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp byte [0x1023ffbd], 0
je 0x10018e10
cmp byte [0x1024013e], 1
jne 0x10019900
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x10019882
cmp edi, 9
jne 0x10019784
pop edi
mov byte [0x1024013e], 0
mov al, 1
mov byte [0x1024019e], 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x21
jb 0x1001978e
cmp edi, 0x7e
jbe 0x100197a2
cmp edi, 0xbd
je 0x100197a2
cmp edi, 0xbe
jne 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x100197e9
movzx eax, word [ebp - 0x128]
jmp 0x100197eb
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.10095482
mov ecx, 0x1024013f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019820
sub ecx, edx
cmp ecx, 0x1e
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1024013f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019860
test dl, dl
je 0x1001985c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019860
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019840
xor eax, eax
jmp 0x10019865
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1024013f
je 0x10018e08
call fcn.100954dc
jmp 0x10018e0d
mov ecx, 0x100b82db
mov eax, 0x1024013f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100198b0
test dl, dl
je 0x100198ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100198b0
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019890
xor eax, eax
jmp 0x100198b5
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1024013f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100198c5
sub ecx, edx
mov byte [ecx + 0x1024013e], al
mov ecx, 0x1024013f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100198e0
sub ecx, edx
jne 0x10018e10
push 0x100b82db
push 0x3c
push 0x1024013f
jmp 0x10018e08
cmp byte [0x1024019e], 1
jne 0x10018e10
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x10019a37
cmp edi, 9
jne 0x10019940
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
mov byte [0x1024013e], 1
mov byte [0x1024019e], 0
pop esi
call fcn.1008c0ce
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x30
jb 0x1001994a
cmp edi, 0x39
jbe 0x10019956
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x10018f93
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov esi, eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push esi
push 0
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push edi
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x1001999d
movzx eax, word [ebp - 0x128]
jmp 0x1001999f
xor eax, eax
cwde
test eax, eax
je 0x10018f93
push eax
lea eax, [ebp - 0x10]
push 0x100b9e10
push eax
call fcn.10019ab0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.10095482
mov ecx, 0x1024019f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100199d1
sub ecx, edx
cmp ecx, 7
jae 0x10018e10
mov ecx, 0x100b82db
mov eax, 0x1024019f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019a20
test dl, dl
je 0x10019a0c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019a20
add eax, 2
add ecx, 2
test dl, dl
jne 0x100199f0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1024019f
jmp 0x10018e02
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1024019f
jmp 0x10018e02
mov ecx, 0x100b82db
mov eax, 0x1024019f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10019a61
test dl, dl
je 0x10019a5d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10019a61
add eax, 2
add ecx, 2
test dl, dl
jne 0x10019a41
xor eax, eax
jmp 0x10019a66
sbb eax, eax
or eax, 1
test eax, eax
je 0x10018f93
mov ecx, 0x1024019f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019a76
sub ecx, edx
mov byte [ecx + 0x1024019e], al
mov ecx, 0x1024019f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10019a90
sub ecx, edx
jne 0x10018e10
push 0x100b82db
push 0x3c
push 0x1024019f
jmp 0x10018e08