Function at 0x440e30
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x12c
mov eax, dword [esp + 0x138]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x140]
movsx ebp, ax
shr eax, 0x10
cmp edi, 0x201
mov esi, ecx
mov byte [esp + 0x13], 0
movsx ebx, ax
je 0x440e78
cmp edi, 0x204
je 0x440e78
cmp edi, 0x202
je 0x440e78
cmp edi, 0x205
jne 0x440ef1
call fcn.0062c610
mov eax, dword [eax + 0x30]
test eax, eax
mov dword [esp + 0x14], eax
mov ecx, eax
je 0x440e97
mov eax, dword [ecx + 0x300]
shr eax, 8
test al, 1
je 0x440edb
mov eax, dword [0x77e1ac]
cmp ecx, eax
jne 0x440eaa
mov dl, byte [eax + 0x8f0]
test dl, dl
jne 0x440edb
cmp edi, 0x204
jne 0x440ef1
test ecx, ecx
je 0x441609
mov ecx, dword [esp + 0x14]
call fcn.00615530
test eax, eax
je 0x441609
mov ecx, dword [esp + 0x14]
cmp dword [0x77e1b0], ecx
je 0x441609
pop edi
pop esi
mov byte [esp + 0xb], 0
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
cmp edi, 0x201
ja 0x441609
je 0x44147e
sub edi, 0x100
je 0x44103e
sub edi, 4
je 0x44103e
sub edi, 0xfc
jne case.default.0x441282
mov al, byte [esp + 0x144]
test al, 1
mov dword [esi + 0x14cc], ebp
mov dword [esi + 0x14d0], ebx
jne 0x440f42
mov byte [esi + 0x14dc], 0
mov bl, 2
test bl, al
jne 0x440f4f
mov byte [esi + 0x14dd], 0
call fcn.00462680
cmp dword [eax + 0x170], 0x16
jne case.default.0x441282
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xb4]
test al, al
je 0x440f99
push 0xffff0000
push 0x700e58
mov ecx, 0x77e198
call fcn.004659a0
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x5c]
test byte [eax + 0x19], bl
jne 0x44173b
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x5c]
test byte [eax + 1], bl
jne 0x44173b
mov eax, dword [esi + 0x14d0]
mov ecx, dword [esi + 0x14cc]
push eax
push ecx
xor edi, edi
lea edx, [esp + 0x30]
mov dword [esi + 0x14fc], edi
mov ecx, dword [0x77da48]
push edx
call fcn.00435f00
mov ecx, dword [eax]
mov dword [esi + 0x150c], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x1510], edx
mov dword [esi + 0x1500], 1
mov byte [esi + 0x1404], 1
mov al, byte [0x78075d]
test al, al
je 0x441021
mov al, byte [esp + 0x13]
mov dword [esi + 0x1514], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [esi + 0x14e4]
pop edi
mov dword [esi + 0x1514], eax
mov al, byte [esp + 0xf]
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call edi
test ax, ax
mov ebx, dword [esp + 0x144]
jge 0x44109e
push 0x10
call edi
test ax, ax
jge 0x44109e
cmp ebx, 0x58
jne 0x44109e
mov ecx, dword [0x77da48]
mov eax, dword [ecx + 0x45c]
test eax, eax
je 0x44109e
mov edx, dword [eax + 0x3c]
shr edx, 2
test dl, 1
je 0x44109e
mov ecx, dword [0x77e234]
call fcn.004510c0
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
push 0x11
call edi
test ax, ax
jge 0x4410cf
cmp ebx, 0x58
jne 0x4410cf
push 0xff
call fcn.004a6380
add esp, 4
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
xor edi, edi
mov ebp, 5
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x44110f
mov ecx, dword [esp + 0x144]
lea eax, [edi + 0x31]
cmp ecx, eax
jne 0x44110f
mov ebx, 5
jmp 0x441100
mov ecx, dword [0x77e1d4]
push edi
call fcn.004fda90
dec ebx
jne 0x441100
inc edi
dec ebp
jne 0x4410d6
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call ebx
test ax, ax
mov edi, dword [esp + 0x144]
jge 0x44114e
cmp edi, 0xc0
jne 0x44114e
mov ecx, esi
call fcn.0052af60
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov ecx, dword [0x77e24c]
xor ebp, ebp
cmp ecx, ebp
je 0x441168
push edi
call fcn.0047b920
test al, al
jne 0x44173b
cmp edi, 0x44
jne 0x441198
mov al, byte [0x755ee0]
test al, al
je 0x4411e6
call fcn.00498950
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
mov byte [0x755ee0], 0
pop ebx
add esp, 0x12c
ret 0xc
cmp edi, 0xc0
jne 0x4411aa
push ebp
mov ecx, esi
call fcn.004380e0
jmp 0x4411e6
cmp edi, 0x31
jne 0x4411d2
push 0x11
call ebx
test ax, ax
jge 0x4411e6
mov eax, dword [0x77e2f4]
cmp eax, ebp
je 0x4411e6
mov ecx, dword [eax + 0x444]
cmp ecx, ebp
je 0x4411e6
call fcn.0044c8e0
jmp 0x4411e6
cmp edi, 0x41
jne 0x4411e6
mov ecx, esi
call fcn.00436430
test al, al
jne 0x44173b
push 0x11
call ebx
test ax, ax
jl 0x44120f
cmp edi, 0x46
jne 0x44123d
call fcn.00498300
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
push 0x11
call ebx
test ax, ax
jge 0x44123d
cmp edi, 0x46
jne 0x44123d
mov ecx, 0x77e198
call fcn.0046a860
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [0x77e1ac]
cmp eax, ebp
je 0x441250
mov cl, byte [eax + 0x7b4]
mov byte [esp + 0x1b], cl
push ebp
lea edx, [esp + 0x1f]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.00411930
mov ecx, eax
call fcn.00419fb0
test al, al
je case.default.0x441282
mov eax, dword [esp + 0x1c]
dec eax
cmp eax, 4
ja case.default.0x441282
jmp dword [eax*4 + 0x441754]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x5c]
mov cl, byte [eax + 0x19]
mov bl, 2
test bl, cl
jne 0x4412d8
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x5c]
test byte [eax + 1], bl
jne 0x4412d8
mov ecx, dword [esp + 0x14]
push ecx
call fcn.00439e00
add esp, 4
test eax, eax
je 0x44173b
push eax
mov ecx, esi
call fcn.0043b530
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
call fcn.0040f760
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov edx, dword [0x77da48]
mov ebx, dword [edx + 0x458]
mov eax, dword [esp + 0x14]
push eax
mov ecx, ebx
call fcn.00403f10
mov edi, eax
test edi, edi
je 0x44132e
mov ecx, edi
call fcn.00435340
test al, al
je 0x44132e
cmp dword [edi + 0x54], 1
je 0x441349
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x18]
push edx
mov ecx, ebx
mov dword [esp + 0x2c], 1
call fcn.00437f00
mov edi, eax
test edi, edi
je case.default.0x441282
mov eax, dword [0x77f398]
movzx edx, byte [0x77f39a]
mov edi, dword [edi + 0x2c]
movzx ecx, ah
and ecx, edx
movzx edx, byte [0x77f39b]
movzx eax, al
and edx, eax
or ecx, edx
mov eax, ecx
and eax, reloc.WS2_32.dll_getsockopt
jns 0x441381
dec eax
or eax, 0xfffffff8
inc eax
push edi
mov ecx, esi
call dword [esi + eax*4 + 0x1528]
pop edi
pop esi
pop ebp
mov byte [esp + 7], al
pop ebx
add esp, 0x12c
ret 0xc
mov esi, dword [esp + 0x14]
push str.dataicons.gl
lea ecx, [esp + 0x34]
mov byte [esp + 0x34], 0
mov dword [esp + 0x138], ebp
mov dword [esp + 0x13c], ebp
call fcn.0040f180
movzx esi, si
lea ecx, [esi - 0x3e8]
mov dword [esp + 0x134], 7
mov dword [esp + 0x138], ecx
call fcn.004851e0
push 8
push 3
mov dword [eax + 0xc], esi
mov dword [eax + 0x24], 4
call fcn.00462680
mov ecx, eax
call fcn.00462a60
xor ecx, ecx
push ecx
xor eax, eax
push eax
lea edx, [esp + 0x38]
push edx
call fcn.00636960
mov ecx, eax
call fcn.00636990
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [esp + 0x14]
mov ecx, dword [0x77e1d4]
push eax
call fcn.004fbfc0
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov ecx, dword [esp + 0x14]
mov edx, dword [0x77da48]
push ecx
mov ecx, dword [edx + 0x458]
call fcn.00403f10
cmp eax, ebp
je case.default.0x441282
push 0xffffffffffffffff
push eax
call fcn.0053bf70
mov al, byte [esp + 0x1b]
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [0x77da48]
mov ecx, dword [eax + 0x248]
test ecx, ecx
je 0x4414b8
mov ecx, dword [ecx + 0x28]
test ecx, ecx
je 0x4414b8
push ecx
mov dword [eax + 0x248], 0
call fcn.004e3620
add esp, 4
pop edi
pop esi
pop ebp
mov byte [esp + 7], al
pop ebx
add esp, 0x12c
ret 0xc
mov ecx, dword [eax + 0x24c]
test ecx, ecx
je 0x4414d8
mov edi, dword [ecx + 0x3c]
mov ecx, edi
shr ecx, 1
test cl, 1
jne 0x4414ef
mov edx, edi
shr edx, 2
test dl, 1
jne 0x4414ef
mov byte [esi + 0x13be], 1
call sub.WINMM.dll_timeGetTime
mov dword [esi + 0x14e0], eax
mov eax, dword [0x77da48]
mov edi, dword [eax + 0x24c]
test edi, edi
je 0x441519
mov ecx, dword [edi + 0x3c]
shr ecx, 1
test cl, 1
je 0x441519
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x64]
test al, al
jne 0x441514
mov byte [esi + 0x13bd], al
mov eax, dword [0x77da48]
push ebx
push ebp
mov ecx, eax
call fcn.00437e10
test eax, eax
jne 0x441533
mov ecx, dword [0x77da48]
push ebx
push ebp
call fcn.00437e50
push 1
push eax
mov ecx, esi
call fcn.00440a20
test al, al
jne 0x44173b
call fcn.00462680
mov ecx, dword [eax + 0x14c]
test ecx, ecx
je 0x44156f
call fcn.0040f760
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
call fcn.0062c610
mov ecx, eax
call fcn.0062b090
test eax, eax
je 0x4415bb
call fcn.0062c610
mov ecx, dword [eax + 0x30]
test ecx, ecx
jne 0x44173b
xor ecx, ecx
push ecx
push ecx
push ecx
xor eax, eax
push eax
push 0x201
push ecx
call fcn.00554950
add esp, 0x18
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
call sub.WINMM.dll_timeGetTime
mov dword [esi + 0x14d4], eax
mov dword [esi + 0x14cc], ebp
mov dword [esi + 0x14d0], ebx
mov byte [esi + 0x14dc], 1
mov byte [esi + 0x14de], 0
mov eax, dword [0x77da48]
mov ecx, dword [eax + 0x24c]
push ecx
push 0x201
mov ecx, esi
call fcn.00436b00
pop edi
pop esi
pop ebp
mov byte [esp + 7], al
pop ebx
add esp, 0x12c
ret 0xc
sub edi, 0x202
je 0x441721
sub edi, 2
je 0x441637
dec edi
jne case.default.0x441282
mov byte [esi + 0x14dd], 0
mov dword [esi + 0x14e0], 0
jmp 0x44172f
call fcn.00462680
cmp dword [eax + 0x170], 0x18
jne 0x44166a
mov ecx, dword [0x77e2f4]
test ecx, ecx
je 0x44166a
call fcn.004d4c30
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
call fcn.00462680
cmp dword [eax + 0x174], 0x19
jne 0x4416b7
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x24], 0
call fcn.00462680
mov ecx, eax
call fcn.00462b30
push 0
push 0
call fcn.00462680
mov ecx, eax
call fcn.00462a60
pop edi
pop esi
mov byte [esp + 0xb], 1
mov al, byte [esp + 0xb]
pop ebp
pop ebx
add esp, 0x12c
ret 0xc
mov eax, dword [0x77da48]
mov eax, dword [eax + 0x24c]
test eax, eax
je 0x4416d2
push eax
mov ecx, esi
call fcn.00436fd0
test al, al
jne 0x44173b
call sub.WINMM.dll_timeGetTime
mov dword [esi + 0x14d8], eax
mov dword [esi + 0x14cc], ebp
mov dword [esi + 0x14d0], ebx
mov byte [esi + 0x14dd], 1
mov byte [esi + 0x14de], 0
mov ecx, dword [0x77da48]
mov edx, dword [ecx + 0x24c]
push edx
push 0x204
mov ecx, esi
call fcn.00436b00
pop edi
pop esi
pop ebp
mov byte [esp + 7], al
pop ebx
add esp, 0x12c
ret 0xc
mov byte [esi + 0x14dc], 0
mov byte [esi + 0x13be], 0
mov dword [esi + 0x14cc], ebp
mov dword [esi + 0x14d0], ebx
mov byte [esp + 0x13], 1
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret 0xc