Function at 0x44d630
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b7854
push eax
mov dword fs:[0], esp
sub esp, 0x3c
push ebx
push ebp
push esi
mov esi, ecx
push edi
push 0x12c
mov eax, dword [esi + 0x1c]
push eax
call dword [sym.imp.USER32.dll_KillTimer]
mov edx, dword [esi + 0x1c]
lea ecx, [esp + 0x28]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetClientRect]
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0
call ebx
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jg 0x44d684
mov ecx, eax
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x64]
add ecx, 0xfffffffb
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x60]
push eax
lea edx, [esp + 0x2c]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
mov edi, dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x44d6f8
mov eax, dword [0x4d6ddc]
mov eax, dword [eax + 0xc0]
test eax, eax
je 0x44d6dd
mov ecx, dword [eax + 0x1c]
push ecx
call edi
test eax, eax
jne 0x44d6f8
mov edx, dword [esi + 0x1c]
push eax
push 0x3e8
push 0x12c
push edx
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x44e002
mov eax, dword [esi + 0x1c]
push 0
push 0x3e8
push 0x12c
push eax
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x44e002
mov ecx, dword [0x4d6ddc]
or ebp, 0xffffffff
mov eax, dword [ecx + 0xc0]
test eax, eax
je 0x44dd77
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
push edx
push eax
push 0xe2af
call fcn.004602d0
mov ecx, dword [0x4d6ddc]
add esp, 4
mov edx, dword [ecx + 0xc0]
push eax
add edx, 0x4dc
push edx
call fcn.004a5177
mov eax, dword [0x4d6ddc]
add esp, 0x10
mov ecx, dword [eax + 0xc0]
push 0
call fcn.004a9810
mov ecx, dword [0x4d6ddc]
mov eax, dword [ecx + 0xc0]
cmp dword [eax + 0x4d4], 9
jne 0x44d7c9
mov ecx, dword [ecx + 0xbc]
test ecx, ecx
je 0x44d7c9
add esi, 0x61
push esi
call fcn.004186e0
mov ecx, dword [0x4d6ddc]
push 0
mov ecx, dword [ecx + 0xbc]
call fcn.00418710
mov eax, dword [0x4d6ddc]
lea edx, [esp + 0x60]
push edx
mov ecx, dword [eax + 0xbc]
call fcn.004186e0
mov ecx, dword [0x4d6ddc]
push 0
mov ecx, dword [ecx + 0xbc]
call fcn.00418710
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
mov dword [esi], edx
mov dword [esi + 4], eax
jmp 0x44e002
mov ecx, dword [eax + 0x1c]
push ecx
call edi
test eax, eax
je 0x44d9ba
mov edx, dword [0x4d6ddc]
mov eax, dword [edx + 0xc0]
cmp dword [eax + 0x4d4], 8
jne 0x44d9ba
mov eax, dword [esi + 0x79]
test eax, eax
jne 0x44d9ba
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
jne 0x44d9ba
mov eax, dword [esi + 0xa5]
test eax, eax
jne 0x44d846
push 0x14
call fcn.004aa6ea
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 0x54], 0
je 0x44d83a
push esi
mov ecx, eax
call fcn.004adda0
jmp 0x44d83c
xor eax, eax
mov dword [esp + 0x54], ebp
mov dword [esi + 0xa5], eax
mov ecx, dword [esi + 0xa5]
push 5
mov edx, dword [ecx]
call dword [edx + 0x24]
mov eax, dword [esi + 0x1c]
push eax
call dword [sym.imp.USER32.dll_SetCapture]
push eax
call fcn.004a7808
mov ecx, dword [esi + 0xa5]
push 6
call fcn.004ad8f3
mov eax, dword [esi + 0x99]
mov ecx, dword [esi + 0x95]
mov ebp, dword [esi + 0xa5]
lea edx, [eax + 0x25]
lea edi, [ecx + 0x32]
add eax, 0xffffffdb
push edx
add ecx, 0xffffffce
push edi
push eax
push ecx
mov ecx, dword [ebp + 4]
push ecx
call dword [sym.imp.GDI32.dll_Rectangle]
mov eax, dword [esi + 0x1c]
lea edx, [esp + 0x14]
push edx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
push 0
call ebx
push 1
mov edi, eax
call ebx
cmp edi, dword [esp + 0x1c]
jg 0x44d8bf
mov dword [esp + 0x1c], edi
cmp eax, dword [esp + 0x20]
jg 0x44d8c9
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
push ecx
lea eax, [esp + 0x18]
push edx
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x44d988
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x64]
mov dword [esi + 0x95], eax
lea edi, [eax - 0x32]
mov dword [esi + 0x99], edx
cmp edi, ecx
jg 0x44d912
cmp eax, ecx
jl 0x44d912
add ecx, 0x32
mov dword [esi + 0x95], ecx
mov ecx, dword [esp + 0x1c]
lea edi, [eax + 0x32]
cmp edi, ecx
jl 0x44d92a
cmp eax, ecx
jg 0x44d92a
add ecx, 0xffffffce
mov dword [esi + 0x95], ecx
mov eax, dword [esp + 0x18]
lea ecx, [edx - 0x25]
cmp ecx, eax
jg 0x44d942
cmp edx, eax
jl 0x44d942
add eax, 0x25
mov dword [esi + 0x99], eax
mov eax, dword [esp + 0x20]
lea ecx, [edx + 0x25]
cmp ecx, eax
jl 0x44d95a
cmp edx, eax
jg 0x44d95a
add eax, 0xffffffdb
mov dword [esi + 0x99], eax
mov eax, dword [esi + 0x99]
mov ecx, dword [esi + 0x95]
mov ebp, dword [esi + 0xa5]
lea edx, [eax + 0x25]
lea edi, [ecx + 0x32]
add eax, 0xffffffdb
push edx
mov edx, dword [ebp + 4]
add ecx, 0xffffffce
push edi
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_Rectangle]
jmp 0x44d9ba
mov ecx, dword [esi + 0xa5]
mov eax, 0xfffffc18
test ecx, ecx
mov dword [esi + 0x95], eax
mov dword [esi + 0x99], eax
je 0x44d9ba
mov eax, dword [ecx]
push 1
call dword [eax + 4]
mov dword [esi + 0xa5], 0
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov al, byte [esi + 0x815]
test al, al
je 0x44dd74
mov ecx, dword [0x4d6ddc]
mov edi, dword [sym.imp.USER32.dll_IsWindowVisible]
mov eax, dword [ecx + 0xc0]
mov edx, dword [eax + 0x1c]
push edx
call edi
test eax, eax
jne 0x44da05
mov eax, dword [0x4d6ddc]
mov eax, dword [eax + 0xbc]
test eax, eax
je 0x44dd74
mov ecx, dword [eax + 0x1c]
push ecx
call edi
test eax, eax
je 0x44dd74
mov ecx, dword [esi + 0x55]
test ecx, ecx
je 0x44e002
mov edx, dword [esi + 0x51]
push edx
call fcn.004ad7e9
mov dword [esp + 0x24], eax
mov eax, dword [0x4d3bcc]
mov dword [esp + 0x10], eax
mov ecx, dword [0x4d6ddc]
mov dword [esp + 0x54], 1
mov edx, dword [ecx + 0xc0]
mov eax, dword [edx + 0x4d4]
dec eax
cmp eax, 5
ja case.0x44da4a.5
jmp dword [eax*4 + 0x44e018]
mov edx, dword [esi + 0x5d]
mov eax, dword [esi + 0x59]
mov ecx, dword [esi + 0x55]
push edx
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.004adbdc
mov edx, dword [esi + 0x65]
mov eax, dword [esi + 0x61]
mov ecx, dword [esi + 0x55]
push edx
push eax
call fcn.004adc28
mov edx, dword [esi + 0x5d]
mov eax, dword [esi + 0x59]
mov ecx, dword [esi + 0x55]
push edx
lea edx, [esp + 0x18]
push eax
push edx
call fcn.004adbdc
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov ecx, dword [esi + 0x55]
push eax
push edx
call fcn.004adc28
mov eax, dword [esp + 0x60]
mov ecx, dword [esi + 0x59]
mov edx, dword [esp + 0x64]
mov edi, dword [esi + 0x5d]
mov dword [esi + 0x61], eax
cmp eax, ecx
mov dword [esi + 0x65], edx
jne 0x44daca
mov ebx, edx
sub ebx, edi
neg ebx
sbb ebx, ebx
and ebx, 0x5a
mov dword [esp + 0x14], ebx
fild dword [esp + 0x14]
jmp 0x44daf6
mov ebx, edi
sub ebx, edx
mov dword [esp + 0x14], ebx
mov ebx, eax
fild dword [esp + 0x14]
sub ebx, ecx
mov dword [esp + 0x14], ebx
fidiv dword [esp + 0x14]
fabs
fld1
fpatan
fld qword [0x4bdd48]
fdiv qword [0x4bdef8]
fmulp st(1)
fst qword [esp + 0x14]
cmp edx, edi
jg 0x44db10
cmp eax, ecx
jge 0x44db0c
fsubr qword [0x4bdd48]
fst qword [esp + 0x14]
cmp edx, edi
jle 0x44db3e
cmp eax, ecx
jge 0x44db32
fadd qword [0x4bdd48]
fstp qword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push 0xef0a
jmp 0x44dc16
fld qword [0x4be1b8]
fsub st(1)
fstp qword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
push ecx
fstp st(0)
push 0xef0a
jmp 0x44dc16
mov edx, dword [esi + 0x5d]
mov eax, dword [esi + 0x59]
mov ecx, dword [esi + 0x55]
push edx
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.004adbdc
mov edx, dword [esi + 0x65]
mov eax, dword [esi + 0x61]
mov ecx, dword [esi + 0x55]
push edx
push eax
call fcn.004adc28
mov edx, dword [esi + 0x5d]
mov eax, dword [esi + 0x59]
mov ecx, dword [esi + 0x55]
push edx
lea edx, [esp + 0x18]
push eax
push edx
call fcn.004adbdc
mov ebp, dword [esp + 0x64]
mov edi, dword [esi + 0x5d]
mov ecx, dword [esi + 0x59]
mov eax, ebp
sub eax, edi
cdq
mov ebx, eax
mov eax, dword [esp + 0x60]
xor ebx, edx
sub eax, ecx
sub ebx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ebx
jl 0x44dbee
mov eax, dword [esp + 0x60]
mov ecx, dword [esi + 0x55]
push edi
push eax
call fcn.004adc28
mov eax, dword [esp + 0x60]
mov ebp, dword [esi + 0x59]
mov ecx, dword [esi + 0x5d]
mov dword [esi + 0x61], eax
sub eax, ebp
push ecx
cdq
xor eax, edx
mov dword [esi + 0x65], ecx
sub eax, edx
push eax
push 0xe2b0
call fcn.004602d0
add esp, 4
lea ecx, [esp + 0x18]
push eax
push ecx
jmp 0x44dc24
push ebp
push ecx
mov ecx, dword [esi + 0x55]
call fcn.004adc28
mov eax, dword [esp + 0x64]
mov ebp, dword [esi + 0x5d]
mov dword [esi + 0x65], eax
mov ecx, dword [esi + 0x59]
sub eax, ebp
mov dword [esi + 0x61], ecx
cdq
xor eax, edx
sub eax, edx
push eax
push ecx
push 0xe2b0
call fcn.004602d0
add esp, 4
lea edx, [esp + 0x18]
push eax
push edx
call fcn.004a5177
mov ecx, dword [0x4d6ddc]
add esp, 0x10
lea eax, [esp + 0x10]
mov ecx, dword [ecx + 0xc0]
push eax
add ecx, 0x4dc
call fcn.004aac67
mov edx, dword [0x4d6ddc]
push 0
mov ecx, dword [edx + 0xc0]
call fcn.004a9810
jmp case.0x44da4a.5
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
push eax
push ecx
mov ecx, dword [esi + 0x55]
call fcn.004adc28
jmp case.0x44da4a.5
mov eax, dword [esi + 0x65]
mov ecx, dword [esi + 0x61]
mov edx, dword [esi + 0x5d]
mov ebp, dword [esi + 0x55]
mov edi, dword [esi + 0x59]
push eax
push ecx
push edx
mov edx, dword [ebp + 4]
push edi
mov edi, dword [sym.imp.GDI32.dll_Rectangle]
push edx
call edi
mov ebx, dword [esp + 0x64]
mov eax, dword [esi + 0x5d]
mov edx, dword [esi + 0x55]
mov ecx, dword [esi + 0x59]
push ebx
mov ebx, dword [esp + 0x64]
push ebx
push eax
mov eax, dword [edx + 4]
push ecx
push eax
call edi
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x5d]
mov dword [esi + 0x61], ecx
mov dword [esi + 0x65], eax
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esi + 0x59]
push eax
mov eax, ecx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
push eax
push 0xe2b0
call fcn.004602d0
add esp, 4
lea ecx, [esp + 0x18]
push eax
push ecx
call fcn.004a5177
mov eax, dword [0x4d6ddc]
add esp, 0x10
lea edx, [esp + 0x10]
mov ecx, dword [eax + 0xc0]
push edx
add ecx, 0x4dc
call fcn.004aac67
mov ecx, dword [0x4d6ddc]
push 0
mov ecx, dword [ecx + 0xc0]
call fcn.004a9810
jmp case.0x44da4a.5
mov eax, dword [esp + 0x64]
lea edx, [esp + 0x28]
mov dword [esp + 0x2c], eax
add eax, 0x13
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x28], eax
add eax, 0x13
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x1c]
push 1
push edx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esi + 0x55]
call fcn.004ad7e9
lea ecx, [esp + 0x10]
mov dword [esp + 0x54], 0xffffffff
call fcn.004aa9a9
jmp 0x44e002
or ebp, 0xffffffff
mov al, byte [0x4d6868]
test al, 1
jne 0x44dd98
mov dl, al
push 0x44e040
or dl, 1
mov byte [0x4d6868], dl
call fcn.00498d21
add esp, 4
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
mov dword [esi + 0x11a], edx
mov dword [esi + 0x11e], eax
call fcn.004b25bf
lea ecx, [esp + 0x60]
push ecx
mov ecx, esi
call fcn.0044b4b0
mov edi, eax
add edi, 0x3e8
call fcn.004b25bf
mov eax, dword [eax + 0xc]
and edi, 0xffff
push edi
push eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [esi + 0x3d], eax
mov eax, dword [esi + 0x127]
cmp eax, 1
jne 0x44de07
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
je 0x44de07
lea edx, [esp + 0x60]
mov ecx, esi
push edx
call fcn.0045b6e0
jmp 0x44e002
mov al, byte [esi + 0x815]
test al, al
jne 0x44de45
lea eax, [esp + 0x60]
push 4
push eax
mov ecx, esi
call fcn.0044b5b0
test eax, eax
je 0x44e002
cmp dword [esi + 0x834], ebp
jle 0x44e002
mov ecx, dword [eax + 0xc]
push 2
push ecx
mov ecx, esi
call fcn.0044f0a0
jmp 0x44e002
mov edi, dword [esi + 0x83c]
test edi, edi
je 0x44e002
mov al, byte [edi + 6]
test al, al
je 0x44e002
mov al, byte [esi + 0x817]
test al, al
jne 0x44df6c
mov edx, dword [0x4d6870]
lea ebx, [edx - 1]
test ebx, ebx
jl 0x44df46
mov eax, dword [0x4d686c]
mov eax, dword [eax + ebx*4]
cmp edi, dword [eax + 8]
jne 0x44dea7
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x44deaf
mov eax, dword [eax + 2]
test eax, eax
je 0x44deaf
push eax
mov ecx, esi
call fcn.0044e640
test eax, eax
jne 0x44deaf
dec ebx
jns 0x44de7d
jmp 0x44df46
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, dword [0x4d686c]
mov dword [0x4d6860], ecx
mov dword [0x4d6864], edx
push 0x14
mov ecx, dword [eax + ebx*4]
mov dword [esi + 0x820], ecx
call fcn.004aa6ea
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 0x54], 2
je 0x44def7
push esi
mov ecx, eax
call fcn.004adda0
mov edi, eax
jmp 0x44def9
xor edi, edi
mov ecx, dword [esi + 0x820]
push edi
mov dword [esp + 0x58], ebp
call fcn.004167a0
test edi, edi
je 0x44df16
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx + 4]
mov eax, dword [esi + 0x820]
push 1
mov edx, dword [eax + 8]
lea ecx, [eax + 0x34]
push ecx
push ecx
mov eax, dword [edx + 0x21]
mov ecx, esp
mov dword [esp + 0x30], esp
push eax
call fcn.00417280
lea ecx, [esp + 0x20]
push ecx
call fcn.00460650
add esp, 0x10
test ebx, ebx
jge 0x44df50
mov dword [esi + 0x820], 0
mov edx, dword [esi + 0x1c]
mov byte [esi + 0x817], 1
push edx
call dword [sym.imp.USER32.dll_SetCapture]
push eax
call fcn.004a7808
jmp 0x44e002
mov eax, dword [esi + 0x820]
test eax, eax
je 0x44e002
mov eax, dword [esp + 0x60]
mov ecx, dword [0x4d6860]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jg 0x44dfa6
mov eax, dword [esp + 0x64]
mov ecx, dword [0x4d6864]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jle 0x44e002
push esi
lea ecx, [esp + 0x3c]
call fcn.004adda0
mov eax, dword [esp + 0x64]
mov ecx, dword [0x4d6864]
mov edi, dword [0x4d6860]
sub eax, ecx
mov ecx, dword [esp + 0x60]
push eax
sub ecx, edi
lea edx, [esp + 0x3c]
push ecx
mov ecx, dword [esi + 0x820]
push edx
mov dword [esp + 0x60], 3
call fcn.00416af0
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x60]
mov dword [0x4d6864], ecx
lea ecx, [esp + 0x38]
mov dword [0x4d6860], eax
mov dword [esp + 0x54], ebp
call fcn.004ade12
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x48
ret 0xc