Function at 0x4700a4
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi]
call dword [eax + 0xdc]
test al, al
mov eax, dword [esp + 0x10]
jne 0x4700e6
mov ecx, dword [eax]
cmp ecx, 8
jle 0x4700e6
cmp ecx, 0x13
jge 0x4700e6
mov ecx, dword [esi + 0x44]
push eax
test ecx, ecx
je 0x4700da
mov edx, dword [ecx]
call dword [edx + 0x114]
jmp 0x470347
mov ecx, esi
call fcn.0047ba82
jmp 0x470347
mov ecx, dword [eax]
cmp ecx, 0x15
jne 0x4700f9
mov byte [esi + 0x199], 1
jmp 0x470347
cmp ecx, 0x14
jne 0x47010a
mov byte [esi + 0x199], 0
jmp 0x470347
push edi
cmp ecx, 3
je 0x4701b1
cmp ecx, 0x12
jne 0x47026c
movzx edx, word [eax + 0x18]
xor ecx, ecx
sub edx, ecx
je 0x47016a
dec edx
jne 0x47026c
cmp byte [esi + 0x57c], cl
je 0x47015b
cmp byte [esi + 0x57d], cl
je 0x47015b
mov ebp, dword [esi]
push 1
push 1
push ecx
lea edi, [esi + 0x578]
mov ebx, dword [edi]
lea ecx, [esi + 0x580]
call fcn.0046eba4
inc eax
jmp 0x470194
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x178]
jmp 0x470346
cmp byte [esi + 0x57c], cl
je 0x4701a2
cmp byte [esi + 0x57d], cl
je 0x4701a2
mov ebp, dword [esi]
push 1
push ecx
push ecx
lea edi, [esi + 0x578]
mov ebx, dword [edi]
lea ecx, [esi + 0x580]
call fcn.0046eba4
dec eax
push eax
mov ecx, esi
call dword [ebp + 0x164]
jmp 0x4702fe
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x174]
jmp 0x470346
movzx ecx, word [eax + 0x14]
cmp ecx, 0x24
jg 0x47025a
je 0x470230
sub ecx, 0xd
je 0x470346
sub ecx, 0x14
je 0x470221
dec ecx
je 0x470212
dec ecx
jne 0x47026c
lea edi, [esi + 0x594]
mov eax, dword [edi]
lea ecx, [eax + 0x524]
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jle 0x470346
mov edi, dword [edi]
lea ecx, [edi + 0x524]
mov eax, dword [ecx]
add esi, 0x578
mov ebx, dword [esi]
push 1
call dword [eax + 0xc]
dec eax
mov ecx, esi
jmp 0x470300
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x180]
jmp 0x470346
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x17c]
jmp 0x470346
mov eax, dword [esi + 0x594]
lea ecx, [eax + 0x524]
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jle 0x470346
lea ecx, [esi + 0x578]
mov eax, dword [ecx]
push 1
push 0
jmp 0x470343
sub ecx, 0x26
je 0x47030d
dec ecx
dec ecx
je 0x4702ac
sub ecx, 0x19
je 0x470279
push eax
mov ecx, esi
call fcn.0047ba82
jmp 0x470346
cmp byte [esi + 0x57d], 0
jne 0x470346
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x470346
lea ecx, [esi + 0x578]
mov eax, dword [ecx]
call dword [eax + 0x38]
jmp 0x470346
lea ecx, [esi + 0x580]
call fcn.004699d5
test eax, eax
jle 0x470346
mov ecx, esi
call fcn.00470054
mov ebx, eax
lea edi, [esi + 0x578]
mov eax, dword [edi]
mov ecx, edi
inc ebx
call dword [eax + 0x3c]
mov eax, dword [esi + 0x594]
lea ecx, [eax + 0x524]
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ecx, [ebx + 1]
cmp ecx, eax
push 1
jle 0x470306
mov ebx, dword [edi]
lea ecx, [esi + 0x524]
mov eax, dword [ecx]
call dword [eax + 0xc]
dec eax
mov ecx, edi
push eax
call dword [ebx + 8]
jmp 0x470346
mov eax, dword [edi]
push ebx
mov ecx, edi
jmp 0x470343
lea ecx, [esi + 0x580]
call fcn.004699d5
test eax, eax
jle 0x470346
mov ecx, esi
call fcn.00470004
mov edi, eax
add esi, 0x578
mov eax, dword [esi]
mov ecx, esi
dec edi
call dword [eax + 0x3c]
mov eax, dword [esi]
xor ecx, ecx
cmp edi, ecx
push 1
jle 0x470340
push edi
jmp 0x470341
push ecx
mov ecx, esi
call dword [eax + 8]
pop edi
pop esi
pop ebp
pop ebx
ret 4