Function at 0x44c070
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x49570e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x218
mov eax, dword [0x4c1830]
push ebx
push esi
push edi
mov edi, dword [0x4c7168]
push 0x10
mov dword [esp + 0x220], eax
mov esi, ecx
mov dword [esp + 0x14], edi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test edi, edi
movsx eax, ax
mov dword [esp + 0xc], eax
je 0x44c4cc
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x198]
mov dword [esp + 0x14], eax
mov dword [esi + 0x10244], eax
mov eax, dword [esi + 0x111ec]
sub eax, 0
lea ebx, [esi + 0x140]
mov dword [esi + 0xfb64], 0
mov byte [ebx], 0
je 0x44c12e
dec eax
jne 0x44c16c
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov eax, dword [esi]
lea ecx, [esi + 0xfb44]
push ecx
xor ecx, ecx
test edi, edi
setne cl
push edx
mov edx, dword [ebp + 0xc]
push ebx
lea ecx, [ecx + ecx + 2]
push ecx
mov ecx, dword [ebp + 8]
push edx
push ecx
lea edx, [esi + 0xfb50]
push edx
mov ecx, esi
call dword [eax + 0x184]
jmp 0x44c166
mov ecx, dword [ebp + 0x14]
lea eax, [esi + 0xfb44]
push eax
mov eax, dword [ebp + 0x10]
xor edx, edx
test eax, eax
mov eax, dword [esi + 0x11350]
setne dl
push ecx
mov ecx, dword [ebp + 8]
push ebx
lea edx, [edx + edx + 2]
push edx
add eax, dword [ebp + 0xc]
push eax
push ecx
lea edx, [esi + 0xfb50]
push edx
call fcn.00409660
add esp, 0x1c
mov dword [esi + 0xfb40], eax
cmp dword [esi + 0xfb40], 5
jne 0x44c190
mov ecx, dword [0x4c7168]
call fcn.0043d570
xor ecx, ecx
test eax, eax
setne cl
add ecx, 3
mov dword [esi + 0xfb40], ecx
cmp dword [esi + 0xfb40], 6
jne 0x44c1b5
mov ecx, dword [0x4c7168]
call fcn.0043d570
xor edx, edx
cmp eax, 1
setne dl
add edx, 3
mov dword [esi + 0xfb40], edx
mov eax, dword [esi + 0xfb40]
cmp eax, 3
je 0x44c1c9
cmp eax, 4
jne 0x44c44a
xor eax, eax
mov ecx, 0x80
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
cmp byte [ebx], 0
je 0x44c212
push 0x1ff
lea eax, [esp + 0x1c]
push ebx
push eax
call fcn.00474c50
lea ecx, [esp + 0x24]
push 1
push ecx
call fcn.004021b0
mov ecx, dword [esi + 0x11248]
add esp, 0x14
lea edx, [esp + 0x18]
push edx
add ecx, 0x260
call fcn.00422db0
jmp 0x44c223
mov ecx, dword [esi + 0x11248]
add ecx, 0x260
call fcn.00420550
mov ebx, dword [esi + 0xfcb8]
mov eax, dword [ebx + 0xc]
movsx edi, word [eax - 0x10]
mov edx, dword [eax - 0x14]
mov ecx, dword [ebx + 8]
sub eax, 0x24
mov eax, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x10]
add edi, edx
mov edx, dword [ebx]
sub edi, eax
push edi
add ecx, edx
lea eax, [esi + 0x7e40]
push ecx
push eax
call fcn.00474c50
mov byte [edi + esi + 0x7e40], 0
mov edi, dword [esi + 0xfb44]
add esp, 0xc
test edi, edi
je 0x44c44a
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x44c44a
cmp byte [edi + 4], 0x75
jne 0x44c295
mov eax, dword [edi + 0x20]
test eax, eax
je 0x44c295
cmp byte [eax], 0
je 0x44c295
push eax
call fcn.004708a0
add esp, 4
cmp byte [edi + 4], 0x52
jne 0x44c2bb
cmp dword [edi + 0x14], 0xfffffffe
jne 0x44c2bb
xor eax, eax
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], eax
mov ecx, dword [0x4c7168]
mov eax, dword [edi + 0x1c]
mov edx, dword [ecx]
push eax
call dword [edx + 0xb0]
mov al, byte [edi + 4]
cmp al, 0x4f
jne 0x44c32f
mov ecx, dword [esi + 0x108]
mov edx, dword [ecx]
push 1
call dword [edx + 0x18c]
mov ebx, eax
mov eax, dword [edi + 0x1c]
mov cl, byte [eax + esi + 0x110e8]
test cl, cl
sete cl
mov byte [eax + esi + 0x110e8], cl
mov ecx, dword [esi + 0x1106c]
mov byte [esi + 0x11348], 1
mov edi, dword [edi + 0x1c]
mov dl, byte [edi + esi + 0x110e8]
test dl, dl
sete dl
mov byte [esp + 0xc], dl
mov eax, dword [esp + 0xc]
push eax
push edi
push ebx
push ecx
mov ecx, dword [esi + 0x11248]
call fcn.004508c0
mov edx, dword [esi]
push 1
push ebx
mov ecx, esi
call dword [edx + 0x1a8]
jmp 0x44c44a
cmp al, 0x52
jne 0x44c44a
cmp dword [edi + 0x14], 0xffffffff
mov ecx, dword [esi + 0x11248]
jne 0x44c37b
mov eax, dword [edi + 0x1c]
push 0
push 0
push eax
push 0x50
push 0x20
call fcn.00450c90
test eax, eax
je 0x44c41f
mov ecx, dword [esi + 0x11248]
mov ecx, dword [ecx + 0x10c]
mov eax, dword [eax + 0xc]
mov edx, dword [ecx]
push 1
push eax
call dword [edx + 0x1a8]
jmp 0x44c41f
call fcn.0044ff80
cmp dword [esi + 0xfb40], 4
mov ebx, dword [esp + 0x10]
mov dword [esp + 0xc], eax
jne 0x44c3a0
xor ecx, ecx
test eax, eax
sete cl
push ecx
mov ecx, ebx
call fcn.0043e7e0
mov eax, dword [edi + 0x14]
test eax, eax
je 0x44c3b4
mov dword [esi + 0x111f0], eax
mov byte [esi + 0x111f8], 0
mov eax, dword [edi + 0x1c]
mov ecx, dword [esi + 0x11248]
mov edx, dword [ebx]
push 1
push 1
push eax
mov eax, dword [edi + 0x20]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push eax
push 4
mov ecx, ebx
call dword [edx + 0x70]
test eax, eax
jg 0x44c40a
mov ecx, ebx
call fcn.0043d550
mov eax, dword [edi + 0x1c]
mov ecx, dword [esi + 0x11248]
mov edx, dword [ebx]
push 1
push 1
push eax
mov eax, dword [edi + 0x20]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push eax
push 0x10
mov ecx, ebx
call dword [edx + 0x70]
mov ecx, ebx
call fcn.0043d550
cmp dword [esi + 0xfb40], 4
jne 0x44c41f
mov ecx, dword [esp + 0xc]
push ecx
mov ecx, ebx
call fcn.0043e7e0
mov eax, dword [esi + 0xfcb8]
xor ecx, ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 8], ecx
mov byte [esi + 0x7e40], cl
mov byte [esi + 0x140], cl
mov ecx, dword [esi + 0x11248]
add ecx, 0x260
call fcn.00420550
cmp dword [esi + 0xfb40], 0xa
jne 0x44c4bd
mov ecx, dword [esi + 0x11340]
mov edx, dword [ecx]
call dword [edx + 0x38]
mov edi, eax
test edi, edi
je 0x44c4bd
push 0x14
call fcn.00486744
add esp, 4
mov dword [esp + 0xc], eax
test eax, eax
mov dword [esp + 0x22c], 0
je 0x44c494
mov ecx, dword [esi + 0x11344]
push edi
push ecx
mov ecx, eax
call fcn.00472e80
mov edi, eax
jmp 0x44c496
xor edi, edi
mov ecx, dword [0x4c7168]
mov edx, dword [ecx]
push esi
push edi
mov dword [esp + 0x234], 0xffffffff
call dword [edx + 0xbc]
test edi, edi
je 0x44c4bd
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov eax, dword [esp + 0x14]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x19c]
mov ecx, dword [esp + 0x224]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x21c]
call fcn.0047471e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10