Function at 0x472300
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x58a710]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
mov ebx, ecx
push 0x10
call edi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
xor ecx, ecx
test ax, ax
mov eax, dword [ebp + 0xc]
sets cl
add eax, 0xffffffdf
cmp eax, 0x22
ja case.0x472343.35
movzx eax, byte [eax + 0x472cbc]
jmp dword [eax*4 + 0x472c9c]
test ecx, ecx
je 0x47239a
cmp dword [ebx + 0x84], 1
je 0x47239a
cmp byte [ebx + 0x81], 0
jne 0x472373
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
push 1
push 0
push 0xffffffffffffffff
mov ecx, ebx
call fcn.00470cd0
mov eax, dword [ebx + 0x60]
push 1
push 0
push dword [ebx + 4]
mov dword [ebx + 0x70], eax
mov eax, dword [ebx + 0x64]
mov dword [ebx + 0x74], eax
call esi
jmp case.0x472343.35
push 0
push 0
push 0xffffffffffffffff
mov ecx, ebx
mov byte [ebx + 0x81], 0
call fcn.00470cd0
jmp case.0x472343.35
test ecx, ecx
je 0x4723e4
cmp dword [ebx + 0x84], 1
je 0x4723e4
cmp byte [ebx + 0x81], 0
jne 0x4723dc
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
push 1
push 0
push 1
jmp 0x472379
mov eax, dword [ebx + 0x84]
dec eax
mov byte [ebx + 0x81], 0
cmp eax, 3
ja case.default.0x4723fb
jmp dword [eax*4 + 0x472ce0]
mov eax, dword [ebx + 0x3c]
mov edi, dword [ebx + 0x38]
cdq
idiv edi
mov ecx, dword [ebx + 0x48]
mov esi, dword [ebx + 0x88]
inc esi
mov dword [ebx + 0x88], esi
lea eax, [eax + ecx*2]
dec eax
cmp esi, eax
jle case.default.0x4723fb
mov eax, dword [ebx + 0x40]
cdq
idiv edi
mov dword [ebx + 0x88], eax
jmp case.default.0x4723fb
inc dword [ebx + 0x88]
jmp case.default.0x4723fb
mov eax, dword [ebx + 0x28]
mov ecx, dword [ebx + 0x2c]
cdq
idiv ecx
lea ecx, [ecx*2 + 1]
mov edi, dword [ebx + 0x88]
mov esi, eax
inc edi
mov eax, dword [ebx + 0x40]
imul esi, ecx
mov ecx, dword [ebx + 0x38]
cdq
idiv ecx
mov dword [ebx + 0x88], edi
add eax, 0xfffffffe
add eax, esi
cmp edi, eax
jle case.default.0x4723fb
mov eax, dword [ebx + 0x44]
cdq
idiv ecx
mov dword [ebx + 0x88], eax
jmp case.default.0x4723fb
mov eax, dword [ebx + 0x44]
mov edi, dword [ebx + 0x38]
cdq
idiv edi
mov ecx, dword [ebx + 0x88]
mov esi, dword [ebx + 0x28]
dec eax
inc ecx
add eax, esi
mov dword [ebx + 0x88], ecx
cmp ecx, eax
jle case.default.0x4723fb
mov eax, dword [ebx + 0x3c]
cdq
idiv edi
mov ecx, dword [ebx + 0x30]
mov dword [ebx + 0x88], eax
dec ecx
mov eax, dword [ebx + 0x8c]
cmp eax, ecx
jne 0x4724ca
mov eax, esi
cdq
add dword [ebx + 0x58], eax
adc dword [ebx + 0x5c], edx
jmp case.default.0x4723fb
inc eax
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x472508
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x472525
jb 0x47251a
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x472525
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb case.0x472343.35
ja 0x472547
cmp dword [ebx + 0x60], eax
jb case.0x472343.35
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp case.0x472343.35
test ecx, ecx
je 0x472620
cmp dword [ebx + 0x84], 1
je 0x472620
cmp byte [ebx + 0x81], 0
jne 0x472588
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x4725bf
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x28]
dec dword [ebx + 0x8c]
neg eax
cdq
add dword [ebx + 0x60], eax
adc dword [ebx + 0x64], edx
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x4725ee
jb 0x4725e3
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x4725ee
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb 0x472380
ja 0x472610
cmp dword [ebx + 0x60], eax
jb 0x472380
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp 0x472380
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
mov byte [ebx + 0x81], 0
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x47265e
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x28]
dec dword [ebx + 0x8c]
neg eax
cdq
add dword [ebx + 0x60], eax
adc dword [ebx + 0x64], edx
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x47268d
jb 0x472682
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x47268d
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb case.0x472343.35
ja 0x4726af
cmp dword [ebx + 0x60], eax
jb case.0x472343.35
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp case.0x472343.35
test ecx, ecx
je 0x472786
cmp dword [ebx + 0x84], 1
je 0x472786
cmp byte [ebx + 0x81], 0
jne 0x4726f0
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x472727
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x28]
inc dword [ebx + 0x8c]
cdq
add dword [ebx + 0x60], eax
adc dword [ebx + 0x64], edx
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x472754
jb 0x472749
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x472754
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb 0x472380
ja 0x472776
cmp dword [ebx + 0x60], eax
jb 0x472380
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp 0x472380
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
mov byte [ebx + 0x81], 0
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x4727c4
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x28]
inc dword [ebx + 0x8c]
cdq
add dword [ebx + 0x60], eax
adc dword [ebx + 0x64], edx
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x4727f1
jb 0x4727e6
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x4727f1
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb case.0x472343.35
ja 0x472813
cmp dword [ebx + 0x60], eax
jb case.0x472343.35
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp case.0x472343.35
test ecx, ecx
je 0x4728e5
cmp dword [ebx + 0x84], 1
je 0x4728e5
cmp byte [ebx + 0x81], 0
jne 0x472854
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
push 1
push 2
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x472896
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x4728b3
jb 0x4728a8
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x4728b3
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb 0x472380
ja 0x4728d5
cmp dword [ebx + 0x60], eax
jb 0x472380
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp 0x472380
push 1
push 2
mov ecx, ebx
mov byte [ebx + 0x81], 0
call fcn.004710a0
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x47292e
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x47294b
jb 0x472940
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x47294b
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb case.0x472343.35
ja 0x47296d
cmp dword [ebx + 0x60], eax
jb case.0x472343.35
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp case.0x472343.35
test ecx, ecx
je 0x472b10
cmp dword [ebx + 0x84], 1
je 0x472b10
cmp byte [ebx + 0x81], 0
jne 0x4729ae
mov eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
mov eax, dword [ebx + 0x64]
mov byte [ebx + 0x81], 1
mov dword [ebx + 0x6c], eax
push 0
push 0
push 0xb
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SendMessageA]
xorps xmm0, xmm0
mov dword [ebp - 8], 0
push 0xfffffffffffffff0
push dword [ebx + 4]
movups xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0x20], 0x1c
movq qword [ebp - 0x10], xmm0
mov dword [ebp - 0x1c], 7
call dword [sym.imp.USER32.dll_GetWindowLongA]
test eax, 0x200000
je 0x472a03
lea eax, [ebp - 0x20]
push eax
push 1
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_GetScrollInfo]
test eax, eax
jne 0x472a16
xorps xmm0, xmm0
mov dword [ebp - 8], 0
movups xmmword [ebp - 0x20], xmm0
movq qword [ebp - 0x10], xmm0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
mov esi, dword [ebx + 0x58]
mov edi, dword [ebx + 0x5c]
cdq
add eax, esi
mov ecx, eax
mov dword [ebx + 0x58], eax
adc edx, edi
sub ecx, esi
mov eax, edx
mov dword [ebx + 0x5c], edx
sbb eax, edi
add dword [ebx + 0x60], ecx
mov ecx, ebx
adc dword [ebx + 0x64], eax
call fcn.004737e0
mov ecx, ebx
call fcn.00473770
push 0
push 1
push 0xb
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
push 0
push dword [ebx + 4]
call esi
mov eax, dword [ebx + 0xbc]
test eax, eax
je 0x472a7d
push dword [ebx + 0xc0]
call eax
add esp, 4
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x472ab4
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x472ad1
jb 0x472ac6
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x472ad1
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb 0x472af6
ja 0x472aeb
cmp dword [ebx + 0x60], eax
jb 0x472af6
push 0
push 1
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x60]
push 1
push 0
push dword [ebx + 4]
mov dword [ebx + 0x70], eax
mov eax, dword [ebx + 0x64]
mov dword [ebx + 0x74], eax
call esi
jmp 0x472c6b
push 0
push 0
push 0xb
push dword [ebx + 4]
mov byte [ebx + 0x81], 0
call dword [sym.imp.USER32.dll_SendMessageA]
xorps xmm0, xmm0
mov dword [ebp - 8], 0
push 0xfffffffffffffff0
push dword [ebx + 4]
movups xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0x20], 0x1c
movq qword [ebp - 0x10], xmm0
mov dword [ebp - 0x1c], 7
call dword [sym.imp.USER32.dll_GetWindowLongA]
test eax, 0x200000
je 0x472b6c
lea eax, [ebp - 0x20]
push eax
push 1
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_GetScrollInfo]
test eax, eax
jne 0x472b7f
xorps xmm0, xmm0
mov dword [ebp - 8], 0
movups xmmword [ebp - 0x20], xmm0
movq qword [ebp - 0x10], xmm0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
mov esi, dword [ebx + 0x58]
mov edi, dword [ebx + 0x5c]
cdq
add eax, esi
mov ecx, eax
mov dword [ebx + 0x58], eax
adc edx, edi
sub ecx, esi
mov eax, edx
mov dword [ebx + 0x5c], edx
sbb eax, edi
add dword [ebx + 0x60], ecx
mov ecx, ebx
adc dword [ebx + 0x64], eax
call fcn.004737e0
mov ecx, ebx
call fcn.00473770
push 0
push 1
push 0xb
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
push 0
push dword [ebx + 4]
call esi
mov eax, dword [ebx + 0xbc]
test eax, eax
je 0x472be6
push dword [ebx + 0xc0]
call eax
add esp, 4
mov eax, dword [ebx + 0x34]
imul eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x38]
imul ecx, dword [ebx + 0x88]
push eax
lea eax, [ebp - 0x28]
push ecx
push eax
mov ecx, ebx
call fcn.004733d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp ecx, 0xffffffff
jle 0x472c1d
mov dword [ebx + 0x88], ecx
mov dword [ebx + 0x8c], eax
mov eax, dword [ebx + 0x64]
cmp eax, dword [ebx + 0x5c]
ja 0x472c3a
jb 0x472c2f
mov eax, dword [ebx + 0x60]
cmp eax, dword [ebx + 0x58]
jae 0x472c3a
push 0
push 0
mov ecx, ebx
call fcn.004710a0
mov eax, dword [ebx + 0x30]
imul eax, dword [ebx + 0x28]
cdq
add eax, dword [ebx + 0x58]
adc edx, dword [ebx + 0x5c]
cmp dword [ebx + 0x64], edx
jb 0x472c6b
ja 0x472c54
cmp dword [ebx + 0x60], eax
jb 0x472c6b
push 0
push 1
mov ecx, ebx
call fcn.004710a0
jmp 0x472c6b
push 0x11
call edi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, ebx
call fcn.00473770
push 1
push 0
push dword [ebx + 4]
call esi
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SetFocus]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005193a0
mov esp, ebp
pop ebp
ret 0x10