Function at 0x4caa40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56b96b
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
mov eax, dword [0x661850]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x20], ecx
push str.Mon_Aug_10_09:17:16_2015
push 0x685
push str.CMyHero::UpdateMove
push str.GameProcessMyHero.cpp
lea ecx, [ebp - 0xd]
call fcn.004024e0
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
cmp ecx, 0x15
je 0x4caaf8
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x190]
cmp eax, 0x16
je 0x4caaf8
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x190]
cmp edx, 0x1e
je 0x4caaf8
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
cmp ecx, 0x1f
je 0x4caaf8
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x190]
cmp eax, 0x17
je 0x4caaf8
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x190]
cmp edx, 5
je 0x4caaf8
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
cmp ecx, 0x21
jne 0x4cb335
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x198], dx
movzx ecx, byte [ebp + 8]
test ecx, ecx
je 0x4cac96
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x190]
cmp eax, 5
jne 0x4cab85
mov dword [0x7d27e0], 0
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x1de]
add edx, 2
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x1de], dl
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x1de]
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x1df]
cmp edx, ecx
jl 0x4cab83
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x14]
add edx, 1
push edx
mov ecx, dword [ebp - 0x20]
call fcn.00452390
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
mov dl, byte [ecx + 0x1df]
mov byte [eax + 0x1de], dl
jmp 0x4cac00
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
cmp ecx, 0x17
je 0x4caba3
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x190]
cmp eax, 0x21
jne 0x4cabde
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
add eax, 2
push eax
mov ecx, dword [ebp - 0x20]
call fcn.00452390
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov ecx, dword [ebp - 0x20]
cmp eax, dword [ecx + 0x150]
jb 0x4cabdc
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 0x150]
push eax
mov ecx, dword [ebp - 0x20]
call fcn.00452390
jmp 0x4cac00
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
add ecx, 1
push ecx
mov ecx, dword [ebp - 0x20]
call fcn.00452390
mov ecx, dword [ebp - 0x20]
call fcn.0047e340
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x190]
cmp eax, 5
jne 0x4cac55
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x1de]
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x1df]
mov eax, dword [ebp - 0x20]
movzx eax, byte [eax + 0x2a8]
sub ecx, eax
cmp edx, ecx
jl 0x4cac53
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2a9]
test edx, edx
jne 0x4cac53
mov ecx, dword [ebp - 0x20]
call fcn.00454730
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x2a9], 1
jmp 0x4cac96
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2a8]
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + 0x150]
sub ecx, edx
cmp eax, ecx
jb 0x4cac96
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x2a9]
test eax, eax
jne 0x4cac96
mov ecx, dword [ebp - 0x20]
call fcn.00454730
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x2a9], 1
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov edx, dword [ebp - 0x20]
cmp eax, dword [edx + 0x150]
jb 0x4cb23d
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x150]
sub ecx, 1
push ecx
mov ecx, dword [ebp - 0x20]
call fcn.00452390
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x442c], 0
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x24]
sub edx, 5
mov dword [ebp - 0x24], edx
cmp dword [ebp - 0x24], 0x1c
ja case.0x4cacf6.1
mov eax, dword [ebp - 0x24]
movzx ecx, byte [eax + 0x4cb370]
jmp dword [ecx*4 + 0x4cb35c]
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x440c]
test eax, eax
je 0x4cadc0
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x2a9], 0
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x440c], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x1dc], 0
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1ae], cx
xor eax, eax
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1b0], ax
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1b2], dx
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1b4], cx
mov ecx, dword [ebp - 0x20]
call fcn.004c8550
movzx eax, al
test eax, eax
jne 0x4cad74
mov ecx, dword [ebp - 0x20]
call fcn.004c8620
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2f20]
test edx, edx
je 0x4cad9e
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 7
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
jmp 0x4cadb8
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
mov ecx, dword [ebp - 0x20]
call fcn.0045dd30
jmp case.0x4cacf6.1
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x440c]
test ecx, ecx
je 0x4cae94
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x2a9], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x440c], 0
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x1dc], 0
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1ae], dx
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1b0], cx
xor eax, eax
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1b2], ax
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1b4], dx
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x1de], 0
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x1df], 0
mov ecx, dword [ebp - 0x20]
call fcn.004c8550
movzx eax, al
test eax, eax
jne 0x4cae50
mov ecx, dword [ebp - 0x20]
call fcn.004c8620
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2f20]
test edx, edx
je 0x4cae7a
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 7
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
jmp 0x4cae94
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
jmp case.0x4cacf6.1
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x440d]
test ecx, ecx
jne 0x4cb0b8
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x2a9], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x1dc], 0
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1ae], cx
xor eax, eax
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1b0], ax
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1b2], dx
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1b4], cx
mov ecx, dword [ebp - 0x20]
call fcn.004c8550
movzx eax, al
test eax, eax
jne 0x4caf06
mov ecx, dword [ebp - 0x20]
call fcn.004c8620
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2f48]
test edx, edx
jne 0x4caf98
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x190]
cmp ecx, 0x15
jne 0x4caf6d
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x2f20]
test eax, eax
je 0x4caf51
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x191]
push edx
push 7
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x20]
mov eax, dword [edx + 0x24]
call eax
jmp 0x4caf6b
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x191]
push edx
push 0
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x20]
mov eax, dword [edx + 0x24]
call eax
jmp 0x4caf96
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x190]
cmp edx, 0x16
jne 0x4caf96
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
jmp 0x4cafb2
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0x1d
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x440c], 0
mov byte [ebp - 0xe], 0
push 2
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
shr ecx, 8
and ecx, 0xff
movzx edx, cl
test edx, edx
je 0x4cb01e
mov eax, dword [0x7ada48]
push eax
mov ecx, dword [0x7ada44]
push ecx
mov ecx, 0x6eeef8
call fcn.00498df0
movzx edx, al
test edx, edx
jne 0x4cb01c
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x442c], 1
mov ecx, dword [0x7ada48]
push ecx
mov edx, dword [0x7ada44]
push edx
mov ecx, dword [ebp - 0x20]
call fcn.004cc990
mov byte [ebp - 0xe], al
jmp 0x4cb072
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 8
and eax, 0xff
movzx ecx, al
test ecx, ecx
je 0x4cb072
mov edx, dword [0x7ada48]
push edx
mov eax, dword [0x7ada44]
push eax
mov ecx, 0x6eeef8
call fcn.00498df0
movzx ecx, al
test ecx, ecx
jne 0x4cb072
push 0
push 0
push 0xffffffffffffffff
mov edx, dword [0x7ada48]
push edx
mov eax, dword [0x7ada44]
push eax
mov ecx, dword [ebp - 0x20]
call fcn.004cbb90
mov byte [ebp - 0xe], al
movzx ecx, byte [ebp - 0xe]
test ecx, ecx
jne 0x4cb0b8
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x442c], 1
mov ecx, dword [ebp - 0x20]
call fcn.004ce8e0
movzx eax, byte [0x7d62b1]
test eax, eax
je 0x4cb0ae
movzx ecx, byte [0x7d62b2]
test ecx, ecx
je 0x4cb0ae
mov ecx, 0x7d27e8
call fcn.00444e40
jmp 0x4cb0b8
mov ecx, 0x7d27e8
call fcn.00445de0
jmp case.0x4cacf6.1
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x440d]
test eax, eax
jne case.0x4cacf6.1
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x2a9], 0
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x440c], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x1dc], 0
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1ae], cx
xor eax, eax
mov ecx, dword [ebp - 0x20]
mov word [ecx + 0x1b0], ax
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [eax + 0x1b2], dx
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov word [edx + 0x1b4], cx
mov ecx, dword [ebp - 0x20]
call fcn.004c8550
movzx eax, al
test eax, eax
jne 0x4cb134
mov ecx, dword [ebp - 0x20]
call fcn.004c8620
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x2f48]
test edx, edx
jne 0x4cb15e
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
jmp 0x4cb178
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x191]
push ecx
push 0x1d
mov edx, dword [ebp - 0x20]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + 0x24]
call edx
mov byte [ebp - 0xf], 0
push 2
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 8
and eax, 0xff
movzx ecx, al
test ecx, ecx
je 0x4cb1b8
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x442c], 1
mov eax, dword [0x7ada48]
push eax
mov ecx, dword [0x7ada44]
push ecx
mov ecx, dword [ebp - 0x20]
call fcn.004cc990
mov byte [ebp - 0xf], al
jmp 0x4cb1f2
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
shr edx, 8
and edx, 0xff
movzx eax, dl
test eax, eax
je 0x4cb1f2
push 0
push 0
push 0xffffffffffffffff
mov ecx, dword [0x7ada48]
push ecx
mov edx, dword [0x7ada44]
push edx
mov ecx, dword [ebp - 0x20]
call fcn.004cbb90
mov byte [ebp - 0xf], al
movzx eax, byte [ebp - 0xf]
test eax, eax
jne case.0x4cacf6.1
mov ecx, dword [ebp - 0x20]
mov byte [ecx + 0x442c], 1
mov ecx, dword [ebp - 0x20]
call fcn.004ce8e0
movzx edx, byte [0x7d62b1]
test edx, edx
je 0x4cb22e
movzx eax, byte [0x7d62b2]
test eax, eax
je 0x4cb22e
mov ecx, 0x7d27e8
call fcn.00444e40
jmp case.0x4cacf6.1
mov ecx, 0x7d27e8
call fcn.00445de0
jmp case.0x4cb263.1
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x190]
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x28]
sub eax, 5
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0x1a
ja case.0x4cb263.1
mov ecx, dword [ebp - 0x28]
movzx edx, byte [ecx + 0x4cb39c]
jmp dword [edx*4 + 0x4cb390]
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x1dc]
push ecx
mov ecx, dword [ebp - 0x20]
call fcn.004523e0
mov edx, dword [ebp - 0x20]
sub eax, dword [edx + 0x14c]
push eax
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x192]
push ecx
mov edx, dword [ebp - 0x20]
mov ecx, dword [edx + 0x4428]
call fcn.004bbd60
jmp case.0x4cb263.1
mov eax, dword [ebp - 0x20]
movzx ecx, byte [eax + 0x1dc]
push ecx
mov edx, dword [ebp - 0x20]
movzx eax, byte [edx + 0x1de]
push eax
mov ecx, dword [ebp - 0x20]
movzx edx, byte [ecx + 0x192]
push edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x4428]
call fcn.004bbd60
mov ecx, dword [ebp - 0x20]
cmp dword [ecx + 0x4408], 0x5dc
jbe 0x4cb2f7
mov edx, dword [ebp - 0x20]
mov dword [edx + 0x4408], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x440d], 0
mov ecx, dword [ebp - 0x20]
cmp dword [ecx + 0x2f24], 0x3e8
jbe 0x4cb31d
mov edx, dword [ebp - 0x20]
mov dword [edx + 0x2f24], 0
mov eax, dword [ebp - 0x20]
mov byte [eax + 0x2f20], 0
mov byte [ebp - 0x19], 1
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd]
call fcn.00402620
mov al, byte [ebp - 0x19]
jmp 0x4cb34b
mov byte [ebp - 0x1a], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd]
call fcn.00402620
mov al, byte [ebp - 0x1a]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret 8