Function at 0x40e220
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x1c
mov eax, dword [0x4228e4]
push ebx
push ebp
push esi
push edi
xor ebp, ebp
mov dword [0x425464], eax
mov dword [0x425460], eax
mov eax, dword [0x427820]
push str.Loading_MOTOROLA_HEX_File
push ebp
push 0x401
push eax
mov dword [esp + 0x24], ebp
call dword [sym.imp.USER32.dll_SendMessageA]
mov ebx, dword [esp + 0x3c]
jmp 0x40e25d
mov ebp, dword [esp + 0x18]
push 0x1b
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x40e4a3
call fcn.0040df10
test eax, eax
jl 0x40e4a3
inc ebp
cmp eax, 0x53
je 0x40e286
cmp eax, 0x73
jne 0x40e26e
mov byte [0x426080], al
mov esi, 0x426081
call fcn.0040df10
test eax, eax
jl 0x40e4a3
inc ebp
cmp eax, 0xd
mov dword [esp + 0x18], ebp
je 0x40e2b1
cmp eax, 0xa
je 0x40e2b1
mov byte [esi], al
inc esi
jmp 0x40e290
mov ecx, dword [esp + 0x30]
mov dword [0x427740], ebp
push ecx
call fcn.004156d0
mov al, byte [0x426081]
add esp, 4
xor edi, edi
cmp al, 0x39
je 0x40e4a3
cmp al, 0x38
je 0x40e4a3
cmp al, 0x37
je 0x40e4a3
cmp al, 0x31
je 0x40e2f3
cmp al, 0x32
je 0x40e2f3
cmp al, 0x33
jne 0x40e25d
mov dl, byte [0x426082]
mov al, byte [0x426083]
lea ecx, [esp + 0x20]
mov byte [esp + 0x20], dl
push ecx
mov byte [esp + 0x25], al
mov byte [esp + 0x26], 0
call fcn.00415800
mov dl, byte [0x426084]
mov cl, byte [0x426086]
mov si, ax
mov al, byte [0x426085]
mov byte [esp + 0x25], al
xor eax, eax
mov al, byte [0x426081]
mov byte [esp + 0x24], dl
mov dl, byte [0x426087]
add esp, 4
and esi, 0xffff
sub eax, 0x31
mov byte [esp + 0x22], cl
mov byte [esp + 0x23], dl
je 0x40e3b2
dec eax
je 0x40e38f
dec eax
jne 0x40e3bf
mov al, byte [0x426088]
mov cl, byte [0x426089]
mov dl, byte [0x42608a]
mov byte [esp + 0x24], al
mov al, byte [0x42608b]
sub esi, 5
mov byte [esp + 0x25], cl
mov byte [esp + 0x26], dl
mov byte [esp + 0x27], al
mov byte [esp + 0x28], 0
mov edi, 0xc
jmp 0x40e3bf
mov cl, byte [0x426088]
mov dl, byte [0x426089]
sub esi, 4
mov byte [esp + 0x24], cl
mov byte [esp + 0x25], dl
mov byte [esp + 0x26], 0
mov edi, 0xa
jmp 0x40e3bf
sub esi, 3
mov byte [esp + 0x24], 0
mov edi, 8
lea eax, [esp + 0x20]
push eax
call fcn.00415890
add esp, 4
xor ecx, ecx
test esi, esi
mov dword [0x424204], ecx
jle 0x40e25d
mov edx, dword [0x424184]
mov ebp, eax
mov eax, dword [esp + 0x14]
lea edi, [edi + 0x426081]
add eax, esi
mov dword [esp + 0x14], eax
cmp ebp, dword [esp + 0x34]
jb 0x40e479
cmp ebp, dword [esp + 0x38]
ja 0x40e479
mov cl, byte [edi - 1]
mov dl, byte [edi]
lea eax, [esp + 0x10]
mov byte [esp + 0x10], cl
push eax
mov byte [esp + 0x15], dl
mov byte [esp + 0x16], 0
call fcn.00415800
mov ecx, dword [0x424204]
add esp, 4
and eax, 0xffff
test ecx, ecx
jne 0x40e438
mov edx, ebp
mov dword [0x424184], edx
jmp 0x40e43e
mov edx, dword [0x424184]
cmp dword [0x424018], 0
jne 0x40e46c
mov ebx, dword [0x427710]
sub ebx, dword [esp + 0x34]
add ebx, edx
add ebx, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x3c]
mov byte [ecx + ebx], al
mov ecx, dword [0x424204]
mov edx, dword [0x424184]
jmp 0x40e472
mov byte [ecx + 0x426640], al
inc ecx
mov dword [0x424204], ecx
add edi, 2
inc ebp
dec esi
jne 0x40e3f4
test ecx, ecx
je 0x40e259
mov edi, dword [esp + 0x34]
push ecx
sub edx, edi
add edx, ebx
push edx
call fcn.00417590
add esp, 8
jmp 0x40e259
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x1c
ret