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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x100db040]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1027a03d], 0
push esi
push edi
je 0x1001bac6
cmp byte [0x1027a09e], 1
jne 0x1001bac6
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001ba64
cmp edi, 0xd
je 0x1001b9f4
cmp edi, 0x30
jb 0x1001b8fe
cmp edi, 0x39
jbe 0x1001b90a
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001b951
movzx eax, word [ebp - 0x128]
jmp 0x1001b953
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100a9652
mov ecx, 0x1027a09f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001b985
sub ecx, edx
cmp ecx, 5
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a09f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001b9c0
test dl, dl
je 0x1001b9bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001b9c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001b9a0
xor eax, eax
jmp 0x1001b9c5
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a09f
jne 0x1001c448
call fcn.100a9652
add esp, 0xc
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
push 0x1027a09f
call fcn.100aa2c4
mov edx, eax
add esp, 4
lea ecx, [edx - 1]
cmp ecx, 0x105b7
ja 0x1001ba3f
mov al, byte [0x106a5228]
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.10098a10
pop edi
mov byte [0x1027a03d], 0
mov al, 1
mov dword [0x11c4454], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100cd26b
mov eax, 0x1027a09f
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ba90
test dl, dl
je 0x1001ba8c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ba90
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ba70
xor eax, eax
jmp 0x1001ba95
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a09f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001baa5
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1027a09e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
mov al, byte [0x1027a4bd]
test al, al
je 0x1001bcf6
cmp byte [0x1027a69e], 1
jne 0x1001bcf6
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001bc90
cmp edi, 9
jne 0x1001bb77
cmp dword [0x102c5064], 0
je 0x1001bb63
push 0x100cd26b
push 0x1027a6ff
mov byte [0x1027a69e], 0
mov byte [0x1027a6fe], 1
call fcn.1001c6a0
add esp, 8
mov ecx, 0x100cd26b
mov eax, 0x1027a69f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bb48
test dl, dl
je 0x1001bb44
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bb48
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bb28
xor eax, eax
jmp 0x1001bb4d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001bb63
push 0x100ceb7c
push 0x1027a69f
call fcn.1001c6a0
add esp, 8
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp edi, 0xd
je 0x1001bc77
cmp edi, 0x30
jb 0x1001bb8a
cmp edi, 0x39
jbe 0x1001bb92
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001bbd9
movzx eax, word [ebp - 0x128]
jmp 0x1001bbdb
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100a9652
mov ecx, 0x1027a69f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001bc10
sub ecx, edx
cmp ecx, 0xa
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a69f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bc60
test dl, dl
je 0x1001bc4c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bc60
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bc30
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a69f
jmp 0x1001b9d2
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a69f
jmp 0x1001b9d2
call fcn.1005e210
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100cd26b
mov eax, 0x1027a69f
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bcc0
test dl, dl
je 0x1001bcbc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bcc0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bca0
xor eax, eax
jmp 0x1001bcc5
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a69f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001bcd5
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1027a69e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c5064], 0
je 0x1001bef9
test al, al
je 0x1001bef9
cmp byte [0x1027a6fe], 1
jne 0x1001bef9
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001be99
cmp edi, 9
jne 0x1001bd9c
cmp dword [0x102c5068], 0
je 0x1001bb63
push 0x100cd26b
push 0x1027a75f
mov byte [0x1027a6fe], 0
mov byte [0x1027a75e], 1
call fcn.1001c6a0
add esp, 8
mov ecx, 0x100cd26b
mov eax, 0x1027a6ff
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bd80
test dl, dl
je 0x1001bd7c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bd80
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bd60
xor eax, eax
jmp 0x1001bd85
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001bb63
push 0x100ceb7c
push 0x1027a6ff
jmp 0x1001bb5b
cmp edi, 0xd
je 0x1001bc77
cmp edi, 0x30
jb 0x1001bdaf
cmp edi, 0x39
jbe 0x1001bdbb
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001be02
movzx eax, word [ebp - 0x128]
jmp 0x1001be04
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100a9652
mov ecx, 0x1027a6ff
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001be36
sub ecx, edx
cmp ecx, 0xa
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a6ff
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001be82
test dl, dl
je 0x1001be6e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001be82
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001be52
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a6ff
jmp 0x1001b9d2
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a6ff
jmp 0x1001b9d2
mov ecx, 0x100cd26b
mov eax, 0x1027a6ff
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bec3
test dl, dl
je 0x1001bebf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bec3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bea3
xor eax, eax
jmp 0x1001bec8
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a6ff
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001bed8
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1027a6fe], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c5068], 0
je 0x1001c107
test al, al
je 0x1001c107
cmp byte [0x1027a75e], 1
jne 0x1001c107
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001c0a7
cmp edi, 9
jne 0x1001bf9f
cmp dword [0x102c506c], 0
je 0x1001bb63
push 0x100cd26b
push 0x1027a7bf
mov byte [0x1027a75e], 0
mov byte [0x1027a7be], 1
call fcn.1001c6a0
add esp, 8
mov ecx, 0x100cd26b
mov eax, 0x1027a75f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001bf83
test dl, dl
je 0x1001bf7f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001bf83
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001bf63
xor eax, eax
jmp 0x1001bf88
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001bb63
push 0x100ceb7c
push 0x1027a75f
jmp 0x1001bb5b
cmp edi, 0xd
je 0x1001bc77
cmp edi, 0x30
jb 0x1001bfb2
cmp edi, 0x39
jbe 0x1001bfbe
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001c005
movzx eax, word [ebp - 0x128]
jmp 0x1001c007
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100a9652
mov ecx, 0x1027a75f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c040
sub ecx, edx
cmp ecx, 0xa
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a75f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c090
test dl, dl
je 0x1001c07c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c090
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c060
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a75f
jmp 0x1001b9d2
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a75f
jmp 0x1001b9d2
mov ecx, 0x100cd26b
mov eax, 0x1027a75f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c0d1
test dl, dl
je 0x1001c0cd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c0d1
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c0b1
xor eax, eax
jmp 0x1001c0d6
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a75f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c0e6
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1027a75e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c506c], 0
je 0x1001c307
test al, al
je 0x1001c307
cmp byte [0x1027a7be], 1
jne 0x1001c307
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001c2a7
cmp edi, 9
jne 0x1001c1a0
push 0x100cd26b
push 0x1027a69f
mov byte [0x1027a7be], 0
mov byte [0x1027a69e], 1
call fcn.1001c6a0
add esp, 8
mov ecx, 0x100cd26b
mov eax, 0x1027a7bf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c184
test dl, dl
je 0x1001c180
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c184
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c164
xor eax, eax
jmp 0x1001c189
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001bb63
push 0x100ceb7c
push 0x1027a7bf
jmp 0x1001bb5b
cmp edi, 0xd
je 0x1001bc77
cmp edi, 0x30
jb 0x1001c1b3
cmp edi, 0x39
jbe 0x1001c1bf
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001c206
movzx eax, word [ebp - 0x128]
jmp 0x1001c208
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100a9652
mov ecx, 0x1027a7bf
add esp, 0x18
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c240
sub ecx, edx
cmp ecx, 0xa
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a7bf
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c290
test dl, dl
je 0x1001c27c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c290
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c260
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a7bf
jmp 0x1001b9d2
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1027a7bf
jmp 0x1001b9d2
mov ecx, 0x100cd26b
mov eax, 0x1027a7bf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c2d1
test dl, dl
je 0x1001c2cd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c2d1
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c2b1
xor eax, eax
jmp 0x1001c2d6
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a7bf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c2e6
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1027a7be], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp byte [0x1027a0fd], 0
je 0x1001b9e0
cmp byte [0x1027a27e], 1
jne 0x1001c4d0
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001c452
cmp edi, 9
jne 0x1001c354
pop edi
mov byte [0x1027a27e], 0
mov al, 1
mov byte [0x1027a2de], 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x21
jb 0x1001c35e
cmp edi, 0x7e
jbe 0x1001c372
cmp edi, 0xbd
je 0x1001c372
cmp edi, 0xbe
jne 0x1001bb63
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 0x1001c3b9
movzx eax, word [ebp - 0x128]
jmp 0x1001c3bb
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100a9652
mov ecx, 0x1027a27f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c3f0
sub ecx, edx
cmp ecx, 0x1e
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a27f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c430
test dl, dl
je 0x1001c42c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c430
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c410
xor eax, eax
jmp 0x1001c435
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1027a27f
je 0x1001b9d8
call fcn.100a96ac
jmp 0x1001b9dd
mov ecx, 0x100cd26b
mov eax, 0x1027a27f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c480
test dl, dl
je 0x1001c47c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c480
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c460
xor eax, eax
jmp 0x1001c485
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a27f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c495
sub ecx, edx
mov byte [ecx + 0x1027a27e], al
mov ecx, 0x1027a27f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c4b0
sub ecx, edx
jne 0x1001b9e0
push 0x100cd26b
push 0x3c
push 0x1027a27f
jmp 0x1001b9d8
cmp byte [0x1027a2de], 1
jne 0x1001b9e0
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001c607
cmp edi, 9
jne 0x1001c510
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
mov byte [0x1027a27e], 1
mov byte [0x1027a2de], 0
pop esi
call fcn.100a0150
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x30
jb 0x1001c51a
cmp edi, 0x39
jbe 0x1001c526
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001bb63
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 0x1001c56d
movzx eax, word [ebp - 0x128]
jmp 0x1001c56f
xor eax, eax
cwde
test eax, eax
je 0x1001bb63
push eax
lea eax, [ebp - 0x10]
push 0x100cedcc
push eax
call fcn.1001c680
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100a9652
mov ecx, 0x1027a2df
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c5a1
sub ecx, edx
cmp ecx, 7
jae 0x1001b9e0
mov ecx, 0x100cd26b
mov eax, 0x1027a2df
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c5f0
test dl, dl
je 0x1001c5dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c5f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c5c0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1027a2df
jmp 0x1001b9d2
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1027a2df
jmp 0x1001b9d2
mov ecx, 0x100cd26b
mov eax, 0x1027a2df
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001c631
test dl, dl
je 0x1001c62d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001c631
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001c611
xor eax, eax
jmp 0x1001c636
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001bb63
mov ecx, 0x1027a2df
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c646
sub ecx, edx
mov byte [ecx + 0x1027a2de], al
mov ecx, 0x1027a2df
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c660
sub ecx, edx
jne 0x1001b9e0
push 0x100cd26b
push 0x3c
push 0x1027a2df
jmp 0x1001b9d8