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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x100fa040]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x102a7b5d], 0
push esi
push edi
je 0x1001e036
cmp byte [0x102a7d3e], 1
jne 0x1001e036
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001dfd4
cmp edi, 0xd
je 0x1001df64
cmp edi, 0x30
jb 0x1001de6e
cmp edi, 0x39
jbe 0x1001de7a
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001dec1
movzx eax, word [ebp - 0x128]
jmp 0x1001dec3
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100c9e5b
mov ecx, 0x102a7d3f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001def5
sub ecx, edx
cmp ecx, 5
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a7d3f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001df30
test dl, dl
je 0x1001df2c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001df30
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001df10
xor eax, eax
jmp 0x1001df35
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a7d3f
jne 0x1001ed3a
call fcn.100c9e5b
add esp, 0xc
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
push 0x102a7d3f
call fcn.100caacd
mov edx, eax
add esp, 4
lea ecx, [edx - 1]
cmp ecx, 0x105b7
ja 0x1001dfaf
mov al, byte [0x10848380]
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.100b5120
pop edi
mov byte [0x102a7b5d], 0
mov al, 1
mov dword [0xe8cb3c], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100ed2ab
mov eax, 0x102a7d3f
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e000
test dl, dl
je 0x1001dffc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e000
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001dfe0
xor eax, eax
jmp 0x1001e005
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a7d3f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e015
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a7d3e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
mov al, byte [0x102a893d]
test al, al
je 0x1001e266
cmp byte [0x102a8b1e], 1
jne 0x1001e266
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001e200
cmp edi, 9
jne 0x1001e0e7
cmp dword [0x102c7468], 0
je 0x1001e0d3
push 0x100ed2ab
push 0x102a8b7f
mov byte [0x102a8b1e], 0
mov byte [0x102a8b7e], 1
call fcn.1001ef90
add esp, 8
mov ecx, 0x100ed2ab
mov eax, 0x102a8b1f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e0b8
test dl, dl
je 0x1001e0b4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e0b8
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e098
xor eax, eax
jmp 0x1001e0bd
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001e0d3
push 0x100ee3e0
push 0x102a8b1f
call fcn.1001ef90
add esp, 8
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp edi, 0xd
je 0x1001e1e7
cmp edi, 0x30
jb 0x1001e0fa
cmp edi, 0x39
jbe 0x1001e102
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001e149
movzx eax, word [ebp - 0x128]
jmp 0x1001e14b
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100c9e5b
mov ecx, 0x102a8b1f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e180
sub ecx, edx
cmp ecx, 0xa
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a8b1f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e1d0
test dl, dl
je 0x1001e1bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e1d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e1a0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8b1f
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8b1f
jmp 0x1001df42
call fcn.100581d0
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100ed2ab
mov eax, 0x102a8b1f
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e230
test dl, dl
je 0x1001e22c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e230
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e210
xor eax, eax
jmp 0x1001e235
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a8b1f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e245
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a8b1e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c7468], 0
je 0x1001e469
test al, al
je 0x1001e469
cmp byte [0x102a8b7e], 1
jne 0x1001e469
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001e409
cmp edi, 9
jne 0x1001e30c
cmp dword [0x102c746c], 0
je 0x1001e0d3
push 0x100ed2ab
push 0x102a8bdf
mov byte [0x102a8b7e], 0
mov byte [0x102a8bde], 1
call fcn.1001ef90
add esp, 8
mov ecx, 0x100ed2ab
mov eax, 0x102a8b7f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e2f0
test dl, dl
je 0x1001e2ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e2f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e2d0
xor eax, eax
jmp 0x1001e2f5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001e0d3
push 0x100ee3e0
push 0x102a8b7f
jmp 0x1001e0cb
cmp edi, 0xd
je 0x1001e1e7
cmp edi, 0x30
jb 0x1001e31f
cmp edi, 0x39
jbe 0x1001e32b
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001e372
movzx eax, word [ebp - 0x128]
jmp 0x1001e374
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100c9e5b
mov ecx, 0x102a8b7f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e3a6
sub ecx, edx
cmp ecx, 0xa
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a8b7f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e3f2
test dl, dl
je 0x1001e3de
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e3f2
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e3c2
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8b7f
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8b7f
jmp 0x1001df42
mov ecx, 0x100ed2ab
mov eax, 0x102a8b7f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e433
test dl, dl
je 0x1001e42f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e433
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e413
xor eax, eax
jmp 0x1001e438
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a8b7f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e448
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a8b7e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c746c], 0
je 0x1001e677
test al, al
je 0x1001e677
cmp byte [0x102a8bde], 1
jne 0x1001e677
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001e617
cmp edi, 9
jne 0x1001e50f
cmp dword [0x102c7470], 0
je 0x1001e0d3
push 0x100ed2ab
push 0x102a8c3f
mov byte [0x102a8bde], 0
mov byte [0x102a8c3e], 1
call fcn.1001ef90
add esp, 8
mov ecx, 0x100ed2ab
mov eax, 0x102a8bdf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e4f3
test dl, dl
je 0x1001e4ef
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e4f3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e4d3
xor eax, eax
jmp 0x1001e4f8
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001e0d3
push 0x100ee3e0
push 0x102a8bdf
jmp 0x1001e0cb
cmp edi, 0xd
je 0x1001e1e7
cmp edi, 0x30
jb 0x1001e522
cmp edi, 0x39
jbe 0x1001e52e
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001e575
movzx eax, word [ebp - 0x128]
jmp 0x1001e577
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100c9e5b
mov ecx, 0x102a8bdf
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e5b0
sub ecx, edx
cmp ecx, 0xa
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a8bdf
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e600
test dl, dl
je 0x1001e5ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e600
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e5d0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8bdf
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8bdf
jmp 0x1001df42
mov ecx, 0x100ed2ab
mov eax, 0x102a8bdf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e641
test dl, dl
je 0x1001e63d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e641
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e621
xor eax, eax
jmp 0x1001e646
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a8bdf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e656
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a8bde], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp dword [0x102c7470], 0
je 0x1001e877
test al, al
je 0x1001e877
cmp byte [0x102a8c3e], 1
jne 0x1001e877
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001e817
cmp edi, 9
jne 0x1001e710
push 0x100ed2ab
push 0x102a8b1f
mov byte [0x102a8c3e], 0
mov byte [0x102a8b1e], 1
call fcn.1001ef90
add esp, 8
mov ecx, 0x100ed2ab
mov eax, 0x102a8c3f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e6f4
test dl, dl
je 0x1001e6f0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e6f4
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e6d4
xor eax, eax
jmp 0x1001e6f9
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001e0d3
push 0x100ee3e0
push 0x102a8c3f
jmp 0x1001e0cb
cmp edi, 0xd
je 0x1001e1e7
cmp edi, 0x30
jb 0x1001e723
cmp edi, 0x39
jbe 0x1001e72f
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001e776
movzx eax, word [ebp - 0x128]
jmp 0x1001e778
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push 0xa
push eax
call fcn.100c9e5b
mov ecx, 0x102a8c3f
add esp, 0x18
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e7b0
sub ecx, edx
cmp ecx, 0xa
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a8c3f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e800
test dl, dl
je 0x1001e7ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e800
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e7d0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8c3f
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x1c]
push eax
push 0x3c
push 0x102a8c3f
jmp 0x1001df42
mov ecx, 0x100ed2ab
mov eax, 0x102a8c3f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e841
test dl, dl
je 0x1001e83d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e841
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e821
xor eax, eax
jmp 0x1001e846
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a8c3f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e856
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a8c3e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp byte [0x102a78bd], 0
je 0x1001ea66
cmp byte [0x102a7a9e], 1
jne 0x1001ea66
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001e9ff
cmp edi, 0xd
je 0x1001e99a
cmp edi, 0x30
jb 0x1001e8b0
cmp edi, 0x39
jbe 0x1001e8bc
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001e903
movzx eax, word [ebp - 0x128]
jmp 0x1001e905
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100c9e5b
mov ecx, 0x102a7a9f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e937
sub ecx, edx
cmp ecx, 0x10
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a7a9f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e983
test dl, dl
je 0x1001e96f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e983
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e953
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a7a9f
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a7a9f
jmp 0x1001df42
push 0x102a7a9f
push dword [0x1088f114]
mov ecx, 0x1088dcb8
call fcn.100aa530
cmp byte [0x102a78bd], 1
jne 0x1001e9da
xor eax, eax
mov byte [0x102a78bd], 0
pop edi
mov dword [0xe8cb3c], eax
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
mov eax, 1
mov byte [0x102a78bd], 1
pop edi
mov dword [0xe8cb3c], eax
mov al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
mov ecx, 0x100ed2ab
mov eax, 0x102a7a9f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ea30
test dl, dl
je 0x1001ea2c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ea30
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ea10
xor eax, eax
jmp 0x1001ea35
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a7a9f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ea45
sub ecx, edx
pop edi
pop esi
mov byte [ecx + 0x102a7a9e], al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp byte [0x102a6bfd], 0
je 0x1001ec00
cmp byte [0x102a731e], 1
jne 0x1001ec00
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001eb87
cmp edi, 0x30
jb 0x1001ea96
cmp edi, 0x39
jbe 0x1001eaa2
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001eae9
movzx eax, word [ebp - 0x128]
jmp 0x1001eaeb
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100c9e5b
mov ecx, 0x102a731f
add esp, 0x18
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001eb20
sub ecx, edx
cmp ecx, 0x10
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a731f
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001eb70
test dl, dl
je 0x1001eb5c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001eb70
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001eb40
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a731f
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a731f
jmp 0x1001df42
mov ecx, 0x100ed2ab
mov eax, 0x102a731f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ebb1
test dl, dl
je 0x1001ebad
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ebb1
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001eb91
xor eax, eax
jmp 0x1001ebb6
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a731f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ebc6
sub ecx, edx
mov byte [ecx + 0x102a731e], al
mov ecx, 0x102a731f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ebe0
sub ecx, edx
jne 0x1001df50
push 0x100ed2ab
push 0x3c
push 0x102a731f
jmp 0x1001df48
cmp byte [0x102a7dfd], 0
je 0x1001df50
cmp byte [0x102a7f7e], 1
jne 0x1001edc0
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001ed44
cmp edi, 9
jne 0x1001ec4d
pop edi
mov byte [0x102a7f7e], 0
mov al, 1
mov byte [0x102a7fde], 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x21
jb 0x1001ec57
cmp edi, 0x7e
jbe 0x1001ec6b
cmp edi, 0xbd
je 0x1001ec6b
cmp edi, 0xbe
jne 0x1001e0d3
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 0x1001ecb2
movzx eax, word [ebp - 0x128]
jmp 0x1001ecb4
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100c9e5b
mov ecx, 0x102a7f7f
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ece6
sub ecx, edx
cmp ecx, 0x1e
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a7f7f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ed22
test dl, dl
je 0x1001ed1e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ed22
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ed02
xor eax, eax
jmp 0x1001ed27
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a7f7f
je 0x1001df48
call fcn.100c9eb5
jmp 0x1001df4d
mov ecx, 0x100ed2ab
mov eax, 0x102a7f7f
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ed70
test dl, dl
je 0x1001ed6c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ed70
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ed50
xor eax, eax
jmp 0x1001ed75
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a7f7f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ed85
sub ecx, edx
mov byte [ecx + 0x102a7f7e], al
mov ecx, 0x102a7f7f
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001eda0
sub ecx, edx
jne 0x1001df50
push 0x100ed2ab
push 0x3c
push 0x102a7f7f
jmp 0x1001df48
cmp byte [0x102a7fde], 1
jne 0x1001df50
mov edi, dword [ebp + 8]
cmp edi, 8
je 0x1001eef7
cmp edi, 9
jne 0x1001ee00
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
mov byte [0x102a7f7e], 1
mov byte [0x102a7fde], 0
pop esi
call fcn.100c0a54
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x30
jb 0x1001ee0a
cmp edi, 0x39
jbe 0x1001ee16
lea eax, [edi - 0x60]
cmp eax, 9
ja 0x1001e0d3
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 0x1001ee5d
movzx eax, word [ebp - 0x128]
jmp 0x1001ee5f
xor eax, eax
cwde
test eax, eax
je 0x1001e0d3
push eax
lea eax, [ebp - 0x10]
push 0x100ee428
push eax
call fcn.1001ef70
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x24]
push 0x14
push eax
call fcn.100c9e5b
mov ecx, 0x102a7fdf
add esp, 0x18
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ee91
sub ecx, edx
cmp ecx, 7
jae 0x1001df50
mov ecx, 0x100ed2ab
mov eax, 0x102a7fdf
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001eee0
test dl, dl
je 0x1001eecc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001eee0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001eeb0
xor eax, eax
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a7fdf
jmp 0x1001df42
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x24]
push eax
push 0x3c
push 0x102a7fdf
jmp 0x1001df42
mov ecx, 0x100ed2ab
mov eax, 0x102a7fdf
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001ef21
test dl, dl
je 0x1001ef1d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001ef21
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001ef01
xor eax, eax
jmp 0x1001ef26
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001e0d3
mov ecx, 0x102a7fdf
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ef36
sub ecx, edx
mov byte [ecx + 0x102a7fde], al
mov ecx, 0x102a7fdf
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001ef50
sub ecx, edx
jne 0x1001df50
push 0x100ed2ab
push 0x3c
push 0x102a7fdf
jmp 0x1001df48