Function at 0x4030f0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x10
push ebx
mov bl, byte [esp + 0x18]
push esi
cmp bl, 0x41
push edi
mov byte [esp + 0x20], bl
jl 0x403108
cmp bl, 0x5a
jle 0x403112
cmp bl, 0x61
jl 0x403136
cmp bl, 0x7a
jg 0x403136
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
test eax, 0x80000
je 0x40312e
cmp bl, 0x61
jge 0x403136
add bl, 0x20
jmp 0x403136
cmp bl, 0x5a
jle 0x403136
add bl, 0xe0
mov eax, dword [0x45cff0]
mov dword [esp + 0xc], 0
cmp eax, 4
ja case.default.0x40314c
jmp dword [eax*4 + 0x403aa4]
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.KkOIoJjPUupHhYyNnBbMmLl], bl
je 0x40316c
inc eax
cmp ax, 0x17
jb 0x403155
cmp ax, 0x17
mov byte [0x45d003], 1
mov dword [0x45cff0], 3
je case.0x40314c.3
mov dl, byte [0x45d000]
mov byte [0x45cfec], bl
mov byte [esp + 0x10], dl
mov byte [esp + 0x11], bl
mov byte [esp + 0x12], 0
xor edi, edi
mov eax, edi
lea esi, [esp + 0x10]
and eax, 0xffff
mov eax, dword [eax*4 + 0x450d00]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4031d8
test cl, cl
je 0x4031d4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4031d8
add eax, 2
add esi, 2
test cl, cl
jne 0x4031b4
xor eax, eax
jmp 0x4031dd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4031e8
inc edi
cmp di, 0xe
jb 0x4031a2
cmp di, 0xe
jne 0x403257
mov al, byte [0x45cff6]
mov cl, byte [0x45cfed]
mov dl, byte [0x45d002]
push eax
push ecx
push edx
call fcn.00401eb0
mov esi, dword [esp + 0x30]
xor ecx, ecx
mov cl, ah
add esp, 0xc
mov byte [esi], cl
mov byte [esi + 1], al
mov al, byte [0x45cff4]
mov dword [esp + 0xc], 2
test al, al
je 0x403248
movsx edx, byte [esi + 1]
movsx eax, byte [esi]
push edx
push eax
push 0xe08
push 0xe08
push str._c_c_c_c
call fcn.0043caa0
add esp, 0x14
push 0x44efc8
call fcn.0043caa0
add esp, 4
jmp 0x403284
mov cl, byte [0x45cff6]
mov dl, byte [0x45d002]
and edi, 0xffff
push ecx
mov al, byte [edi + 0x450d38]
push eax
push edx
mov byte [0x45cfed], al
call fcn.00401eb0
add esp, 0xc
test ax, ax
jne 0x4032a6
call fcn.0042acd0
mov dword [0x45cff0], 1
mov byte [0x45bd44], 1
mov byte [0x45cff5], 1
jmp case.0x40314c.1
mov ecx, dword [esp + 0x24]
xor edx, edx
mov dl, ah
mov dword [esp + 0xc], 2
mov byte [ecx], dl
mov byte [ecx + 1], al
mov al, byte [0x45cff4]
mov dword [0x45cff0], 3
test al, al
mov byte [0x45d003], 1
je 0x403a8c
mov eax, ecx
movsx ecx, byte [eax + 1]
movsx edx, byte [eax]
push ecx
jmp 0x4037d4
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.RrSsEFfAaQTtDdWCcZzXxVvGg], bl
je 0x403301
inc eax
cmp ax, 0x19
jb 0x4032ea
cmp ax, 0x19
jne 0x40347b
xor esi, esi
mov edx, esi
and edx, 0xffff
cmp byte [edx + str.KkOIoJjPUupHhYyNnBbMmLl], bl
je 0x403324
inc esi
cmp si, 0x17
jb 0x40330d
cmp si, 0x17
jne 0x403381
call fcn.0042acd0
mov byte [0x45bd44], 1
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg], bl
je 0x40334f
inc eax
cmp ax, 0x1c
jb 0x403338
cmp ax, 0x1c
jne case.0x40314c.0
mov edx, dword [esp + 0x24]
mov al, byte [esp + 0x20]
mov dword [esp + 0xc], 1
mov byte [edx], al
movsx eax, al
push eax
push 0x44efc4
call fcn.0043caa0
add esp, 8
jmp 0x403a8c
mov cl, byte [0x45cfed]
mov dl, byte [0x45d002]
push 1
push ecx
push edx
mov byte [0x45cff6], 1
call fcn.00401eb0
mov edi, dword [esp + 0x30]
xor ecx, ecx
mov cl, ah
add esp, 0xc
mov byte [edi], cl
mov byte [edi + 1], al
mov al, byte [0x45cff7]
test al, al
je 0x4033d6
movsx edx, byte [edi + 1]
movsx eax, byte [edi]
push edx
push eax
push 0xe08
push 0xe08
push str._c_c_c_c
call fcn.0043caa0
add esp, 0x14
mov cl, byte [0x45d004]
and esi, 0xffff
mov byte [0x45d000], bl
xor eax, eax
mov dl, byte [esi + 0x450ce8]
mov byte [0x45cfed], dl
mov esi, eax
and esi, 0xffff
cmp byte [esi + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg], cl
je 0x40340d
inc eax
cmp ax, 0x1c
jb 0x4033f6
mov cl, byte [0x45cff6]
and eax, 0xffff
push ecx
push edx
mov al, byte [eax + 0x450cb0]
push eax
mov byte [0x45d002], al
call fcn.00401eb0
xor edx, edx
add esp, 0xc
mov dl, ah
mov dword [esp + 0xc], 4
mov byte [edi + 2], dl
mov byte [edi + 3], al
mov byte [0x45d003], 0
mov byte [0x45cff7], 0
mov dword [0x45cff0], 2
mov byte [0x45bd44], 1
movsx eax, byte [edi + 3]
movsx ecx, byte [edi + 2]
push eax
push ecx
push str._c_c
call fcn.0043caa0
add esp, 0xc
jmp 0x403a8c
mov dl, byte [0x45d004]
mov byte [0x45d001], bl
mov byte [esp + 0x10], dl
mov byte [esp + 0x11], bl
mov byte [esp + 0x12], 0
xor edi, edi
mov eax, edi
lea esi, [esp + 0x10]
and eax, 0xffff
mov eax, dword [eax*4 + 0x450d88]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4034d0
test cl, cl
je 0x4034cc
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4034d0
add eax, 2
add esi, 2
test cl, cl
jne 0x4034a8
xor eax, eax
jmp 0x4034d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4034e0
inc edi
cmp di, 0x16
jb 0x403496
cmp di, 0x16
je 0x403512
mov cl, byte [0x45d002]
and edi, 0xffff
mov al, byte [edi + 0x450de0]
mov byte [0x45cff6], al
push eax
mov al, byte [0x45cfed]
push eax
push ecx
call fcn.00401eb0
add esp, 0xc
test ax, ax
jne 0x403529
call fcn.0042acd0
mov bl, byte [0x45d001]
mov byte [0x45bd44], 1
jmp case.0x40314c.0
mov ecx, dword [esp + 0x24]
xor edx, edx
mov dl, ah
mov dword [esp + 0xc], 2
mov byte [ecx], dl
mov byte [ecx + 1], al
mov al, byte [0x45cff7]
mov byte [0x45d005], 1
test al, al
mov dword [0x45cff0], 5
je 0x403a8c
mov eax, ecx
movsx ecx, byte [eax + 1]
movsx edx, byte [eax]
push ecx
jmp 0x4037d4
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.KkOIoJjPUupHhYyNnBbMmLl], bl
je 0x403584
inc eax
cmp ax, 0x17
jb 0x40356d
cmp ax, 0x17
jne 0x40395b
call fcn.0042acd0
mov byte [0x45bd44], 1
xor eax, eax
mov edx, eax
and edx, 0xffff
cmp byte [edx + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg], bl
je 0x4035b3
inc eax
cmp ax, 0x1c
jb 0x40359c
cmp ax, 0x1c
je 0x403933
mov byte [0x45cff5], 0
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg], bl
je 0x4035dd
inc eax
cmp ax, 0x1c
jb 0x4035c6
cmp ax, 0x1c
jne 0x4038ae
push 0x44efc8
mov byte [0x45cff5], 1
call fcn.0043caa0
add esp, 4
xor eax, eax
mov edx, eax
and edx, 0xffff
cmp byte [edx + str.KkOIoJjPUupHhYyNnBbMmLl], bl
je 0x403614
inc eax
cmp ax, 0x17
jb 0x4035fd
cmp ax, 0x17
jne 0x4037f1
mov byte [0x45d003], 1
mov byte [0x45cff4], 1
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.RrSsEFfAaQTtDdWCcZzXxVvGg], bl
je 0x403645
inc eax
cmp ax, 0x19
jb 0x40362e
cmp ax, 0x19
jne 0x40372f
xor eax, eax
mov edx, eax
and edx, 0xffff
cmp byte [edx + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg], bl
je 0x403668
inc eax
cmp ax, 0x1c
jb 0x403651
cmp ax, 0x1c
je 0x40367f
call fcn.0042acd0
mov byte [0x45bd44], 1
jmp case.0x40314c.0
xor eax, eax
mov ecx, eax
and ecx, 0xffff
cmp byte [ecx + str.KkOIoJjPUupHhYyNnBbMmLl], bl
je 0x403698
inc eax
cmp ax, 0x17
jb 0x403681
cmp ax, 0x17
je 0x4036cd
call fcn.0042acd0
push 0x44efc8
mov dword [0x45cff0], 1
mov byte [0x45bd44], 1
call fcn.0043caa0
add esp, 4
mov byte [0x45cff5], 1
jmp case.0x40314c.1
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
mov bl, byte [esp + 0x20]
mov edx, eax
and edx, 0xffff
inc eax
mov dword [esp + 0xc], eax
mov byte [edx + ecx], bl
mov al, byte [0x45d002]
cmp al, 1
jne 0x403712
cmp byte [0x45cfed], 2
jne 0x403712
push 0xe08
push 0xe08
push str._c_c
call fcn.0043caa0
add esp, 0xc
movsx edx, byte [esp + 0x20]
push edx
push 0x44efc4
call fcn.0043caa0
add esp, 8
call fcn.0042acd0
jmp 0x403a85
mov cl, byte [0x45d002]
and eax, 0xffff
mov byte [0x45d004], bl
mov al, byte [eax + 0x450d68]
mov byte [0x45cff6], al
push eax
mov al, byte [0x45cfed]
push eax
push ecx
call fcn.00401eb0
add esp, 0xc
test ax, ax
jne 0x403771
call fcn.0042acd0
mov byte [0x45bd44], 1
jmp case.0x40314c.0
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
mov edi, ecx
xor edx, edx
and edi, 0xffff
mov dl, ah
inc ecx
mov byte [edi + esi], dl
mov edx, ecx
and edx, 0xffff
inc ecx
mov dword [esp + 0xc], ecx
mov byte [edx + esi], al
mov al, byte [0x45cff4]
test al, al
mov byte [0x45cff7], 1
mov dword [0x45cff0], 4
jne 0x4037c0
mov al, byte [0x45d003]
test al, al
je 0x403a8c
and ecx, 0xffff
movsx edx, byte [ecx + esi - 2]
lea eax, [ecx + esi]
movsx ecx, byte [ecx + esi - 1]
push ecx
push edx
push 0xe08
push 0xe08
push str._c_c_c_c
call fcn.0043caa0
add esp, 0x14
jmp 0x403a8c
mov cl, byte [0x45cff6]
mov dl, byte [0x45d002]
and eax, 0xffff
push ecx
mov byte [0x45d000], bl
mov al, byte [eax + 0x450ce8]
push eax
push edx
mov byte [0x45cfed], al
call fcn.00401eb0
add esp, 0xc
test ax, ax
jne 0x403837
push 7
push 0x44efc4
call fcn.00443540
add esp, 8
jmp 0x403a8c
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
mov edi, ecx
xor edx, edx
and edi, 0xffff
mov dl, ah
inc ecx
mov byte [edi + esi], dl
mov edx, ecx
and edx, 0xffff
inc ecx
mov dword [esp + 0xc], ecx
mov byte [edx + esi], al
mov al, byte [0x45cff5]
test al, al
mov dword [0x45cff0], 2
mov byte [0x45cff4], 1
je 0x403a8c
mov eax, ecx
mov ecx, esi
and eax, 0xffff
add eax, ecx
movsx edx, byte [eax - 1]
movsx eax, byte [eax - 2]
push edx
push eax
push 0xe08
push 0xe08
push str._c_c_c_c
call fcn.0043caa0
add esp, 0x14
jmp 0x403a8c
mov cl, byte [0x45cff6]
mov dl, byte [0x45cfed]
and eax, 0xffff
push ecx
push edx
mov al, byte [eax + 0x450cb0]
push eax
mov byte [0x45d002], al
call fcn.00401eb0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x30]
mov edi, ecx
xor edx, edx
and edi, 0xffff
add esp, 0xc
mov dl, ah
inc ecx
mov byte [edi + esi], dl
mov edx, ecx
and edx, 0xffff
inc ecx
mov dword [esp + 0xc], ecx
and ecx, 0xffff
mov byte [edx + esi], al
mov dword [0x45cff0], 1
lea eax, [ecx + esi]
mov byte [0x45cff5], 1
movsx ecx, byte [eax - 1]
movsx edx, byte [eax - 2]
push ecx
push edx
push str._c_c
call fcn.0043caa0
add esp, 0xc
jmp 0x403a8c
mov al, byte [esp + 0x20]
mov ecx, dword [esp + 0x24]
movsx edx, al
push edx
push 0x44efc4
mov byte [ecx], al
mov dword [esp + 0x14], 1
call fcn.0043caa0
add esp, 8
jmp 0x403a8c
mov cl, byte [0x45d004]
mov esi, eax
mov byte [0x45d000], bl
xor eax, eax
mov edx, eax
and edx, 0xffff
cmp byte [edx + str.RrSsEFfAaQTtDdWCcZzXxVvGg], cl
je 0x403982
inc eax
cmp ax, 0x19
jb 0x40396b
mov cl, byte [0x45d002]
and eax, 0xffff
mov al, byte [eax + 0x450d68]
mov byte [0x45cff6], al
push eax
mov al, byte [0x45cfed]
push eax
push ecx
call fcn.00401eb0
mov edi, dword [esp + 0x30]
xor edx, edx
mov dl, ah
add esp, 0xc
mov byte [edi], dl
mov byte [edi + 1], al
mov al, byte [0x45cff7]
test al, al
je 0x4039de
movsx eax, byte [edi + 1]
movsx ecx, byte [edi]
push eax
push ecx
push 0xe08
push 0xe08
push str._c_c_c_c
call fcn.0043caa0
add esp, 0x14
and esi, 0xffff
xor eax, eax
xor ecx, ecx
mov byte [0x45cff6], 1
mov dl, byte [esi + 0x450ce8]
mov cl, byte [0x45d001]
mov byte [0x45cfed], dl
mov esi, eax
and esi, 0xffff
movsx esi, byte [esi + str.RrSsEeFfAaQqTtDdWwCcZzXxVvGg]
cmp esi, ecx
je 0x403a1b
inc eax
cmp ax, 0x1c
jb 0x403a01
and eax, 0xffff
push 1
push edx
mov al, byte [eax + 0x450cb0]
push eax
mov byte [0x45d002], al
call fcn.00401eb0
xor edx, edx
add esp, 0xc
mov dl, ah
mov dword [esp + 0xc], 4
mov byte [edi + 2], dl
mov byte [edi + 3], al
movsx ecx, byte [edi + 2]
movsx eax, al
push eax
push ecx
push str._c_c
call fcn.0043caa0
add esp, 0xc
mov byte [0x45d003], 0
mov byte [0x45cff7], 0
mov byte [0x45d005], 0
mov dword [0x45cff0], 2
mov byte [0x45cff6], 1
mov byte [0x45bd44], 1
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x24]
and eax, 0xffff
pop edi
pop esi
pop ebx
mov byte [eax + edx], 0
add esp, 0x10
ret