Function at 0x453862
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x908
mov al, byte [0x45f128]
push ebx
push esi
mov dword [ebp - 4], ecx
push edi
mov byte [ebp - 0x908], al
mov ecx, 0x1ff
xor eax, eax
lea edi, [ebp - 0x907]
push 0xcd
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
call fcn.00424a93
mov edi, dword [ebp + 8]
pop ecx
mov esi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x453947
mov eax, dword [ebp + 8]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4538d5
test cl, cl
je 0x4538cf
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4538d5
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x4538b1
xor edx, edx
xor eax, eax
jmp 0x4538dc
sbb eax, eax
sbb eax, 0xffffffff
xor edx, edx
cmp eax, edx
jne 0x453947
mov edi, 0x410a48
or ecx, 0xffffffff
xor eax, eax
lea ebx, [ebp - 0x908]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp dword [0x471e24], edx
rep movsb byte es:[edi], byte [esi]
je 0x45392c
cmp dword [ebp + 0xc], edx
jne 0x45392c
lea eax, [ebp - 0x908]
push edx
push eax
mov ecx, 0x475a08
call fcn.00415de0
jmp 0x453acf
push edx
push edx
push edx
lea eax, [ebp - 0x908]
push 2
push eax
mov ecx, 0x475a08
call fcn.00415cb4
jmp 0x453acf
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push 0x800
push eax
push dword [ebp + 8]
call fcn.00453793
test eax, eax
je 0x453975
lea eax, [ebp - 0x908]
push 1
push eax
mov ecx, 0x496d18
call fcn.004503dc
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push eax
call fcn.00451b2a
test eax, eax
jne 0x453acf
lea eax, [ebp - 0x908]
mov ecx, 0x4759e0
push eax
call fcn.0043aa46
test eax, eax
jne 0x453acf
lea eax, [ebp - 0x908]
push eax
call fcn.004235fb
lea eax, [ebp - 0x908]
push eax
call fcn.00425aa3
pop ecx
mov ebx, 0x475a08
test eax, eax
pop ecx
je 0x4539e1
push dword [ebp + 0x10]
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push 0
push eax
call fcn.00450ce9
jmp 0x453ac6
mov al, byte [0x45f128]
push 0x40
mov byte [ebp - 0x108], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x107]
rep stosd dword es:[edi], eax
and dword [ebp + 8], 0
push 0x104
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x108]
mov ecx, 0x497860
push eax
call fcn.00443fbb
lea esi, [ebp - 0x908]
lea eax, [ebp - 0x108]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x453a46
test cl, cl
je 0x453a40
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x453a46
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x453a22
xor esi, esi
xor eax, eax
jmp 0x453a4d
sbb eax, eax
sbb eax, 0xffffffff
xor esi, esi
cmp eax, esi
jne 0x453a67
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 8
test al, al
je 0x453a67
mov dword [ebp + 8], 1
cmp dword [0x471e24], esi
je 0x453a8a
cmp dword [ebp + 0xc], esi
jne 0x453a8a
cmp dword [ebp + 8], esi
jne 0x453a8a
lea eax, [ebp - 0x908]
push esi
push eax
mov ecx, ebx
call fcn.00415de0
jmp 0x453a9d
push esi
push esi
push esi
lea eax, [ebp - 0x908]
push 2
push eax
mov ecx, ebx
call fcn.00415cb4
lea eax, [ebp - 0x908]
push 0x40a71c
push eax
call dword [sym.imp.MSVCRT.dll__stricmp]
pop ecx
test eax, eax
pop ecx
je 0x453ac6
lea eax, [ebp - 0x908]
mov ecx, 0x496d18
push eax
call fcn.0045123c
push 0
mov ecx, ebx
call fcn.00418057
pop edi
pop esi
pop ebx
leave
ret 0xc