Function at 0x678e4d60
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push ebx
push ebp
mov ebp, ecx
mov eax, dword [ebp + 0x9c]
test eax, eax
je case.0x678e4f18.0
mov eax, dword [ebp + 0x48]
test eax, eax
jl case.0x678e4f18.0
mov ebx, dword [esp + 0x10]
cmp ebx, 9
je case.0x678e4f18.0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.0x678e4da8.7
lea eax, [ebx - 3]
cmp eax, 0x17
ja case.0x678e4da8.7
xor ecx, ecx
mov cl, byte [eax + 0x678e4fd0]
jmp dword [ecx*4 + 0x678e4fbc]
cmp dword [ebp + 0x4c], 0xffffffff
je case.0x678e4f18.0
mov ecx, ebp
call sym.MfcHlpr520.dll_protected:_void___thiscall_CMHPHexEdit::OnEditCopy_void_
pop ebp
pop ebx
pop ecx
ret 0xc
mov ecx, ebp
call sym.MfcHlpr520.dll_protected:_void___thiscall_CMHPHexEdit::OnEditPaste_void_
pop ebp
pop ebx
pop ecx
ret 0xc
cmp dword [ebp + 0x4c], 0xffffffff
je case.0x678e4f18.0
mov ecx, ebp
call sym.MfcHlpr520.dll_protected:_void___thiscall_CMHPHexEdit::OnEditCut_void_
pop ebp
pop ebx
pop ecx
ret 0xc
mov ecx, ebp
call sym.MfcHlpr520.dll_public:_void___thiscall_CMHPShellSettings::destructor_void_
pop ebp
pop ebx
pop ecx
ret 0xc
mov ecx, ebp
call sym.MfcHlpr520.dll_public:_int___thiscall_CMHPHexEdit::IsReadOnly_void_const
test eax, eax
jne case.0x678e4f18.0
cmp ebx, 8
jne 0x678e4e6f
mov al, byte [ebp + 0x70]
test al, al
je case.0x678e4f18.0
cmp dword [ebp + 0x4c], 0xffffffff
je 0x678e4e29
mov ecx, ebp
call sym.MfcHlpr520.dll_protected:_void___thiscall_CMHPHexEdit::OnEditClear_void_
pop ebp
pop ebx
pop ecx
ret 0xc
mov eax, dword [ebp + 0x48]
test eax, eax
jle 0x678e4e7c
dec eax
mov ecx, ebp
mov dword [ebp + 0x48], eax
lea edx, [eax + 1]
push edx
push eax
call sym.MfcHlpr520.dll_private:_void___thiscall_CMHPHexEdit::SelDelete_int__int_
mov eax, dword [ebp + 0x48]
mov ecx, ebp
push eax
call sym.MfcHlpr520.dll_private:_void___thiscall_CMHPHexEdit::RepositionCaret_int_
mov ecx, dword [ebp + 0x20]
push 0x105
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_RedrawWindow]
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0xc4]
pop ebp
pop ebx
pop ecx
ret 0xc
mov ecx, dword [ebp + 0x48]
mov eax, dword [ebp + 0x8c]
cmp ecx, eax
jb 0x678e4e8a
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
pop ebp
pop ebx
pop ecx
ret 0xc
mov eax, dword [ebp + 0xa0]
test eax, eax
je 0x678e4efe
mov eax, dword [ebp + 0x40]
cmp ecx, eax
jl 0x678e4efe
push esi
push edi
lea ebx, [eax + 1]
push 1
push ebx
call dword [sym.imp.MSVCRT.dll_calloc]
mov ecx, dword [ebp + 0x40]
mov esi, dword [ebp + 0x9c]
mov dword [esp + 0x18], eax
mov edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0x9c]
push ecx
call dword [sym.imp.MSVCRT.dll_free]
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, ebp
mov dword [ebp + 0x9c], edx
push 0xffffffffffffffff
push 0xffffffffffffffff
call sym.MfcHlpr520.dll_public:_void___thiscall_CMHPHexEdit::SetSel_int__int_
mov dword [ebp + 0x40], ebx
mov ebx, dword [esp + 0x18]
pop edi
mov dword [ebp + 0x88], 1
pop esi
push 0xffffffffffffffff
push 0xffffffffffffffff
mov ecx, ebp
call sym.MfcHlpr520.dll_public:_void___thiscall_CMHPHexEdit::SetSel_int__int_
mov eax, dword [ebp + 0xa0]
cmp eax, 3
ja case.default.0x678e4f18
jmp dword [eax*4 + 0x678e4fe8]
push ebx
call dword [sym.imp.MSVCRT.dll_isxdigit]
add esp, 4
test eax, eax
je case.default.0x678e4f18
cmp ebx, 0x61
jb 0x678e4f37
lea eax, [ebx - 0x57]
jmp 0x678e4f49
cmp ebx, 0x41
jb 0x678e4f41
lea eax, [ebx - 0x37]
jmp 0x678e4f49
cmp ebx, 0x30
jb case.default.0x678e4f18
lea eax, [ebx - 0x30]
cmp eax, 0x10
jae case.default.0x678e4f18
mov ecx, dword [ebp + 0xa0]
mov edx, dword [ebp + 0x48]
cmp ecx, 2
mov ecx, dword [ebp + 0x9c]
jne 0x678e4f72
add ecx, edx
shl al, 4
mov dl, byte [ecx]
and dl, 0xf
or dl, al
mov byte [ecx], dl
jmp 0x678e4f8b
add ecx, edx
mov dl, byte [ecx]
and dl, 0xf0
or dl, al
mov byte [ecx], dl
jmp 0x678e4f8b
mov ecx, dword [ebp + 0x9c]
mov edx, dword [ebp + 0x48]
mov byte [ecx + edx], bl
push 0
push 1
mov ecx, ebp
call sym.MfcHlpr520.dll_private:_void___thiscall_CMHPHexEdit::Move_int__int_
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0xc4]
mov ecx, dword [ebp + 0x20]
push 0x105
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_RedrawWindow]
pop ebp
pop ebx
pop ecx
ret 0xc