Function at 0x441360
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x40
push ebx
mov ebx, ecx
push ebp
xor ebp, ebp
mov eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x44]
push esi
cmp eax, ecx
push edi
jge 0x441381
cmp eax, ebp
jl 0x441381
mov ecx, dword [ebx + 0x40]
mov esi, dword [ecx + eax*4]
jmp 0x441383
xor esi, esi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call edi
test ah, 0x80
je 0x44139b
push 0x79
call edi
test ah, 0x80
je 0x4413a8
push 0x11
call edi
test ah, 0x80
je 0x4414f9
cmp esi, ebp
je 0x4414f9
mov ecx, esi
call fcn.0045b1b0
test eax, eax
je 0x4414f9
push 0x80
mov dword [esp + 0x38], 0x4cc6f4
call fcn.004be967
add esp, 4
mov ecx, esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], 0x1f
mov dword [esp + 0x48], 0x40
mov dword [esp + 0x44], ebp
call fcn.0045b1b0
cmp eax, ebp
mov dword [esp + 0x20], eax
je 0x441479
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
lea edx, [ecx + 1]
cmp esi, edx
jne 0x441465
mov eax, dword [esp + 0x48]
add ecx, eax
lea ecx, [ecx*4 + 4]
push ecx
call fcn.004be967
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x3c]
mov ebp, eax
lea ecx, [edx*4 + 4]
mov edi, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004be975
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x48]
add esp, 8
add eax, edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], ebp
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x58]
mov eax, dword [ebx + 8]
mov edx, dword [esp + 0x54]
push ecx
mov eax, dword [eax + 0x50]
lea ecx, [esp + 0x38]
push edx
push ecx
push eax
call fcn.00405b10
add esp, 0x10
test eax, eax
jne 0x4414a3
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x34], 0x4cc6f4
test eax, eax
je 0x4414e2
mov eax, dword [esp + 0x3c]
xor esi, esi
test eax, eax
jle 0x4414e2
cmp esi, eax
jge 0x4414ce
test esi, esi
jl 0x4414ce
mov edx, dword [esp + 0x38]
mov eax, dword [edx + esi*4]
jmp 0x4414d0
xor eax, eax
push eax
call fcn.004be975
mov eax, dword [esp + 0x40]
add esp, 4
inc esi
cmp esi, eax
jl 0x4414c1
mov eax, dword [esp + 0x38]
push eax
call fcn.004be975
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret 8
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebx + 8]
mov dword [esp + 0x30], edx
lea eax, [esp + 0x2c]
mov edx, dword [ecx + 0x50]
push eax
push edx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [ebx + 8]
call fcn.0045fba0
mov ebp, eax
mov eax, dword [ebx + 4]
mov edx, ebp
neg edx
sbb edx, edx
and edx, 0x4e52
add edx, 0x6d
and edx, 0xffff
push edx
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
push 0
push eax
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_GetSubMenu]
mov ecx, dword [ebx + 0x44]
mov esi, eax
mov eax, dword [ebx + 0x60]
cmp eax, ecx
jge 0x441574
test eax, eax
jl 0x441574
mov ecx, dword [ebx + 0x40]
mov edi, dword [ecx + eax*4]
jmp 0x441576
xor edi, edi
xor ecx, ecx
test edi, edi
setne cl
test ecx, ecx
mov dword [esp + 0x10], ecx
je 0x4415c0
cmp eax, dword [ebx + 0x44]
jge 0x441596
test eax, eax
jl 0x441596
mov edx, dword [ebx + 0x40]
mov eax, dword [edx + eax*4]
jmp 0x441598
xor eax, eax
mov ecx, eax
call fcn.0045cb60
cmp eax, 1
jle 0x4415c0
mov ecx, dword [ebx + 8]
mov eax, 1
mov dword [esp + 0x14], eax
mov edx, dword [ecx + 0x6d0]
test edx, edx
jle 0x4415c8
mov dword [esp + 0x1c], eax
jmp 0x4415d8
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], 0
test eax, eax
je 0x44160d
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x44]
mov edi, dword [edx + 0x6d0]
cmp eax, ecx
jge 0x4415f7
test eax, eax
jl 0x4415f7
mov ecx, dword [ebx + 0x40]
mov eax, dword [ecx + eax*4]
jmp 0x4415f9
xor eax, eax
mov ecx, eax
call fcn.0045cb60
dec eax
mov dword [esp + 0x20], 1
cmp edi, eax
jl 0x441615
mov dword [esp + 0x20], 0
mov edx, dword [ebx + 0x10]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0x4eb8
push 0x409
push edx
call edi
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x10]
push 0
push 0x4eb9
push 0x409
push eax
call edi
test ebp, ebp
mov dword [esp + 0x28], eax
je 0x441699
mov ebp, dword [esp + 0x10]
mov edi, dword [sym.imp.USER32.dll_RemoveMenu]
test ebp, ebp
je 0x441662
mov al, byte [0x4eb488]
test al, al
je 0x441676
push 0
push 0x4eee
push esi
call edi
push 0
push 0x4eed
push esi
call edi
test ebp, ebp
je 0x441683
mov al, byte [0x4eb489]
test al, al
je 0x44168d
push 0
push 0x4f22
push esi
call edi
push 0
push 0x4f78
jmp 0x44190f
mov al, byte [0x4eb488]
mov edi, dword [sym.imp.USER32.dll_RemoveMenu]
test al, al
je 0x4416c4
mov al, byte [0x4eb487]
test al, al
je 0x4416c4
mov al, byte [0x4eb48a]
test al, al
je 0x4416c4
push 0x400
push 0x19
push esi
call edi
mov ebp, dword [esp + 0x10]
test ebp, ebp
je 0x4416d5
mov al, byte [0x4eb488]
test al, al
je 0x4416df
push 0x400
push 0x17
push esi
call edi
test ebp, ebp
je 0x4416ec
mov al, byte [0x4eb487]
test al, al
je 0x441700
push 0x400
push 0x16
push esi
call edi
push 0x400
push 0x15
push esi
call edi
test ebp, ebp
je 0x441716
mov al, byte [0x4eb489]
test al, al
je 0x441720
mov al, byte [0x4eb487]
test al, al
je 0x441720
push 0x400
push 0x14
push esi
call edi
test ebp, ebp
je 0x44172d
mov al, byte [0x4eb487]
test al, al
je 0x441753
mov ecx, dword [esp + 0x18]
mov ebp, dword [sym.imp.USER32.dll_DeleteMenu]
push 0
push 0x4f73
push ecx
call ebp
mov edx, dword [esp + 0x18]
push 0
push 0x4f1a
push edx
call ebp
mov ebp, dword [esp + 0x10]
mov al, byte [0x4eb485]
test al, al
je 0x441766
push 0
push 0x4eba
push esi
call edi
mov al, byte [0x4eb48a]
test al, al
je 0x441779
push 0
push 0x4e90
push esi
call edi
test ebp, ebp
je 0x441786
mov al, byte [0x4eb489]
test al, al
je 0x441790
push 0
push 0x4f22
push esi
call edi
test ebp, ebp
jne 0x44179d
push ebp
push 0x4eb7
push esi
call edi
mov al, byte [0x4eb486]
test al, al
je 0x4417b0
push 0
push 0x4f21
push esi
call edi
test ebp, ebp
jne 0x4417e2
push 0x400
push 0xc
push esi
call edi
push ebp
push 0x4eb8
push esi
call edi
push ebp
push 0x4eb9
push esi
call edi
push ebp
push 0x4f0a
push esi
call edi
push ebp
push 0x4f09
push esi
call edi
cmp dword [ebx + 0x44], 2
jge 0x441810
push 0x400
push 6
push esi
call edi
push 0
push 0x4eb4
push esi
call edi
push 0
push 0x4eb3
push esi
call edi
push 0
push 0x4eb6
push esi
call edi
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x441836
push 0x400
push 2
push esi
call edi
push 0
push 0x4efe
push esi
call edi
push 0
push 0x4eff
push esi
call edi
mov eax, dword [ebx + 0x60]
mov edi, dword [sym.imp.USER32.dll_EnableMenuItem]
test eax, eax
jne 0x44184d
push 1
push 0x4eb3
push esi
call edi
mov eax, dword [ebx + 0x44]
mov ecx, dword [ebx + 0x60]
dec eax
cmp ecx, eax
jne 0x441862
push 1
push 0x4eb4
push esi
call edi
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x441874
push 1
push 0x4eb8
push esi
call edi
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x441886
push 1
push 0x4eb9
push esi
call edi
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x441898
push 1
push 0x4eff
push esi
call edi
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x4418aa
push 1
push 0x4efe
push esi
call edi
mov ecx, dword [ebx + 0x38]
mov edi, dword [sym.imp.USER32.dll_CheckMenuItem]
neg ecx
sbb ecx, ecx
and ecx, 8
push ecx
push 0x4eb6
push esi
call edi
mov edx, dword [ebx + 0xc]
push 0xfffffffffffffff0
push edx
call dword [sym.imp.USER32.dll_GetWindowLongA]
and eax, 0xc00000
neg eax
sbb eax, eax
inc eax
neg eax
sbb eax, eax
and eax, 8
push eax
push 0x4eb5
push esi
call edi
mov eax, dword [ebx + 0xb0]
neg eax
sbb eax, eax
and eax, 8
push eax
push 0x4f60
push esi
call edi
mov al, byte [0x4eb485]
test al, al
jne 0x441916
push 0
push 0x4eba
push esi
call dword [sym.imp.USER32.dll_SetMenuDefaultItem]
mov ecx, dword [ebx + 0xc]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
push 0
push ecx
push 0
push edx
push eax
push 2
push esi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_DestroyMenu]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret 8