Function at 0x40dad0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x446fe8
mov eax, dword fs:[0]
push eax
sub esp, 0x54
mov eax, dword [0x45a4b8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call esi
test eax, 0x8000
je 0x40db1d
push 0x11
call esi
test eax, 0x8000
jne 0x40e49a
push 0x11
call esi
test eax, 0x8000
je 0x40de39
mov ebx, dword [edi + 0x68]
cmp ebx, 0xff
jge 0x40dba3
push ebx
call esi
shr eax, 0xf
and al, 1
je 0x40db9d
cmp byte [ebx + 0x45d768], 0
jne 0x40db9d
mov ecx, edi
mov byte [ebx + 0x45d768], 1
call fcn.0040cd50
test eax, eax
je 0x40dba3
push 0x4524b0
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0
sub esp, 0x10
lea eax, [ebp - 0x28]
push 1
push ecx
push 1
push eax
mov ecx, edi
call fcn.0040e4c0
cmp dword [ebp - 0x14], 0x10
jb 0x40e49a
push dword [ebp - 0x28]
call fcn.0042d411
add esp, 4
jmp 0x40e49a
mov byte [ebx + 0x45d768], al
mov ebx, dword [edi + 0x6c]
cmp ebx, 0xff
jge 0x40dbef
push ebx
call esi
shr eax, 0xf
and al, 1
je 0x40dbe9
cmp byte [ebx + 0x45d768], 0
jne 0x40dbe9
mov ecx, edi
mov byte [ebx + 0x45d768], 1
call fcn.0040cd50
test eax, eax
je 0x40dbef
push 0x4524b4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 1
jmp 0x40db70
mov byte [ebx + 0x45d768], al
mov ebx, dword [edi + 0x70]
cmp ebx, 0xff
jge 0x40dc59
push ebx
call esi
shr eax, 0xf
and al, 1
je 0x40dc53
cmp byte [ebx + 0x45d768], 0
jne 0x40dc53
mov ecx, edi
mov byte [ebx + 0x45d768], 1
call fcn.0040cd50
test eax, eax
je 0x40dc59
push 0x4524b8
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 2
sub esp, 0x10
push 1
push ecx
push 1
lea eax, [ebp - 0x28]
mov ecx, edi
push eax
call fcn.0040e4c0
lea ecx, [ebp - 0x28]
call fcn.00401860
jmp 0x40e49a
mov byte [ebx + 0x45d768], al
push dword [edi + 0x74]
call fcn.0040ebb0
test eax, eax
je 0x40e49a
push str.baseC4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 3
push eax
mov ecx, edi
call fcn.0040f5a0
cmp dword [eax + 8], 0x10000
mov dword [ebp - 4], 0xffffffff
setbe bl
cmp dword [ebp - 0x14], 0x10
jb 0x40dcaa
push dword [ebp - 0x28]
call fcn.0042d411
add esp, 4
test bl, bl
je 0x40dd08
push str.baseC4
lea ecx, [ebp - 0x28]
mov dword [0x45b4d0], 0x8ec8
call fcn.00408cc0
sub esp, 0x18
mov dword [ebp - 4], 4
mov ecx, esp
push str.A1_____8B_90_C8_8E_00_00
call fcn.00408cc0
push 0
push 1
push 1
lea ecx, [edi + 0x2c]
call fcn.00412380
mov esi, eax
mov ecx, edi
lea eax, [ebp - 0x28]
push eax
call fcn.0040f5a0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 8], esi
call fcn.00401860
push str.baseC4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 5
push eax
mov ecx, edi
call fcn.0040f5a0
cmp dword [eax + 8], 0x10000
mov dword [ebp - 4], 0xffffffff
setbe bl
cmp dword [ebp - 0x14], 0x10
jb 0x40dd49
push dword [ebp - 0x28]
call fcn.0042d411
add esp, 4
test bl, bl
je 0x40dda7
push str.baseC4
lea ecx, [ebp - 0x28]
mov dword [0x45b4d0], 0xf548
call fcn.00408cc0
sub esp, 0x18
mov dword [ebp - 4], 6
mov ecx, esp
push str.A1_____8B_90_48_F5_00_00
call fcn.00408cc0
push 1
push 1
push 1
lea ecx, [edi + 0x2c]
call fcn.00412380
mov esi, eax
mov ecx, edi
lea eax, [ebp - 0x28]
push eax
call fcn.0040f5a0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 8], esi
call fcn.00401860
push str.baseC4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 7
push eax
mov ecx, edi
call fcn.0040f5a0
cmp dword [eax + 8], 0x10000
mov dword [ebp - 4], 0xffffffff
setbe bl
cmp dword [ebp - 0x14], 0x10
jb 0x40dde8
push dword [ebp - 0x28]
call fcn.0042d411
add esp, 4
test bl, bl
jne 0x40e49a
mov ecx, edi
call fcn.004115f0
push 0x452a9c
lea ecx, [ebp - 0x28]
call fcn.00408cc0
sub esp, 8
mov dword [ebp - 4], 8
lea eax, [ebp - 0x28]
mov ecx, edi
push 1
push 0x3b9ac9ff
push eax
call fcn.0040f5a0
lea ecx, [edi + 0x2c]
mov eax, dword [eax + 8]
push eax
call fcn.0040fc70
lea ecx, [ebp - 0x28]
call fcn.00401860
jmp 0x40e49a
push 0x12
call esi
push dword [edi + 0x68]
test eax, 0x8000
je 0x40e0f5
call esi
test eax, 0x8000
je 0x40de9e
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40de9e
push 0x4529ec
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 9
sub esp, 8
lea eax, [ebp - 0x28]
mov ecx, edi
push 1
push 1
push eax
call fcn.0040f5a0
lea ecx, [edi + 0x2c]
mov eax, dword [eax + 8]
push eax
call fcn.0040fcc0
lea ecx, [ebp - 0x28]
call fcn.00401860
jmp 0x40e49a
push dword [edi + 0x6c]
call esi
test eax, 0x8000
je 0x40decb
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40decb
push 0x4529f0
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xa
jmp 0x40de73
push dword [edi + 0x70]
call esi
test eax, 0x8000
je 0x40defb
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40defb
push 0x4529f4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xb
jmp 0x40de73
push dword [edi + 0x74]
call esi
test eax, 0x8000
je 0x40df2b
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40df2b
push 0x4529f8
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xc
jmp 0x40de73
push dword [edi + 0x78]
call fcn.0040ebb0
test eax, eax
je 0x40df5b
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40df5b
push 0x4529fc
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xd
jmp 0x40de73
push dword [edi + 0x7c]
call fcn.0040ebb0
test eax, eax
je 0x40df8b
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40df8b
push 0x452a00
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xe
jmp 0x40de73
push dword [edi + 0x80]
call fcn.0040ebb0
test eax, eax
je 0x40dfbe
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40dfbe
push 0x452a04
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0xf
jmp 0x40de73
push dword [edi + 0x84]
call fcn.0040ebb0
test eax, eax
je 0x40dff1
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40dff1
push 0x452a08
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x10
jmp 0x40de73
push dword [edi + 0x88]
call fcn.0040ebb0
test eax, eax
je 0x40e024
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40e024
push 0x452a0c
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x11
jmp 0x40de73
push dword [edi + 0x64]
call esi
test eax, 0x8000
je 0x40e054
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40e054
push 0x452a10
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x12
jmp 0x40de73
push dword [edi + 0x8c]
call fcn.0040ebb0
test eax, eax
je 0x40e087
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40e087
push 0x452a14
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x13
jmp 0x40de73
push dword [edi + 0x90]
call fcn.0040ebb0
test eax, eax
je 0x40e0ba
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40e0ba
push 0x452a18
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x14
jmp 0x40de73
push dword [edi + 0x94]
call fcn.0040ebb0
test eax, eax
je 0x40e49a
mov ecx, edi
call fcn.0040d050
test eax, eax
je 0x40e49a
push 0x452a1c
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x15
jmp 0x40de73
call fcn.0040ebb0
test eax, eax
je 0x40e122
mov ecx, edi
call fcn.0040c1f0
test eax, eax
je 0x40e122
push 0x452030
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x16
jmp 0x40dc33
push dword [edi + 0x6c]
call fcn.0040ebb0
test eax, eax
je 0x40e152
mov ecx, edi
call fcn.0040c4a0
test eax, eax
je 0x40e152
push str.23456
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x17
jmp 0x40dc33
push dword [edi + 0x70]
call fcn.0040ebb0
test eax, eax
je 0x40e182
mov ecx, edi
call fcn.0040c4a0
test eax, eax
je 0x40e182
push 0x45221c
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x18
jmp 0x40dc33
push dword [edi + 0x74]
call fcn.0040ebb0
test eax, eax
je 0x40e1b2
mov ecx, edi
call fcn.0040c4a0
test eax, eax
je 0x40e1b2
push 0x452220
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x19
jmp 0x40dc33
push dword [edi + 0x78]
call fcn.0040ebb0
test eax, eax
je 0x40e1e2
mov ecx, edi
call fcn.0040c4a0
test eax, eax
je 0x40e1e2
push 0x452224
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x1a
jmp 0x40dc33
push dword [edi + 0x7c]
call fcn.0040ebb0
test eax, eax
je 0x40e212
mov ecx, edi
call fcn.0040c4a0
test eax, eax
je 0x40e212
push 0x452228
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x1b
jmp 0x40dc33
push dword [edi + 0x80]
call fcn.0040ebb0
test eax, eax
je 0x40e278
push 0x452aa0
lea ecx, [ebp - 0x28]
call fcn.00408cc0
sub esp, 0x10
mov dword [ebp - 4], 0x1c
lea eax, [ebp - 0x28]
push 1
push ecx
push 1
push eax
mov ecx, edi
call fcn.0040e4c0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
call fcn.00401860
push 0x452aa4
lea ecx, [ebp - 0x28]
call fcn.00408cc0
sub esp, 0x10
mov dword [ebp - 4], 0x1d
push 1
push ecx
push 0
jmp 0x40dc3b
push dword [edi + 0x84]
call fcn.0040ebb0
test eax, eax
je 0x40e2a0
push 0x452aa8
lea ecx, [ebp - 0x28]
call fcn.00408cc0
mov dword [ebp - 4], 0x1e
jmp 0x40dc33
push dword [edi + 0x88]
call fcn.0040ebb0
test eax, eax
je 0x40e2cd
push 0x452aac
lea ecx, [ebp - 0x28]
call fcn.00408cc0
sub esp, 0x10
mov dword [ebp - 4], 0x1f
push 2
jmp 0x40dc38
push dword [edi + 0x64]
call fcn.0040ebb0
test eax, eax
je 0x40e3b3
mov ecx, edi
call fcn.0040c1f0
test eax, eax
je 0x40e3b3
push 0x452034
lea ecx, [ebp - 0x28]
call fcn.00408cc0
sub esp, 0x10
mov dword [ebp - 4], 0x20
lea eax, [ebp - 0x28]
push 1
push ecx
push 1
push eax
mov ecx, edi
call fcn.0040e4c0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
call fcn.00401860
push 0x452034
lea ecx, [ebp - 0x40]
call fcn.00408cc0
push 0x452ab0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0x21
call fcn.00408cc0
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 0x22
push eax
mov ecx, edi
call fcn.0040f5a0
xor ebx, ebx
mov ecx, edi
cmp dword [eax + 0x28], ebx
lea eax, [ebp - 0x28]
push eax
sete bl
call fcn.0040f5a0
lea ecx, [ebp - 0x28]
mov dword [eax + 0x28], ebx
call fcn.00401860
lea ecx, [ebp - 0x40]
mov dword [ebp - 4], 0xffffffff
call fcn.00401860
push 0x452ab0
lea ecx, [ebp - 0x40]
call fcn.00408cc0
mov dword [ebp - 4], 0x23
sub esp, 0x10
lea eax, [ebp - 0x40]
push 1
push ecx
push 1
push eax
mov ecx, edi
call fcn.0040e4c0
lea ecx, [ebp - 0x40]
call fcn.00401860
jmp 0x40e49a
push dword [edi + 0x90]
call fcn.0040ebb0
test eax, eax
je 0x40e3e3
mov ecx, edi
call fcn.0040ca30
test eax, eax
je 0x40e3e3
push 0x4523f0
lea ecx, [ebp - 0x40]
call fcn.00408cc0
mov dword [ebp - 4], 0x24
jmp 0x40e393
push dword [edi + 0x94]
call fcn.0040ebb0
test eax, eax
je 0x40e413
mov ecx, edi
call fcn.0040ca30
test eax, eax
je 0x40e413
push 0x4523f4
lea ecx, [ebp - 0x40]
call fcn.00408cc0
mov dword [ebp - 4], 0x25
jmp 0x40e393
push 0x2d
call esi
shr eax, 0xf
and al, 1
je 0x40e46a
cmp byte [0x45d795], 0
jne 0x40e46a
mov ecx, edi
mov byte [0x45d795], 1
call fcn.0040ca30
test eax, eax
je 0x40e46f
push str.Insert
lea ecx, [ebp - 0x58]
call fcn.00408cc0
sub esp, 0x10
mov dword [ebp - 4], 0x26
lea eax, [ebp - 0x58]
push 1
push ecx
push 1
push eax
mov ecx, edi
call fcn.0040e4c0
lea ecx, [ebp - 0x58]
call fcn.00401860
jmp 0x40e49a
mov byte [0x45d795], al
push 0x24
call esi
shr eax, 0xf
and al, 1
je 0x40e495
cmp byte [0x45d78c], 0
jne 0x40e495
push 0
mov ecx, edi
mov byte [0x45d78c], 1
call fcn.0040edb0
jmp 0x40e49a
mov byte [0x45d78c], al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d416
mov esp, ebp
pop ebp
ret