Function at 0x45508c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor edx, edx
push ebp
push 0x455746
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa8]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x4550f4
inc ebx
xor esi, esi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa8]
mov edx, esi
call fcn.00415340
mov edi, eax
mov edx, dword [ebp - 8]
mov eax, dword [edi + 4]
call dword [edi]
test al, al
je 0x4550f0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45575b
inc esi
dec ebx
jne 0x4550c5
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00454f40
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx]
mov eax, ebx
cmp eax, 0x53
jg 0x4551bd
je 0x45565b
cmp eax, 0x16
jg 0x455184
je 0x455420
cmp eax, 0x14
ja case.0x455129.1
jmp dword [eax*4 + 0x455130]
cmp eax, 0x1d
jg 0x4551a6
je 0x4556ff
sub eax, 0x1a
je 0x4556d9
sub eax, 2
je 0x45531f
jmp case.0x455129.1
sub eax, 0x37
je 0x4552eb
sub eax, 0x13
je 0x45543c
jmp case.0x455129.1
cmp eax, 0xb017
jg 0x455213
je 0x455533
cmp eax, 0xb000
jg 0x4551fa
je 0x4555cc
sub eax, 0x112
je 0x455255
add eax, 0xffffffe0
sub eax, 7
jb 0x4553f4
sub eax, 0x1e1
je 0x455712
jmp case.0x455129.1
sub eax, 0xb001
je 0x4555f4
sub eax, 0x15
je 0x455511
jmp case.0x455129.1
cmp eax, 0xb020
jg 0x455239
je 0x455675
sub eax, 0xb01a
je 0x45561c
sub eax, 5
je 0x45565b
jmp case.0x455129.1
sub eax, 0xb031
je 0x4556ae
add eax, 0xfffffff2
sub eax, 2
jb 0x4554f0
jmp case.0x455129.1
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
and eax, 0xfff0
sub eax, 0xf020
je 0x455270
sub eax, 0x100
je 0x45527d
jmp 0x45528a
mov eax, dword [ebp - 4]
call fcn.004557ac
jmp 0x45573c
mov eax, dword [ebp - 4]
call fcn.0045585c
jmp 0x45573c
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x45573c
call fcn.00452744
jmp 0x45573c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.004076a0
test eax, eax
je 0x4552ca
push ebp
call fcn.00455040
pop ecx
jmp 0x45573c
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
mov eax, dword [ebp - 8]
mov dword [eax], 0x27
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
mov eax, dword [ebp - 4]
call fcn.00455790
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x45573c
push 0
push 0
push 0xb01a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.00407758
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
push ebp
call fcn.00455004
pop ecx
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
sbb eax, eax
inc eax
mov edx, dword [ebp - 4]
mov byte [edx + 0x9d], al
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x455364
mov eax, dword [ebp - 4]
call fcn.00454ea4
push 0
push 0
push 0xb000
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.00407758
jmp 0x45573c
mov eax, dword [ebp - 4]
call fcn.00454e94
push 0
push 0
push 0xb001
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.00407758
jmp 0x45573c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x4553c0
mov eax, dword [ebp - 4]
call fcn.00454ea4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xac]
test eax, eax
je 0x4553b4
call fcn.0044ce0c
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xac], edx
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
push ebp
call fcn.00455004
pop ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0xac], 0
jne 0x4553e7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.0044cd58
mov edx, dword [ebp - 4]
mov dword [edx + 0xac], eax
mov eax, dword [ebp - 4]
call fcn.00454e9c
jmp 0x45573c
mov esi, dword [ebp - 8]
mov esi, dword [esi + 8]
push esi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 8]
add ebx, 0xbc00
push ebx
mov eax, dword [ebp - 8]
push esi
call fcn.004077c0
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x45573c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x45573c
mov eax, dword [ebp - 4]
mov byte [eax + 0x9c], 1
jmp 0x45573c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
cmp dword [eax], 0xde534454
jne 0x45573c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x9e], 0
je 0x45573c
mov eax, dword [ebp - 4]
cmp dword [eax + 0xa0], 0
jne 0x4554e3
mov edx, 0x8000
mov eax, 0x45576c
call fcn.0040e6e8
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0xa0], ebx
test ebx, ebx
je 0x4554c8
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
push 0x45577c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xa0]
push eax
call sub.user32.dll_GetMenuStringA
mov esi, eax
mov ebx, esi
test esi, esi
je 0x45573c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [eax + 8]
push edx
mov edx, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
call ebx
jmp 0x45573c
call sub.user32.dll_GetKeyboardState
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xa0], edx
jmp 0x45573c
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
jmp 0x45573c
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov eax, dword [ebp - 8]
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.004570f0
and eax, 0x7f
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x45573c
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00455b44
test al, al
je 0x45573c
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x45573c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x45573c
mov esi, eax
mov eax, esi
call fcn.0043cf68
test eax, eax
je 0x45573c
mov eax, esi
call fcn.0043cf68
push eax
call fcn.004076b8
test eax, eax
je 0x45573c
mov eax, esi
call fcn.0043cf68
push eax
call fcn.004076c0
test eax, eax
je 0x45573c
mov byte [0x48ccd8], 0
call fcn.00407540
mov ebx, eax
mov eax, esi
call fcn.0043cf68
push eax
call fcn.004077f8
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 4]
mov edx, 0x112
mov eax, esi
call fcn.00437934
push ebx
call fcn.004077f8
mov byte [0x48ccd8], 1
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x45573c
mov eax, dword [ebp - 4]
cmp word [eax + 0x112], 0
je 0x45573c
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x114]
call dword [ebx + 0x110]
jmp 0x45573c
mov eax, dword [ebp - 4]
cmp word [eax + 0x10a], 0
je 0x45573c
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x10c]
call dword [ebx + 0x108]
jmp 0x45573c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call fcn.004076a0
test eax, eax
jne 0x45573c
call fcn.00407540
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x30]
jne 0x45573c
xor eax, eax
call fcn.0044cea8
test eax, eax
je 0x45573c
push eax
call fcn.004077f8
jmp 0x45573c
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov edx, dword [ebp - 8]
mov dx, word [edx + 4]
mov eax, dword [ebp - 4]
call fcn.004561c4
jmp 0x45573c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
jne 0x455696
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.00455c84
jmp 0x45573c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.00455ce0
jmp 0x45573c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
jne 0x4556c8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb0]
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x45573c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xb0], eax
jmp 0x45573c
mov edx, dword [ebp - 8]
mov edx, dword [edx + 4]
mov eax, dword [0x48e554]
mov eax, dword [eax]
call fcn.004417e8
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00454f98
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
mov eax, dword [0x48fbe4]
call fcn.00454544
push ebp
call fcn.00455004
pop ecx
jmp 0x45573c
call fcn.0042e198
call fcn.0042e278
test al, al
je 0x45573c
call fcn.0042e198
call fcn.0042e2d4
jmp 0x45573c
xor eax, eax
call fcn.0041ac74
jmp 0x45573c
push ebp
call fcn.00455004
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45575b
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret