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

Disassembly:
jmp 0x445630
push 0xffffffffffffffff
push 0x550bf3
mov eax, dword fs:[0]
push eax
sub esp, 0x1ec
mov eax, dword [0x5c1d10]
xor eax, esp
mov dword [esp + 0x1e8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5c1d10]
xor eax, esp
push eax
lea eax, [esp + 0x200]
mov dword fs:[0], eax
mov edi, dword [esp + 0x210]
mov ebp, ecx
mov dword [esp + 0x3c], 0
mov eax, dword [ebp + 0x74]
add eax, 0x7c
push eax
lea ecx, [esp + 0x30]
mov dword [esp + 0x84], edi
call fcn.00404133
mov ebx, 1
mov dword [esp + 0x208], ebx
mov ecx, dword [esp + 0x2c]
cmp dword [ecx - 0xc], 0
jne 0x4456e1
push 0
push 0
push str.Select_a_file_
mov ecx, ebp
call fcn.004b9f2e
push 0x5647d4
mov ecx, edi
call fcn.00404133
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x208], 0
lea ecx, [esp + 0x2c]
call fcn.00402798
mov eax, edi
jmp 0x445a7a
mov edx, dword [ebp + 0x74]
add edx, 0x7c
push edx
lea ecx, [esp + 0xd0]
call fcn.00402be9
mov byte [esp + 0x208], 2
mov ecx, dword [esp + 0x1f4]
test ecx, ecx
mov eax, dword [esp + 0x1f0]
je 0x445734
test eax, eax
jne 0x445734
mov eax, ecx
neg eax
cmp eax, 0x40
jae 0x44571f
xor eax, eax
jmp 0x445737
movzx eax, word [ecx + 0x16]
movzx edx, word [ecx + 8]
movzx ecx, word [ecx + 0x14]
add eax, edx
shl eax, 4
add eax, ecx
jmp 0x445737
mov eax, dword [eax + 0x28]
push eax
lea ecx, [esp + 0xd0]
call fcn.00403fda
mov ecx, dword [esp + 0xcc]
lea esi, [ecx + eax]
mov dword [esp + 0x30], ecx
push 4
lea ecx, [esp + 0x88]
mov dword [esp + 0x60], esi
call fcn.00404444
mov byte [esp + 0x208], 3
lea edx, [esp + 0x24]
push edx
mov ecx, 0x5c4c78
call fcn.004049b2
mov byte [esp + 0x208], 4
push str.packsig.txt
push eax
lea eax, [esp + 0x28]
push eax
call fcn.00404502
add esp, 0xc
mov byte [esp + 0x208], 5
mov eax, dword [eax]
push 0
push ebx
push ebx
push ebx
push eax
lea ecx, [esp + 0x98]
call fcn.004020ea
test eax, eax
sete bl
mov byte [esp + 0x208], 4
lea ecx, [esp + 0x20]
call fcn.00402798
mov byte [esp + 0x208], 3
lea ecx, [esp + 0x24]
call fcn.00402798
test bl, bl
je 0x445831
push str.Signature_file_not_found
mov ecx, edi
call fcn.00404133
mov dword [esp + 0x3c], 1
mov byte [esp + 0x208], 2
lea ecx, [esp + 0x84]
call fcn.00403229
mov byte [esp + 0x208], 1
lea ecx, [esp + 0xcc]
call fcn.00401be5
mov byte [esp + 0x208], 0
lea ecx, [esp + 0x2c]
call fcn.00402798
mov eax, edi
jmp 0x445a7a
lea ecx, [esp + 0x40]
call fcn.004b1569
mov byte [esp + 0x208], 6
lea ecx, [esp + 0x18]
call fcn.00404bc4
mov byte [esp + 0x208], 7
lea ecx, [esp + 0x1c]
call fcn.00404bc4
mov byte [esp + 0x208], 8
lea ecx, [esp + 0x28]
call fcn.00404bc4
mov byte [esp + 0x208], 9
lea ecx, [esp + 0x38]
call fcn.00404bc4
mov byte [esp + 0x208], 0xa
lea ecx, [esp + 0x34]
call fcn.00404bc4
mov byte [esp + 0x208], 0xb
lea ecx, [ebp + 0xcc]
push 0
mov dword [esp + 0x58], ecx
call fcn.004bf851
lea ecx, [ebp + 0x78]
push 5
mov dword [esp + 0x80], ecx
call fcn.004bf851
mov ecx, dword [esp + 0x48]
mov edx, dword [ebp + 0x98]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push ecx
push 0
push 0x406
push edx
call ebx
mov eax, dword [ebp + 0x98]
push 0
push 0
push 0x402
push eax
call ebx
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x88]
call fcn.004029a5
mov edi, 1
cmp dword [esp + 0x48], edi
mov dword [esp + 0x24], edi
jg 0x445aba
mov ecx, dword [esp + 0x7c]
push 0
call fcn.004bf851
mov ecx, dword [esp + 0x54]
push 5
call fcn.004bf851
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
push eax
call fcn.00401834
mov esi, dword [esp + 0x84]
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [esp + 0x208], 0xb
mov dword [esp + 0x3c], 1
mov byte [esp + 0x208], 0xa
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445974
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x208], 9
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44599c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x208], 8
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4459c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x208], 7
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4459ec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x208], 6
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445a14
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x208], 3
lea ecx, [esp + 0x40]
call fcn.004b19ee
mov byte [esp + 0x208], 2
lea ecx, [esp + 0x84]
call fcn.00403229
mov byte [esp + 0x208], 1
lea ecx, [esp + 0xcc]
call fcn.00404976
mov dword [esp + 0x208], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445a78
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
mov ecx, dword [esp + 0x200]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x1e8]
xor ecx, esp
call fcn.004f409d
add esp, 0x1f8
ret 4
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [esp + 0x5c]
mov edx, dword [ebp + 0x98]
push 0
push edi
push 0x402
push edx
call ebx
mov eax, dword [ebp + 0x98]
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
push 0x1b
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 8
test al, al
jne 0x446034
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push 0x5647d4
call fcn.00404133
mov byte [esp + 0x20c], 0xc
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
push str.signature
call fcn.00404133
mov byte [esp + 0x210], 0xd
test edi, edi
jl 0x446049
cmp edi, dword [esp + 0x50]
jge 0x446049
mov ecx, dword [esp + 0x4c]
push ecx
lea eax, [ecx + edi*4]
mov ecx, esp
mov dword [esp + 0x6c], esp
push eax
call fcn.004015fa
mov byte [esp + 0x214], 0xe
lea edx, [esp + 0x70]
push edx
mov byte [esp + 0x218], 0xb
lea ecx, [esp + 0x94]
call fcn.004012cb
mov byte [esp + 0x208], 0xf
push eax
lea ecx, [esp + 0x1c]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x64]
call fcn.00402798
push 0x5647d4
push 0x562cb0
lea ecx, [esp + 0x20]
call fcn.004033aa
mov eax, dword [esp + 0x18]
mov ecx, dword [eax - 0xc]
and ecx, 0x80000001
jns 0x445bb2
dec ecx
or ecx, 0xfffffffe
inc ecx
test ecx, ecx
jg 0x44601e
push ecx
mov ecx, esp
mov dword [esp + 0x64], esp
push str.true
call fcn.00404133
mov byte [esp + 0x20c], 0x10
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
push str.ep_only
call fcn.00404133
mov byte [esp + 0x210], 0x11
cmp edi, dword [esp + 0x50]
jge 0x446049
mov edx, dword [esp + 0x4c]
push ecx
lea eax, [edx + edi*4]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.004015fa
mov byte [esp + 0x214], 0x12
lea eax, [esp + 0x80]
push eax
mov byte [esp + 0x218], 0xb
lea ecx, [esp + 0x94]
call fcn.004012cb
mov byte [esp + 0x208], 0x13
push eax
lea ecx, [esp + 0x38]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x74]
call fcn.00402798
lea ecx, [esp + 0x34]
call fcn.0040457f
mov ecx, dword [esp + 0x34]
push str.true
push ecx
call fcn.004f4ac1
add esp, 8
test eax, eax
sete al
test al, al
je 0x445e34
test esi, esi
je 0x44601e
push ecx
mov ecx, esp
mov dword [esp + 0x64], esp
push 0x5647d4
call fcn.00404133
mov byte [esp + 0x20c], 0x14
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
push str.offset
call fcn.00404133
mov byte [esp + 0x210], 0x15
cmp edi, dword [esp + 0x50]
jge 0x446049
mov edx, dword [esp + 0x4c]
push ecx
lea eax, [edx + edi*4]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.004015fa
mov byte [esp + 0x214], 0x16
lea eax, [esp + 0x74]
push eax
mov byte [esp + 0x218], 0xb
lea ecx, [esp + 0x94]
call fcn.004012cb
mov byte [esp + 0x208], 0x17
push eax
lea ecx, [esp + 0x3c]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x68]
call fcn.00402798
mov ecx, dword [esp + 0x38]
push ecx
call fcn.004f814c
add esp, 4
lea edx, [esp + 0x18]
push edx
mov ecx, ebp
mov ebx, eax
call fcn.0040211c
add ebx, eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
cdq
sub eax, edx
sar eax, 1
xor esi, esi
test eax, eax
jle 0x445e00
push 2
lea ecx, [esi + esi]
push ecx
lea edx, [esp + 0x78]
push edx
lea ecx, [esp + 0x24]
call fcn.00402ce3
mov byte [esp + 0x208], 0x18
push eax
lea ecx, [esp + 0x20]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x70]
call fcn.00402798
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x17]
push eax
push edi
mov ecx, ebp
call fcn.00403c01
test eax, eax
jne 0x445dab
push 0x57b4c0
push edi
call fcn.004f4ac1
add esp, 8
test eax, eax
setne al
test al, al
jne 0x445dfc
mov ecx, dword [esp + 0x30]
lea eax, [esi + ebx]
add eax, dword [esp + 0x5c]
cmp eax, ecx
jb 0x445dfc
mov edx, dword [esp + 0xd8]
add edx, ecx
cmp eax, edx
ja 0x445dfc
mov al, byte [eax]
cmp al, byte [esp + 0x17]
je 0x445de5
lea ecx, [esp + 0x1c]
push 0x57b4c0
push ecx
call fcn.0040238d
add esp, 8
test al, al
jne 0x445dfc
mov edx, dword [esp + 0x18]
mov eax, dword [edx - 0xc]
cdq
sub eax, edx
add esi, 1
sar eax, 1
cmp esi, eax
jl 0x445d48
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
cdq
sub eax, edx
sar eax, 1
cmp esi, eax
jne 0x44601e
cmp edi, dword [esp + 0x48]
jge 0x446049
mov eax, dword [esp + 0x44]
lea edi, [eax + edi*4]
push edi
lea ecx, [esp + 0x2c]
call fcn.00402432
jmp 0x44590a
push 0x426
mov ecx, ebp
call fcn.004bf5a3
mov ecx, dword [eax + 0x20]
push 0
push 0
push pe_nt_image_headers32
push ecx
call ebx
test eax, eax
je 0x44601e
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0x30]
lea eax, [esp + 0x18]
push eax
mov ecx, ebp
mov dword [esp + 0x24], edx
call fcn.0040211c
test eax, eax
ja 0x44601e
push 2
push 0
lea ecx, [esp + 0x80]
push ecx
lea ecx, [esp + 0x24]
call fcn.00402ce3
mov byte [esp + 0x208], 0x19
push eax
lea ecx, [esp + 0x20]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x78]
call fcn.00402798
mov esi, dword [esp + 0x1c]
lea edx, [esp + 0x17]
push edx
push esi
mov ecx, ebp
call fcn.00403c01
test eax, eax
jne 0x445ee2
push 0x57b4c0
push esi
call fcn.004f4ac1
add esp, 8
test eax, eax
setne al
test al, al
jne 0x44601e
movzx eax, byte [esp + 0x17]
mov ecx, dword [esp + 0x20]
push ecx
push eax
push ebx
call fcn.004f8480
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x44601e
mov edx, dword [esp + 0x18]
mov eax, dword [edx - 0xc]
mov ecx, dword [esp + 0xd8]
mov edx, ecx
sub edx, eax
add edx, dword [esp + 0x30]
cmp ebx, edx
jae 0x44601e
cdq
sub eax, edx
sar eax, 1
xor esi, esi
test eax, eax
jle 0x445fd4
lea ecx, [ecx]
push 2
lea eax, [esi + esi]
push eax
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x24]
call fcn.00402ce3
mov byte [esp + 0x208], 0x1a
push eax
lea ecx, [esp + 0x20]
call fcn.00402432
mov byte [esp + 0x208], 0xb
lea ecx, [esp + 0x6c]
call fcn.00402798
mov edi, dword [esp + 0x1c]
lea edx, [esp + 0x17]
push edx
push edi
mov ecx, ebp
call fcn.00403c01
test eax, eax
jne 0x445f93
push 0x57b4c0
push edi
call fcn.004f4ac1
add esp, 8
test eax, eax
setne al
test al, al
jne 0x445fc9
mov al, byte [esi + ebx]
cmp al, byte [esp + 0x17]
je 0x445fb2
lea ecx, [esp + 0x1c]
push 0x57b4c0
push ecx
call fcn.0040238d
add esp, 8
test al, al
jne 0x445fc9
mov edx, dword [esp + 0x18]
mov eax, dword [edx - 0xc]
cdq
sub eax, edx
add esi, 1
sar eax, 1
cmp esi, eax
jl 0x445f30
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0xd8]
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
cdq
sub eax, edx
sar eax, 1
cmp esi, eax
je 0x446007
add ebx, 1
sub ecx, ebx
add ecx, dword [esp + 0x30]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x18]
push ecx
mov ecx, ebp
call fcn.0040211c
test eax, eax
jbe 0x445e7a
jmp 0x44601e
cmp edi, dword [esp + 0x48]
jge 0x446049
mov edx, dword [esp + 0x44]
lea eax, [edx + edi*4]
push eax
lea ecx, [esp + 0x2c]
call fcn.00402432
add edi, 1
cmp edi, dword [esp + 0x48]
mov dword [esp + 0x24], edi
jl 0x445ab0
jmp 0x44590a
push 0xb
push str.Canceled...
lea ecx, [esp + 0x30]
call fcn.0040468d
jmp 0x44590a
call fcn.004b3abd
int3