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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x100ef018]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1029cb0d], 0
push esi
push edi
je 0x1001cb26
cmp byte [0x1029ccee], 1
jne 0x1001cb26
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001cac4
cmp edi, 0xd
je 0x1001ca54
cmp edi, 0x30
jb 0x1001c95e
cmp edi, 0x39
jbe 0x1001c96a
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001c9b1
movzx eax, word [ebp - 0x128]
jmp 0x1001c9b3
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100bf2ed
mov ecx, 0x1029ccef
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001c9e5
sub ecx, edx
cmp ecx, 5
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029ccef
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ca20
test dl, dl
je 0x1001ca1c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ca20
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ca00
xor eax, eax
jmp 0x1001ca25
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029ccef
jne 0x1001d82a
call fcn.100bf2ed
add esp, 0xc
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
push 0x1029ccef
call fcn.100bff9e
mov edx, eax
add esp, 4
lea ecx, [edx - 1]
cmp ecx, 0x105b7
ja 0x1001ca9f
mov al, byte [0x1083d518]
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.100aba10
pop edi
mov byte [0x1029cb0d], 0
mov al, 1
mov dword [0xe8cb3c], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100e2be3
mov eax, 0x1029ccef
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001caf0
test dl, dl
je 0x1001caec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001caf0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cad0
xor eax, eax
jmp 0x1001caf5
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029ccef
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001cb05
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029ccee], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
mov al, byte [0x1029d8ed]
test al, al
je 0x1001cd56
cmp byte [0x1029dace], 1
jne 0x1001cd56
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001ccf0
cmp edi, 9
jne 0x1001cbd7
cmp dword [0x102bc3d8], 0
je 0x1001cbc3
push 0x100e2be3
push 0x1029db2f
mov byte [0x1029dace], 0
mov byte [0x1029db2e], 1
call fcn.1001da80
add esp, 8
mov ecx, 0x100e2be3
mov eax, 0x1029dacf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cba8
test dl, dl
je 0x1001cba4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cba8
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cb88
xor eax, eax
jmp 0x1001cbad
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001cbc3
push 0x100e3d18
push 0x1029dacf
call fcn.1001da80
add esp, 8
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp edi, 0xd
je 0x1001ccd7
cmp edi, 0x30
jb 0x1001cbea
cmp edi, 0x39
jbe 0x1001cbf2
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001cc39
movzx eax, word [ebp - 0x128]
jmp 0x1001cc3b
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100bf2ed
mov ecx, 0x1029dacf
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001cc70
sub ecx, edx
cmp ecx, 0xa
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029dacf
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ccc0
test dl, dl
je 0x1001ccac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ccc0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cc90
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029dacf
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029dacf
jmp 0x1001ca32
call fcn.10055b10
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100e2be3
mov eax, 0x1029dacf
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cd20
test dl, dl
je 0x1001cd1c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cd20
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cd00
xor eax, eax
jmp 0x1001cd25
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029dacf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001cd35
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029dace], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102bc3d8], 0
je 0x1001cf59
test al, al
je 0x1001cf59
cmp byte [0x1029db2e], 1
jne 0x1001cf59
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001cef9
cmp edi, 9
jne 0x1001cdfc
cmp dword [0x102bc3dc], 0
je 0x1001cbc3
push 0x100e2be3
push 0x1029db8f
mov byte [0x1029db2e], 0
mov byte [0x1029db8e], 1
call fcn.1001da80
add esp, 8
mov ecx, 0x100e2be3
mov eax, 0x1029db2f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cde0
test dl, dl
je 0x1001cddc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cde0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cdc0
xor eax, eax
jmp 0x1001cde5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001cbc3
push 0x100e3d18
push 0x1029db2f
jmp 0x1001cbbb
cmp edi, 0xd
je 0x1001ccd7
cmp edi, 0x30
jb 0x1001ce0f
cmp edi, 0x39
jbe 0x1001ce1b
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001ce62
movzx eax, word [ebp - 0x128]
jmp 0x1001ce64
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100bf2ed
mov ecx, 0x1029db2f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ce96
sub ecx, edx
cmp ecx, 0xa
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029db2f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cee2
test dl, dl
je 0x1001cece
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cee2
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ceb2
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029db2f
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029db2f
jmp 0x1001ca32
mov ecx, 0x100e2be3
mov eax, 0x1029db2f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cf23
test dl, dl
je 0x1001cf1f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cf23
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cf03
xor eax, eax
jmp 0x1001cf28
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029db2f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001cf38
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029db2e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102bc3dc], 0
je 0x1001d167
test al, al
je 0x1001d167
cmp byte [0x1029db8e], 1
jne 0x1001d167
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d107
cmp edi, 9
jne 0x1001cfff
cmp dword [0x102bc3e0], 0
je 0x1001cbc3
push 0x100e2be3
push 0x1029dbef
mov byte [0x1029db8e], 0
mov byte [0x1029dbee], 1
call fcn.1001da80
add esp, 8
mov ecx, 0x100e2be3
mov eax, 0x1029db8f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001cfe3
test dl, dl
je 0x1001cfdf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001cfe3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001cfc3
xor eax, eax
jmp 0x1001cfe8
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001cbc3
push 0x100e3d18
push 0x1029db8f
jmp 0x1001cbbb
cmp edi, 0xd
je 0x1001ccd7
cmp edi, 0x30
jb 0x1001d012
cmp edi, 0x39
jbe 0x1001d01e
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001d065
movzx eax, word [ebp - 0x128]
jmp 0x1001d067
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100bf2ed
mov ecx, 0x1029db8f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d0a0
sub ecx, edx
cmp ecx, 0xa
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029db8f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d0f0
test dl, dl
je 0x1001d0dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d0f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d0c0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029db8f
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029db8f
jmp 0x1001ca32
mov ecx, 0x100e2be3
mov eax, 0x1029db8f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d131
test dl, dl
je 0x1001d12d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d131
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d111
xor eax, eax
jmp 0x1001d136
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029db8f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d146
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029db8e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102bc3e0], 0
je 0x1001d367
test al, al
je 0x1001d367
cmp byte [0x1029dbee], 1
jne 0x1001d367
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d307
cmp edi, 9
jne 0x1001d200
push 0x100e2be3
push 0x1029dacf
mov byte [0x1029dbee], 0
mov byte [0x1029dace], 1
call fcn.1001da80
add esp, 8
mov ecx, 0x100e2be3
mov eax, 0x1029dbef
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d1e4
test dl, dl
je 0x1001d1e0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d1e4
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d1c4
xor eax, eax
jmp 0x1001d1e9
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001cbc3
push 0x100e3d18
push 0x1029dbef
jmp 0x1001cbbb
cmp edi, 0xd
je 0x1001ccd7
cmp edi, 0x30
jb 0x1001d213
cmp edi, 0x39
jbe 0x1001d21f
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001d266
movzx eax, word [ebp - 0x128]
jmp 0x1001d268
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100bf2ed
mov ecx, 0x1029dbef
add esp, 0x18
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d2a0
sub ecx, edx
cmp ecx, 0xa
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029dbef
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d2f0
test dl, dl
je 0x1001d2dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d2f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d2c0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029dbef
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x1029dbef
jmp 0x1001ca32
mov ecx, 0x100e2be3
mov eax, 0x1029dbef
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d331
test dl, dl
je 0x1001d32d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d331
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d311
xor eax, eax
jmp 0x1001d336
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029dbef
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d346
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029dbee], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp byte [0x1029c86d], 0
je 0x1001d556
cmp byte [0x1029ca4e], 1
jne 0x1001d556
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d4ef
cmp edi, 0xd
je 0x1001d48a
cmp edi, 0x30
jb 0x1001d3a0
cmp edi, 0x39
jbe 0x1001d3ac
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001d3f3
movzx eax, word [ebp - 0x128]
jmp 0x1001d3f5
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100bf2ed
mov ecx, 0x1029ca4f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d427
sub ecx, edx
cmp ecx, 0x10
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029ca4f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d473
test dl, dl
je 0x1001d45f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d473
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d443
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029ca4f
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029ca4f
jmp 0x1001ca32
push 0x1029ca4f
push dword [0x1088429c]
mov ecx, 0x10882e40
call fcn.100a0df0
cmp byte [0x1029c86d], 1
jne 0x1001d4ca
xor eax, eax
mov byte [0x1029c86d], 0
pop edi
mov dword [0xe8cb3c], eax
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
mov eax, 1
mov byte [0x1029c86d], 1
pop edi
mov dword [0xe8cb3c], eax
mov al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100e2be3
mov eax, 0x1029ca4f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d520
test dl, dl
je 0x1001d51c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d520
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d500
xor eax, eax
jmp 0x1001d525
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029ca4f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d535
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x1029ca4e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp byte [0x1029bbad], 0
je 0x1001d6f0
cmp byte [0x1029c2ce], 1
jne 0x1001d6f0
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d677
cmp edi, 0x30
jb 0x1001d586
cmp edi, 0x39
jbe 0x1001d592
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001d5d9
movzx eax, word [ebp - 0x128]
jmp 0x1001d5db
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100bf2ed
mov ecx, 0x1029c2cf
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d610
sub ecx, edx
cmp ecx, 0x10
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029c2cf
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d660
test dl, dl
je 0x1001d64c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d660
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d630
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029c2cf
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029c2cf
jmp 0x1001ca32
mov ecx, 0x100e2be3
mov eax, 0x1029c2cf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d6a1
test dl, dl
je 0x1001d69d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d6a1
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d681
xor eax, eax
jmp 0x1001d6a6
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029c2cf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d6b6
sub ecx, edx
mov byte [ecx + 0x1029c2ce], al
mov ecx, 0x1029c2cf
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d6d0
sub ecx, edx
jne 0x1001ca40
push 0x100e2be3
push 0x3c
push 0x1029c2cf
jmp 0x1001ca38
cmp byte [0x1029cdad], 0
je 0x1001ca40
cmp byte [0x1029cf2e], 1
jne 0x1001d8b0
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d834
cmp edi, 9
jne 0x1001d73d
pop edi
mov byte [0x1029cf2e], 0
mov al, 1
mov byte [0x1029cf8e], 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x21
jb 0x1001d747
cmp edi, 0x7e
jbe 0x1001d75b
cmp edi, 0xbd
je 0x1001d75b
cmp edi, 0xbe
jne 0x1001cbc3
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 0x1001d7a2
movzx eax, word [ebp - 0x128]
jmp 0x1001d7a4
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100bf2ed
mov ecx, 0x1029cf2f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d7d6
sub ecx, edx
cmp ecx, 0x1e
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029cf2f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d812
test dl, dl
je 0x1001d80e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d812
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d7f2
xor eax, eax
jmp 0x1001d817
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029cf2f
je 0x1001ca38
call fcn.100bf347
jmp 0x1001ca3d
mov ecx, 0x100e2be3
mov eax, 0x1029cf2f
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d860
test dl, dl
je 0x1001d85c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d860
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d840
xor eax, eax
jmp 0x1001d865
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029cf2f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d875
sub ecx, edx
mov byte [ecx + 0x1029cf2e], al
mov ecx, 0x1029cf2f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d890
sub ecx, edx
jne 0x1001ca40
push 0x100e2be3
push 0x3c
push 0x1029cf2f
jmp 0x1001ca38
cmp byte [0x1029cf8e], 1
jne 0x1001ca40
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001d9e7
cmp edi, 9
jne 0x1001d8f0
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
mov byte [0x1029cf2e], 1
mov byte [0x1029cf8e], 0
pop esi
call fcn.100b7755
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x30
jb 0x1001d8fa
cmp edi, 0x39
jbe 0x1001d906
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001cbc3
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 0x1001d94d
movzx eax, word [ebp - 0x128]
jmp 0x1001d94f
xor eax, eax
cwde
test eax, eax
je 0x1001cbc3
push eax
lea eax, [ebp - 0x10]
push 0x100e3d60
push eax
call fcn.1001da60
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100bf2ed
mov ecx, 0x1029cf8f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001d981
sub ecx, edx
cmp ecx, 7
jae 0x1001ca40
mov ecx, 0x100e2be3
mov eax, 0x1029cf8f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001d9d0
test dl, dl
je 0x1001d9bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001d9d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d9a0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029cf8f
jmp 0x1001ca32
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x1029cf8f
jmp 0x1001ca32
mov ecx, 0x100e2be3
mov eax, 0x1029cf8f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001da11
test dl, dl
je 0x1001da0d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001da11
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001d9f1
xor eax, eax
jmp 0x1001da16
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001cbc3
mov ecx, 0x1029cf8f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001da26
sub ecx, edx
mov byte [ecx + 0x1029cf8e], al
mov ecx, 0x1029cf8f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001da40
sub ecx, edx
jne 0x1001ca40
push 0x100e2be3
push 0x3c
push 0x1029cf8f
jmp 0x1001ca38