Function at 0x404dd0
Capabilities:
Hide graphical window
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
lea edi, [ebx + 0x38]
mov ecx, 0x43b8de
call fcn.00406d50
test al, al
jne 0x404e3e
mov ecx, dword [ebx + 0x74]
mov eax, dword [ecx + 0xff10]
test eax, eax
je 0x404e06
cmp dword [eax + 8], 1
jg 0x404e3e
mov ecx, dword [ecx + 0xff18]
test ecx, ecx
je 0x404e16
cmp dword [ecx + 8], 1
jg 0x404e3e
push edi
push ebx
call fcn.00403980
test al, al
je 0x404e27
push ebx
call fcn.0040ed20
push 0
push 0x43b8de
mov ecx, edi
call fcn.00401a30
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0x17
call dword [0x439310]
neg eax
sbb eax, eax
neg eax
inc eax
push eax
call dword [0x439290]
test ax, ax
setne al
mov byte [esp + 0x1c], al
mov ecx, dword [esp + 0x1c]
push ecx
lea esi, [ebx + 0xd8]
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0
call fcn.0041aa10
test al, al
je 0x404e9a
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4052ad
push eax
push ebx
call fcn.00404990
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
call dword [0x4392b4]
mov esi, eax
push 0xffffffffffffffec
push esi
call dword [0x439324]
and eax, 0x10000
xor edx, edx
cmp eax, 0x10000
setne dl
add edx, 2
mov eax, edx
push eax
push esi
call dword [0x4392c0]
mov ebx, dword [ebx + 0x84]
mov esi, dword [ebx]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x14], esi
cmp esi, ebx
je 0x4052ad
jmp 0x404ee9
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x44], eax
test eax, eax
je 0x404f0a
lea ecx, [eax + 8]
mov edx, 1
lock xadd dword [ecx], edx
test byte [edi + 0x10], 4
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], edi
jne 0x404f27
push ebx
call dword [0x43924c]
test eax, eax
je 0x404f27
xor al, al
jmp 0x404f29
mov al, 1
mov ecx, dword [edi + 0x10]
and cl, 8
cmp cl, 8
sete cl
mov byte [esp + 0xf], cl
test al, al
jne 0x405206
test cl, cl
jne 0x405206
mov esi, dword [0x4392e0]
push ebx
call esi
cmp eax, 1
jne 0x405198
push ebx
call dword [0x439298]
test eax, eax
jne 0x405198
lea edx, [esp + 0x54]
push edx
push ebx
mov dword [esp + 0x5c], 0x3c
call dword [0x4392a8]
mov eax, dword [esp + 0x78]
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x74]
and eax, 0x1000000
cmp eax, 0x1000000
setne al
mov byte [esp + 0x18], al
test al, al
jne 0x404fac
cmp dword [ecx + 0xff14], 0
lea eax, [ecx + 0xff14]
jne 0x404fb2
lea eax, [ecx + 0xff0c]
lea esi, [esp + 0x38]
call fcn.00418a30
mov ebx, dword [esp + 0x38]
sub esp, 8
add ebx, 0x118
lea eax, [esp + 0x50]
mov esi, esp
mov dword [esp + 0x48], ebx
call fcn.00418a30
mov edx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x40]
push eax
mov eax, ebx
lea edx, [esp + 0x70]
call fcn.004026d0
test al, al
je 0x405150
mov ecx, dword [edi]
push ecx
call dword [0x4392e0]
mov esi, dword [0x4392d4]
test eax, eax
jne 0x405021
mov edx, dword [edi]
push 5
push edx
call esi
mov eax, dword [edi + 4]
push eax
call dword [0x4392e0]
test eax, eax
jne 0x405037
mov ecx, dword [edi + 4]
push 5
push ecx
call esi
mov edx, dword [edi + 8]
push edx
call dword [0x4392e0]
test eax, eax
jne 0x40504d
mov eax, dword [edi + 8]
push 5
push eax
call esi
mov ecx, dword [edi + 0xc]
push ecx
call dword [0x4392e0]
test eax, eax
jne 0x405063
mov edx, dword [edi + 0xc]
push 5
push edx
call esi
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x2c], eax
mov eax, dword [edi + 0x10]
sete cl
mov edx, eax
and dl, 1
cmp dl, 1
sete dl
cmp dl, cl
je 0x4050db
test cl, cl
je 0x405089
or eax, 1
jmp 0x40508c
and eax, 0xfffffffe
mov ecx, dword [ebp + 8]
mov dword [edi + 0x10], eax
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x34], eax
mov edi, dword [ecx + 0x74]
sub esp, 8
lea eax, [esp + 0x50]
mov esi, esp
call fcn.00418a30
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x34]
sub eax, dword [ebx + 4]
push ecx
mov ecx, dword [esp + 0x3c]
sub ecx, dword [ebx + 0x10]
push edx
push eax
push ecx
lea edx, [esp + 0x74]
push edx
mov eax, edi
call fcn.0041a2f0
jmp 0x405150
mov eax, dword [esp + 0x38]
test byte [eax + 0x1a0], 0x20
je 0x405150
mov ecx, dword [ebp + 0xc]
sub ecx, dword [edi + 0x34]
mov edx, dword [ebp + 8]
cmp ecx, dword [edx + 0x104]
jbe 0x405150
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x34], eax
mov edx, dword [edi + 0x14]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 0x10]
push edx
mov edx, dword [esp + 0x20]
push edx
mov edx, dword [edi + 0x10]
and dl, 1
cmp dl, 1
mov edx, dword [esp + 0x20]
push edx
mov edx, dword [esp + 0x4c]
mov edx, dword [edx + 0x18]
push eax
sete bl
add edx, ecx
add edx, dword [esp + 0x30]
push edx
mov edx, dword [esp + 0x38]
sub edx, eax
mov eax, dword [esp + 0x3c]
push edx
mov edx, dword [edi]
sub eax, ecx
push eax
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x70]
push ecx
mov ecx, dword [eax + 0x74]
push edx
push ecx
call fcn.004198a0
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x4051fa
lea edx, [esi + 8]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x4051fa
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x4051fa
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
mov dword [esp + 0x14], eax
jmp 0x40526e
mov eax, dword [edi]
push eax
call esi
mov ebx, dword [0x4392d4]
test eax, eax
je 0x4051ae
mov ecx, dword [edi]
push 0
push ecx
call ebx
mov edx, dword [edi + 4]
push edx
call esi
test eax, eax
je 0x4051c0
mov eax, dword [edi + 4]
push 0
push eax
call ebx
mov ecx, dword [edi + 8]
push ecx
call esi
test eax, eax
je 0x4051d2
mov edx, dword [edi + 8]
push 0
push edx
call ebx
mov eax, dword [edi + 0xc]
push eax
call esi
test eax, eax
je 0x4051e4
mov ecx, dword [edi + 0xc]
push 0
push ecx
call ebx
cmp dword [edi + 0x14], 0
je 0x4051f1
mov dword [edi + 0x14], 0
or eax, 0xffffffff
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], eax
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
mov dword [esp + 0x14], eax
jmp 0x40526e
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x58]
test eax, eax
je 0x40522d
cmp ebx, eax
je 0x40522d
push 0
push 0x9c4
push 0
push 0
push 0
push 0x402
push eax
call dword [0x4392c8]
mov ebx, edi
call fcn.0041c550
push esi
mov esi, dword [ebp + 8]
add esi, 0x7c
lea edi, [esp + 0x54]
call fcn.00405ef0
cmp byte [esp + 0xf], 0
mov edx, dword [eax]
mov dword [esp + 0x14], edx
je 0x40526e
mov eax, dword [esp + 0x10]
push 0
push 0x9c4
push 0
push 0
push 0
push 0x403
push eax
call dword [0x4392c8]
mov esi, dword [esp + 0x44]
test esi, esi
je 0x40529f
lea ecx, [esi + 8]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x40529f
mov eax, dword [esi]
mov edx, dword [eax]
mov ecx, esi
call edx
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x40529f
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x30]
jne 0x404ee5
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8