Function at 0x45427c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x908
mov al, byte [0x45fc38]
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.00424eff
mov esi, eax
push esi
call fcn.00423a59
mov edi, dword [ebp + 8]
pop ecx
pop ecx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x45430a
mov eax, dword [ebp + 8]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4542f2
test cl, cl
je 0x4542ec
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4542f2
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x4542ce
xor ebx, ebx
xor eax, eax
jmp 0x4542f9
sbb eax, eax
sbb eax, 0xffffffff
xor ebx, ebx
cmp eax, ebx
jne 0x45430c
lea edx, [ebp - 0x908]
mov edi, 0x410e54
jmp 0x45436c
xor ebx, ebx
push 0xce
call fcn.00424eff
mov esi, eax
push esi
call fcn.00423a59
mov edi, dword [ebp + 8]
pop ecx
pop ecx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x4543c8
mov eax, dword [ebp + 8]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x454358
test cl, cl
je 0x454354
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x454358
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x454336
xor eax, eax
jmp 0x45435d
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4543c8
lea edx, [ebp - 0x908]
mov edi, 0x410e34
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp dword [0x473ac4], ebx
rep movsb byte es:[edi], byte [esi]
je 0x4543ad
cmp dword [ebp + 0xc], ebx
jne 0x4543ad
lea eax, [ebp - 0x908]
push ebx
push eax
mov ecx, 0x4776b0
call fcn.004161d1
jmp 0x454550
push ebx
push ebx
push ebx
lea eax, [ebp - 0x908]
push 2
push eax
mov ecx, 0x4776b0
call fcn.004160a5
jmp 0x454550
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push 0x800
push eax
push dword [ebp + 8]
call fcn.004541ad
test eax, eax
je 0x4543f6
lea eax, [ebp - 0x908]
push 1
push eax
mov ecx, 0x4989c8
call fcn.00450cee
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push eax
call fcn.00452549
test eax, eax
jne 0x454550
lea eax, [ebp - 0x908]
mov ecx, 0x477688
push eax
call fcn.0043b286
test eax, eax
jne 0x454550
lea eax, [ebp - 0x908]
push eax
call fcn.00423a59
lea eax, [ebp - 0x908]
push eax
call fcn.00425f0f
pop ecx
mov ebx, 0x4776b0
test eax, eax
pop ecx
je 0x454462
push dword [ebp + 0x10]
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x908]
push 0
push eax
call fcn.004516a5
jmp 0x454547
mov al, byte [0x45fc38]
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, 0x499510
push eax
call fcn.0044484a
lea esi, [ebp - 0x908]
lea eax, [ebp - 0x108]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4544c7
test cl, cl
je 0x4544c1
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4544c7
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x4544a3
xor esi, esi
xor eax, eax
jmp 0x4544ce
sbb eax, eax
sbb eax, 0xffffffff
xor esi, esi
cmp eax, esi
jne 0x4544e8
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 8
test al, al
je 0x4544e8
mov dword [ebp + 8], 1
cmp dword [0x473ac4], esi
je 0x45450b
cmp dword [ebp + 0xc], esi
jne 0x45450b
cmp dword [ebp + 8], esi
jne 0x45450b
lea eax, [ebp - 0x908]
push esi
push eax
mov ecx, ebx
call fcn.004161d1
jmp 0x45451e
push esi
push esi
push esi
lea eax, [ebp - 0x908]
push 2
push eax
mov ecx, ebx
call fcn.004160a5
lea eax, [ebp - 0x908]
push 0x40a66c
push eax
call dword [sym.imp.MSVCRT.dll__stricmp]
pop ecx
test eax, eax
pop ecx
je 0x454547
lea eax, [ebp - 0x908]
mov ecx, 0x4989c8
push eax
call fcn.00451c08
push 0
mov ecx, ebx
call fcn.00418446
pop edi
pop esi
pop ebx
leave
ret 0xc