Function at 0x422810
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x447e08
push eax
mov eax, 0x3168
mov dword fs:[0], esp
call fcn.00433c60
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
push ebx
lea ecx, [esp + 0x98]
call fcn.004111c0
lea eax, [esi + 0x1240]
lea ecx, [esi + 0x123c]
lea edx, [esi + 0x1238]
push eax
lea edi, [esi + 0x1234]
push ecx
push edx
push edi
lea ecx, [esp + 0xa4]
mov dword [esp + 0x3190], ebx
call fcn.00411300
lea ecx, [esp + 0x94]
call fcn.0043f0af
cmp eax, 1
jne 0x4233fd
mov eax, dword [0x467f1c]
push eax
push ebx
push 0x1f0fff
call dword [sym.imp.kernel32.dll_OpenProcess]
mov ebp, eax
cmp ebp, ebx
mov dword [esp + 0x20], ebp
jne 0x4228e0
push ecx
mov ecx, esp
mov dword [esp + 0x5c], esp
push 0x461740
call fcn.004429fd
mov ecx, esi
call fcn.0041d3e0
lea ecx, [esp + 0x12c]
mov dword [esp + 0x3180], 2
call fcn.00444b3c
mov byte [esp + 0x3180], 1
jmp 0x42341c
mov cl, byte [esp + 0x4b]
mov dword [esp + 0x28], ebx
mov byte [esp + 0x24], cl
mov dword [esp + 0x30], ebx
mov byte [esp + 0x3180], 3
mov dword [esp + 0x2c], ebx
xor eax, eax
mov edi, 0x1000
lea edx, [esp + 0x78]
push 0x1c
push edx
push eax
push ebp
call fcn.004292b0
add esp, 0x10
cmp eax, 0x1c
jne 0x422957
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x50], eax
add eax, ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x54], eax
cmp ecx, edi
jne 0x422952
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x50]
push edx
push 1
push eax
lea ecx, [esp + 0x30]
call fcn.00424470
mov eax, dword [esp + 0x54]
cmp eax, 0xffffffff
jbe 0x422903
mov dword [esp + 0x34], ebx
mov eax, dword [esi + 0x1288]
cmp eax, ebx
je 0x4233dd
mov ecx, dword [esi + 0x128c]
sub ecx, eax
mov eax, dword [esp + 0x34]
sar ecx, 2
cmp eax, ecx
jae 0x4233dd
mov eax, dword [esi + 0x1288]
mov edi, dword [esp + 0x34]
mov ecx, dword [esi + 0xd58]
mov edx, dword [eax + edi*4]
mov eax, dword [eax + edi*4]
lea eax, [eax + eax*4]
lea edx, [edx + edx*4]
mov edi, dword [ecx + eax*8 + 8]
mov ebx, dword [ecx + edx*8 + 0xc]
push edi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edi
call fcn.00442732
mov edx, dword [esi + 0x3e8]
lea ecx, [esp + 0x1c]
push ecx
push edi
add edx, ebx
push eax
push edx
push ebp
mov dword [esp + 0x2c], eax
call fcn.00429130
add esp, 0x18
test eax, eax
je 0x423390
cmp dword [esp + 0x18], edi
jne 0x423390
test edi, edi
mov dword [esp + 0x10], 0
jbe 0x423353
mov ebx, dword [sym.imp.user32.dll_GetAsyncKeyState]
push 0x11
call ebx
test ax, ax
jge 0x422a0d
push 0x7b
call ebx
test ax, ax
jl 0x423328
mov eax, dword [esp + 0x10]
add edi, 0xfffffffb
cmp eax, edi
jae 0x422db5
mov eax, dword [esi + 0x1240]
test eax, eax
je 0x422be9
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp byte [eax + ecx], 0xa1
jne 0x422be9
mov edi, dword [eax + ecx + 1]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x3c]
push eax
push 4
push ecx
push edi
push edx
call fcn.00429130
add esp, 0x14
test eax, eax
je 0x422db5
cmp dword [esp + 0x18], 4
jne 0x422db5
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
je 0x422db5
mov ebp, ebx
sub ebp, eax
sar ebp, 3
cmp ecx, ebp
jae 0x422a9c
cmp edx, dword [eax + ecx*8]
jb 0x422a99
cmp edx, dword [eax + ecx*8 + 4]
jb 0x422a9c
inc ecx
jmp 0x422a7b
test eax, eax
je 0x422db5
sub ebx, eax
sar ebx, 3
cmp ecx, ebx
jae 0x422db5
mov eax, dword [esi + 0x3e8]
push edx
sub edi, eax
lea eax, [esp + 0xd7c]
push 0x459380
push eax
call fcn.0043367e
mov eax, dword [esi + 0x3d0]
add esp, 0xc
xor ebp, ebp
test eax, eax
jle 0x422b84
xor ebx, ebx
lea ecx, [esp + 0x2178]
push 0
lea edx, [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esi + 0x3a8]
lea eax, [esp + 0x1984]
push 0x400
push eax
push ecx
mov ecx, ebx
add ecx, edx
call fcn.004097a0
test eax, eax
jne 0x422b28
mov eax, dword [esi + 0x3d0]
inc ebp
add ebx, 0x43c
cmp ebp, eax
jl 0x422ae1
jmp 0x422b84
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea edx, [esp + 0x6c]
push 0
lea eax, [esp + 0xd80]
push edx
push eax
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov edx, dword [esp + 0x70]
push 0
lea ecx, [esp + 0x197c]
push 1
push ecx
lea eax, [esp + 0x2184]
push edx
push eax
push edi
mov ecx, esi
call fcn.004250d0
cmp ebp, dword [esi + 0x3d0]
jl 0x422bdd
mov eax, dword [esp + 0x3c]
mov ecx, dword [esi + 0x1234]
cmp eax, ecx
jb 0x422bdd
cmp eax, dword [esi + 0x1238]
ja 0x422bdd
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea ecx, [esp + 0x6c]
push 0
lea edx, [esp + 0xd80]
push ecx
push edx
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov eax, dword [esp + 0x10]
add eax, 5
jmp 0x423312
mov eax, dword [esi + 0x123c]
test eax, eax
je 0x422db5
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp byte [eax + ecx], 0xe8
jne 0x422db5
mov ebx, eax
mov edx, ecx
mov eax, dword [esp + 0x5c]
mov ecx, dword [ebx + edx + 1]
mov edx, dword [esi + 0x3e8]
add ecx, edx
mov edx, dword [esp + 0x2c]
add ecx, ebx
lea ebx, [ebx + eax + 1]
lea ebp, [ecx + eax + 5]
mov ecx, dword [esp + 0x28]
xor eax, eax
test ecx, ecx
je 0x422db5
mov edi, edx
sub edi, ecx
sar edi, 3
cmp eax, edi
jae 0x422c52
cmp ebp, dword [ecx + eax*8]
jb 0x422c4f
cmp ebp, dword [ecx + eax*8 + 4]
jb 0x422c52
inc eax
jmp 0x422c31
test ecx, ecx
je 0x422db5
sub edx, ecx
sar edx, 3
cmp eax, edx
jae 0x422db5
push ebp
lea edx, [esp + 0x117c]
push 0x459380
push edx
call fcn.0043367e
mov eax, dword [esi + 0x3d0]
add esp, 0xc
test eax, eax
mov dword [esp + 0x4c], 0
jle 0x422d46
xor edi, edi
lea eax, [esp + 0x1d78]
push 0
lea ecx, [esp + 0x78]
push eax
push ecx
lea edx, [esp + 0x2984]
push 0x400
push edx
mov edx, dword [esi + 0x3a8]
mov ecx, edi
push ebp
add ecx, edx
call fcn.004097a0
test eax, eax
jne 0x422ce0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esi + 0x3d0]
inc eax
add edi, 0x43c
cmp eax, ecx
mov dword [esp + 0x4c], eax
jl 0x422c95
jmp 0x422d46
push 0
push 0
push 0
lea edi, [esi + 0x3ac]
push 1
push ebx
push 0x461bf0
mov ecx, edi
call fcn.004121b0
push 0
lea eax, [esp + 0x5c]
push 0
lea ecx, [esp + 0x1180]
push eax
push ecx
push 0
push ebx
push 0x461bf0
mov ecx, edi
call fcn.00411ac0
push 1
push ebx
mov ecx, edi
call fcn.00415440
mov eax, dword [esp + 0x74]
push 0
lea edx, [esp + 0x297c]
push 1
push edx
lea ecx, [esp + 0x1d84]
push eax
push ecx
push ebx
mov ecx, esi
call fcn.004250d0
mov edx, dword [esp + 0x4c]
mov eax, dword [esi + 0x3d0]
cmp edx, eax
jl 0x422da9
cmp ebp, dword [esi + 0x1234]
jb 0x422da9
cmp ebp, dword [esi + 0x1238]
ja 0x422da9
push 0
push 0
push 0
lea edi, [esi + 0x3ac]
push 1
push ebx
push 0x461bf0
mov ecx, edi
call fcn.004121b0
push 0
lea eax, [esp + 0x5c]
push 0
lea ecx, [esp + 0x1180]
push eax
push ecx
push 0
push ebx
push 0x461bf0
mov ecx, edi
call fcn.00411ac0
push 1
push ebx
mov ecx, edi
call fcn.00415440
mov eax, dword [esp + 0x10]
add eax, 5
jmp 0x423312
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
add edx, 0xfffffffa
cmp eax, edx
jae 0x42330d
mov eax, dword [esi + 0x1240]
test eax, eax
je 0x42330d
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp byte [ecx + edx], 0xff
jne 0x42311d
mov al, byte [ecx + edx + 1]
cmp al, 0x25
je 0x422df8
cmp al, 0x15
jne 0x42330d
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x18]
mov edi, dword [eax + ecx + 2]
mov ecx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x20]
push 4
push eax
push edi
push ecx
call fcn.00429130
add esp, 0x14
test eax, eax
je 0x42330d
cmp dword [esp + 0x18], 4
jne 0x42330d
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
xor ecx, ecx
test eax, eax
je 0x42330d
mov ebp, ebx
sub ebp, eax
sar ebp, 3
cmp ecx, ebp
jae 0x422e60
cmp edx, dword [eax + ecx*8]
jb 0x422e5d
cmp edx, dword [eax + ecx*8 + 4]
jb 0x422e60
inc ecx
jmp 0x422e3f
test eax, eax
je 0x42330d
sub ebx, eax
sar ebx, 3
cmp ecx, ebx
jae 0x42330d
mov ecx, dword [esi + 0x3e8]
push edx
lea edx, [esp + 0x17c]
push 0x459380
push edx
sub edi, ecx
call fcn.0043367e
mov eax, dword [esi + 0x3d0]
add esp, 0xc
xor ebp, ebp
test eax, eax
jle 0x422f48
xor ebx, ebx
lea eax, [esp + 0x978]
push 0
lea ecx, [esp + 0x48]
push eax
mov eax, dword [esp + 0x24]
push ecx
lea edx, [esp + 0x584]
push 0x400
push edx
mov edx, dword [esi + 0x3a8]
mov ecx, ebx
push eax
add ecx, edx
call fcn.004097a0
test eax, eax
jne 0x422eec
mov eax, dword [esi + 0x3d0]
inc ebp
add ebx, 0x43c
cmp ebp, eax
jl 0x422ea5
jmp 0x422f48
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea ecx, [esp + 0x3c]
push 0
lea edx, [esp + 0x180]
push ecx
push edx
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov ecx, dword [esp + 0x44]
push 0
lea eax, [esp + 0x57c]
push 1
push eax
lea edx, [esp + 0x984]
push ecx
push edx
push edi
mov ecx, esi
call fcn.004250d0
cmp ebp, dword [esi + 0x3d0]
jl 0x423111
mov eax, dword [esp + 0x1c]
cmp eax, 0x80000000
jb 0x4230c6
cmp eax, 0x89000000
ja 0x4230c6
lea ecx, [esp + 0x18]
lea edx, [esp + 0x50]
push ecx
push 6
push edx
push eax
mov eax, dword [esp + 0x30]
push eax
call fcn.00429130
add esp, 0x14
test eax, eax
je 0x4230c2
cmp dword [esp + 0x18], 6
jne 0x4230c2
cmp byte [esp + 0x50], 0x68
jne 0x4230c2
cmp byte [esp + 0x55], 0xe9
jne 0x4230c2
mov eax, dword [esi + 0x3d0]
mov ecx, dword [esp + 0x51]
xor ebx, ebx
mov dword [esp + 0x1c], ecx
test eax, eax
jle 0x42306e
xor ebp, ebp
lea edx, [esp + 0x978]
push 0
lea eax, [esp + 0x48]
push edx
mov edx, dword [esp + 0x24]
push eax
lea ecx, [esp + 0x584]
push 0x400
push ecx
push edx
mov edx, dword [esi + 0x3a8]
mov ecx, ebp
add ecx, edx
call fcn.004097a0
test eax, eax
jne 0x423012
mov eax, dword [esi + 0x3d0]
inc ebx
add ebp, 0x43c
cmp ebx, eax
jl 0x422fcb
jmp 0x42306e
push 0
push 0
push 0
lea ebp, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebp
call fcn.004121b0
push 0
lea eax, [esp + 0x3c]
push 0
lea ecx, [esp + 0x180]
push eax
push ecx
push 0
push edi
push 0x461bf0
mov ecx, ebp
call fcn.00411ac0
mov eax, dword [esp + 0x44]
push 0
lea edx, [esp + 0x57c]
push 1
push edx
lea ecx, [esp + 0x984]
push eax
push ecx
push edi
mov ecx, esi
call fcn.004250d0
cmp ebx, dword [esi + 0x3d0]
jl 0x423111
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x1234]
cmp eax, ecx
jb 0x423111
cmp eax, dword [esi + 0x1238]
ja 0x423111
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea edx, [esp + 0x3c]
push 0
lea eax, [esp + 0x180]
push edx
push eax
jmp 0x423102
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0x1234]
jb 0x423111
cmp eax, dword [esi + 0x1238]
ja 0x423111
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea ecx, [esp + 0x3c]
push 0
lea edx, [esp + 0x180]
push ecx
push edx
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov eax, dword [esp + 0x10]
add eax, 6
jmp 0x423312
test eax, eax
je 0x42330d
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp byte [eax + ecx], 0x8b
jne 0x42330d
mov edx, eax
mov eax, ecx
mov al, byte [edx + eax + 1]
cmp al, 0x1d
je 0x42315b
cmp al, 0xd
je 0x42315b
cmp al, 0x15
je 0x42315b
cmp al, 0x3d
je 0x42315b
cmp al, 0x35
je 0x42315b
cmp al, 0x2d
jne 0x42330d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x18]
mov edi, dword [edx + ecx + 2]
mov edx, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x44]
push 4
push ecx
push edi
push edx
call fcn.00429130
add esp, 0x14
test eax, eax
je 0x42330d
cmp dword [esp + 0x18], 4
jne 0x42330d
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x40]
xor ecx, ecx
test eax, eax
je 0x42330d
mov ebp, ebx
sub ebp, eax
sar ebp, 3
cmp ecx, ebp
jae 0x4231c3
cmp edx, dword [eax + ecx*8]
jb 0x4231c0
cmp edx, dword [eax + ecx*8 + 4]
jb 0x4231c3
inc ecx
jmp 0x4231a2
test eax, eax
je 0x42330d
sub ebx, eax
sar ebx, 3
cmp ecx, ebx
jae 0x42330d
mov eax, dword [esi + 0x3e8]
push edx
sub edi, eax
lea eax, [esp + 0x157c]
push 0x459380
push eax
call fcn.0043367e
mov eax, dword [esi + 0x3d0]
add esp, 0xc
xor ebp, ebp
test eax, eax
jle 0x4232ab
xor ebx, ebx
lea ecx, [esp + 0x2d78]
push 0
lea edx, [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x48]
push edx
mov edx, dword [esi + 0x3a8]
lea eax, [esp + 0x2584]
push 0x400
push eax
push ecx
mov ecx, ebx
add ecx, edx
call fcn.004097a0
test eax, eax
jne 0x42324f
mov eax, dword [esi + 0x3d0]
inc ebp
add ebx, 0x43c
cmp ebp, eax
jl 0x423208
jmp 0x4232ab
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea edx, [esp + 0x68]
push 0
lea eax, [esp + 0x1580]
push edx
push eax
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov edx, dword [esp + 0x6c]
push 0
lea ecx, [esp + 0x257c]
push 1
push ecx
lea eax, [esp + 0x2d84]
push edx
push eax
push edi
mov ecx, esi
call fcn.004250d0
cmp ebp, dword [esi + 0x3d0]
jl 0x423304
mov eax, dword [esp + 0x40]
mov ecx, dword [esi + 0x1234]
cmp eax, ecx
jb 0x423304
cmp eax, dword [esi + 0x1238]
ja 0x423304
push 0
push 0
push 0
lea ebx, [esi + 0x3ac]
push 1
push edi
push 0x461bf0
mov ecx, ebx
call fcn.004121b0
push 0
lea ecx, [esp + 0x68]
push 0
lea edx, [esp + 0x1580]
push ecx
push edx
push 0
push edi
push 0x461bf0
mov ecx, ebx
call fcn.00411ac0
mov eax, dword [esp + 0x10]
add eax, 6
jmp 0x423312
mov eax, dword [esp + 0x10]
inc eax
mov edi, dword [esp + 0x60]
mov ebp, dword [esp + 0x20]
cmp eax, edi
mov dword [esp + 0x10], eax
jb 0x4229f1
jmp 0x423353
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
push 0x4632cc
call fcn.004429fd
mov ecx, esi
call fcn.0041d3e0
push 0
push str._CONTROLF12_
push 0x4632b0
mov ecx, esi
call fcn.00440edf
lea ecx, [esi + 0x3ac]
call fcn.00411f10
mov ecx, esi
call fcn.0041eb70
mov ecx, esi
call fcn.00425e20
mov ecx, esi
call fcn.004256b0
mov eax, dword [esp + 0x14]
push eax
call fcn.0044275b
mov eax, dword [esp + 0x38]
add esp, 4
inc eax
xor ebx, ebx
mov dword [esp + 0x34], eax
jmp 0x42295b
push ebp
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0044275b
mov edx, dword [esp + 0x2c]
push edx
call fcn.0044275b
xor eax, eax
add esp, 8
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
lea ecx, [esp + 0x12c]
mov dword [esp + 0x3180], 5
call fcn.00444b3c
mov byte [esp + 0x3180], 4
jmp 0x42341c
push ebp
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [esp + 0x28]
push eax
call fcn.0044275b
add esp, 4
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
lea ecx, [esp + 0x12c]
mov dword [esp + 0x3180], 7
call fcn.00444b3c
mov byte [esp + 0x3180], 6
lea ecx, [esp + 0xf0]
call fcn.00444b3c
lea ecx, [esp + 0x94]
mov dword [esp + 0x3180], 0xffffffff
call fcn.0043ece5
mov ecx, dword [esp + 0x3178]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x3174
ret