Function at 0x3004db1a
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push esi
push edi
xor edi, edi
push 0x10
mov dword [ebp - 0x1c], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x2c], edi
call dword [sym.imp.USER32.dll_GetKeyState]
mov esi, dword [sym.imp.USER32.dll_GetWindowLongA]
push 4
push dword [ebp + 8]
shr eax, 8
movzx eax, al
mov dword [ebp - 0x30], eax
call esi
cmp eax, edi
mov dword [ebp - 0x34], eax
jne 0x3004db5c
xor eax, eax
jmp 0x3004e207
push ebx
push edi
push dword [ebp + 8]
call esi
mov ebx, eax
cmp ebx, edi
jne 0x3004db70
xor eax, eax
jmp 0x3004e206
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, dword [eax + 8]
push ebx
mov dword [ebp - 0x20], esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp esi, edi
je 0x3004db97
mov eax, 0x3e80
cdq
idiv esi
mov dword [0x300963f8], eax
jmp 0x3004dba1
mov dword [0x300963f8], 0x10
mov eax, dword [ebp + 0x10]
push dword [ebp - 0x34]
movsx ebx, ax
shr eax, 0x10
movsx esi, ax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push dword [ebp + 8]
mov edi, eax
call dword [sym.imp.USER32.dll_GetDC]
push 1
lea ecx, [ebp - 0x44]
push ecx
push eax
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], esi
call dword [sym.imp.GDI32.dll_DPtoLP]
cmp dword [ebp + 0x14], 0
je 0x3004dc42
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push edi
push dword [ebp + 8]
call fcn.30056d01
test eax, eax
jne 0x3004dc38
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0x1d6]
call fcn.3002ced7
test eax, eax
je 0x3004dc42
mov eax, dword [ebp - 0x28]
cmp eax, 0xffffffff
je 0x3004dc42
cmp eax, 2
jle 0x3004dc35
cmp eax, 5
jle 0x3004dc31
cmp eax, 7
je 0x3004dc2d
cmp eax, 8
jne 0x3004dc35
push 7
jmp 0x3004dc37
push 6
jmp 0x3004dc37
push 5
jmp 0x3004dc37
push 3
pop eax
mov dword [0x30096368], eax
jmp 0x3004e1e0
mov eax, dword [0x30096c40]
cmp eax, 0xbbb
jne 0x3004dc77
push esi
push ebx
push dword [ebp - 0x40]
mov ebx, dword [ebp + 8]
push dword [ebp - 0x44]
push dword [ebp - 0x20]
push dword [ebp + 0x10]
call fcn.3004d584
push 1
push 0
push 0xbb9
call fcn.3005efe7
jmp 0x3004e1cb
test word [edi + 0x22], 0x400
jne 0x3004dcbb
push esi
push ebx
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.3004aef2
test eax, eax
mov dword [ebp - 0x1c], eax
je 0x3004dcb6
cmp dword [edi + 0xe6], 0
je 0x3004e1e0
push 1
push edi
push dword [ebp + 8]
call fcn.30050e78
jmp 0x3004e1e0
mov eax, dword [0x30096c40]
cmp eax, 0xbbc
jl 0x3004dd30
cmp eax, 0xbc0
jle 0x3004dd29
cmp eax, 0xbc2
jle 0x3004dcda
add eax, 0xfffff43c
cmp eax, 2
ja 0x3004dd30
xor esi, esi
cmp dword [edi + 0xe6], esi
je 0x3004dd03
push 1
push edi
push dword [ebp + 8]
call fcn.30050e78
cmp eax, esi
je 0x3004dd00
cmp eax, 0xffffffff
je 0x3004dd00
mov dword [ebp - 4], esi
jmp 0x3004e1e0
mov dword [ebp - 4], esi
push dword [ebp - 0x40]
xor eax, eax
push dword [ebp - 0x44]
mov edx, edi
push esi
push esi
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 8]
push 0x10
pop ecx
call fcn.3004ca6e
mov dword [ebp - 0x1c], 1
jmp 0x3004dd32
mov dword [ebp - 0x2c], 1
xor esi, esi
mov eax, dword [edi + 0xe6]
cmp eax, esi
je 0x3004de17
push eax
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, eax
mov eax, dword [ebx + 0x44]
cmp eax, 2
mov dword [ebp - 0x38], eax
jne 0x3004dd8f
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push ebx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x3004dd86
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x40]
sub ecx, dword [ebx + 4]
mov dword [ebp - 0x18], eax
sub eax, dword [ebx]
push ecx
push eax
push dword [ebx + 0x14]
call fcn.30037bd5
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x2c], esi
je 0x3004dd8f
or dword [ebp - 0x14], 0xffffffff
push dword [edi + 0xe6]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp dword [ebp - 0x14], esi
jl 0x3004ddc9
push esi
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0xe6]
call fcn.300388d5
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
je 0x3004ddf5
cmp eax, esi
je 0x3004ddc9
push eax
call fcn.30050839
jmp 0x3004e1e0
mov eax, dword [0x30096c40]
lea ecx, [eax - 0xbbc]
cmp ecx, 4
ja 0x3004e1e0
push eax
push dword [ebp + 8]
call fcn.300077c2
mov dword [0x30096368], 2
jmp 0x3004e1e0
mov eax, dword [ebp - 0x38]
dec eax
dec eax
je 0x3004de14
push 1
push edi
push dword [ebp + 8]
call fcn.30050e78
cmp eax, esi
je 0x3004de14
cmp eax, 0xffffffff
jne 0x3004dcf8
mov dword [ebp - 4], esi
cmp dword [ebp - 0x1c], esi
jne 0x3004e1cb
push dword [ebp + 0x14]
lea eax, [ebp - 0xc]
push esi
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push edi
push dword [ebp - 0x20]
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.30021283
push 1
push edi
push dword [ebp + 8]
mov ebx, eax
call fcn.30050e78
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
jne 0x3004de66
mov dword [ebp - 0x24], 1
mov dword [ebp - 4], esi
jmp 0x3004de6e
cmp eax, esi
jne 0x3004dcf8
mov eax, ebx
dec eax
je 0x3004dfec
dec eax
je 0x3004df90
sub eax, 3
je 0x3004dfec
mov eax, dword [0x30096c40]
cmp eax, 0xbb9
je 0x3004dec0
cmp eax, 0xbbb
jle 0x3004df3a
cmp eax, 0xbc0
jle 0x3004debc
cmp eax, 0xbc3
jne 0x3004df3a
push 0x28
call fcn.30048b2d
jmp 0x3004e1cb
push 0x1f
jmp 0x3004deb2
cmp dword [ebp - 0x30], esi
jne 0x3004dee9
push esi
push 1
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push edi
push dword [ebp - 0x20]
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.30021283
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0x1d6]
call fcn.3002ced7
mov ecx, eax
cmp ecx, esi
je 0x3004df28
push dword [ebp - 0x40]
mov eax, dword [ebp - 8]
push dword [ebp - 0x44]
push esi
push esi
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 8]
mov edx, edi
call fcn.3004ca6e
jmp 0x3004e1cb
cmp dword [ebp - 0x30], esi
jne 0x3004df3a
push 1
push dword [edi + 0x1d6]
call fcn.3002cfd5
cmp dword [edi + 0xe6], esi
jne 0x3004e07d
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0xbe]
call fcn.30037bd5
test eax, eax
jl 0x3004e07d
push edi
push dword [ebp + 8]
call fcn.30064511
cmp eax, esi
jne 0x3004e17c
push 1
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0xe6]
call fcn.300388d5
cmp eax, esi
je 0x3004e1b2
jmp 0x3004e17c
cmp dword [ebp + 0x14], esi
jne 0x3004e1e0
push dword [ebp - 0x24]
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x24]
movsx ecx, word [ebp - 0xc]
shr eax, 0x10
push ecx
movsx eax, ax
push eax
push dword [ebp - 8]
push dword [ebp - 0x10]
push edi
push dword [ebp + 8]
call fcn.300204e7
test eax, eax
mov dword [ebp - 4], eax
jne 0x3004e1e0
push 1
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0xe6]
call fcn.300388d5
test eax, eax
mov dword [ebp - 4], eax
je 0x3004e1e0
push eax
jmp 0x3004ddbf
cmp dword [0x30096368], 4
je 0x3004dfff
mov dword [0x30096368], 2
mov eax, dword [0x30096c40]
cmp eax, 0xbb9
je 0x3004e05e
cmp eax, 0xbbb
jle 0x3004e1cb
cmp eax, 0xbc0
jle 0x3004e050
cmp eax, 0xbc3
jne 0x3004e1cb
mov eax, dword [ebp - 0xc]
movsx ecx, word [ebp - 0xc]
push ecx
shr eax, 0x10
movsx eax, ax
push eax
push dword [ebp - 8]
xor eax, eax
push dword [ebp - 0x10]
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 8]
push 0x10
pop ecx
jmp 0x3004df1c
push eax
push dword [ebp + 8]
call fcn.300077c2
jmp 0x3004e1cb
mov eax, dword [ebp - 0x10]
push ebx
push dword [ebp - 0xc]
mov ebx, edi
push dword [ebp - 8]
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 8]
call fcn.3004c7ba
jmp 0x3004e1cb
cmp dword [0x30096c40], 0xbba
jne 0x3004e1b7
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0x1d6]
call fcn.3002ced7
cmp eax, 0x11
jne 0x3004e0f0
push dword [edi + 0x1d6]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, eax
push dword [ebx + 0x50]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ecx, dword [ebp - 8]
push dword [ebx + 0x50]
imul ecx, ecx, 0xd0
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalUnlock]
xor edx, edx
cmp dword [ecx + eax + 0x18], 2
sete dl
mov dword [ebp + 0x14], edx
call ebx
push dword [edi + 0x1d6]
call ebx
cmp dword [ebp + 0x14], esi
jne 0x3004e136
mov eax, dword [edi + 0x5a]
sub eax, dword [edi + 0x86]
sub eax, 0x48
push eax
mov eax, dword [edi + 0x56]
sub eax, dword [edi + 0x82]
sub eax, 0x48
push eax
push dword [edi + 0x7e]
lea eax, [ebp - 0x54]
push dword [edi + 0x7a]
push eax
call dword [sym.imp.USER32.dll_SetRect]
push dword [ebp - 0x40]
lea eax, [ebp - 0x54]
push dword [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x3004e1b7
or dword [ebp - 8], 0xffffffff
push 1
push dword [edi + 0x1d6]
call fcn.3002cfd5
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_UpdateWindow]
push dword [ebp - 8]
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push edi
push dword [ebp + 8]
call fcn.3003cff3
cmp eax, esi
mov dword [ebp - 4], eax
jne 0x3004e1cb
push 1
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [edi + 0xe6]
call fcn.300388d5
cmp eax, esi
je 0x3004e184
push eax
call fcn.30050839
jmp 0x3004e1b2
push dword [edi + 0xe6]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push esi
mov ebx, eax
push esi
push dword [ebx + 0x1c]
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [ebx + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
push dword [edi + 0xe6]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov dword [ebp - 4], esi
jmp 0x3004e1cb
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp + 8]
call fcn.3004c74c
mov dword [0x30096368], esi
push dword [ebp + 8]
mov esi, dword [0x30096360]
call dword [sym.imp.USER32.dll_UpdateWindow]
push esi
call fcn.30047fcd
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp + 0x10]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [ebp - 4], 0
je 0x3004e203
push dword [ebp - 4]
call fcn.30050c7b
mov eax, dword [ebp - 4]
pop ebx
pop edi
pop esi
leave
ret 0x10