Function at 0x418b20
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45af58
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x492984]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x10], eax
mov dword [eax], vtable.CArray_struct_MacroEntry__struct_MacroEntry__.0
mov dword [eax + 4], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
cmp dword [0x494548], 0
mov dword [ebp - 4], 0
jne 0x418fa8
mov esi, dword [sym.imp.byondcore.dll_public:_struct_DMString____thiscall_DMString::operator_char_const__]
mov ecx, 0x49615c
push str.None
mov dword [0x494548], 1
call esi
push str.Northwest
mov ecx, 0x495df0
call esi
push str.North
mov ecx, 0x495df8
call esi
push str.Northeast
mov ecx, 0x495de4
call esi
push str.West
mov ecx, 0x495df4
call esi
push str.Center
mov ecx, 0x495d90
call esi
push str.East
mov ecx, 0x495dfc
call esi
push str.Southwest
mov ecx, 0x495dec
call esi
push str.South
mov ecx, 0x495e00
call esi
push str.Southeast
mov ecx, 0x495de8
call esi
push str.Return
mov ecx, 0x495d94
call esi
push str.Escape
mov ecx, 0x495dcc
call esi
push 0x4669fc
mov ecx, 0x495d84
call esi
push str.Space
mov ecx, 0x495de0
call esi
push str.Back
mov ecx, 0x495d80
call esi
push str.Delete
mov ecx, 0x495e18
call esi
push str.Pause
mov ecx, 0x495dac
call esi
push str.Select
mov ecx, 0x495e04
call esi
push str.Execute
mov ecx, 0x495e0c
call esi
push str.Snapshot
mov ecx, 0x495e10
call esi
push str.Insert
mov ecx, 0x495e14
call esi
push 0x466a44
mov ecx, 0x495e1c
call esi
push str.LWin
mov ecx, 0x495ecc
call esi
push str.RWin
mov ecx, 0x495ed0
call esi
push str.Apps
mov ecx, 0x495ed4
call esi
push str.Numpad0
mov ecx, 0x495ee0
call esi
push str.Numpad1
mov ecx, 0x495ee4
call esi
push str.Numpad2
mov ecx, 0x495ee8
call esi
push str.Numpad3
mov ecx, 0x495eec
call esi
push str.Numpad4
mov ecx, 0x495ef0
call esi
push str.Numpad5
mov ecx, 0x495ef4
call esi
push str.Numpad6
mov ecx, 0x495ef8
call esi
push str.Numpad7
mov ecx, 0x495efc
call esi
push str.Numpad8
mov ecx, 0x495f00
call esi
push str.Numpad9
mov ecx, 0x495f04
call esi
push str.Multiply
mov ecx, 0x495f08
call esi
push 0x466ac0
mov ecx, 0x495f0c
call esi
push str.Separator
mov ecx, 0x495f10
call esi
push str.Subtract
mov ecx, 0x495f14
call esi
push str.Decimal
mov ecx, 0x495f18
call esi
push str.Divide
mov ecx, 0x495f1c
call esi
push 0x466aec
mov ecx, 0x495f20
call esi
push 0x466af0
mov ecx, 0x495f24
call esi
push 0x466af4
mov ecx, 0x495f28
call esi
push 0x466af8
mov ecx, 0x495f2c
call esi
push 0x466afc
mov ecx, 0x495f30
call esi
push 0x466b00
mov ecx, 0x495f34
call esi
push 0x466b04
mov ecx, 0x495f38
call esi
push 0x466b08
mov ecx, 0x495f3c
call esi
push 0x466b0c
mov ecx, 0x495f40
call esi
push 0x466b10
mov ecx, 0x495f44
call esi
push 0x466b14
mov ecx, 0x495f48
call esi
push 0x466b18
mov ecx, 0x495f4c
call esi
push 0x466b1c
mov ecx, 0x495f50
call esi
push 0x466b20
mov ecx, 0x495f54
call esi
push 0x466b24
mov ecx, 0x495f58
call esi
push 0x466b28
mov ecx, 0x495f5c
call esi
push 0x466b2c
mov ecx, 0x495f60
call esi
push 0x466b30
mov ecx, 0x495f64
call esi
push 0x466b34
mov ecx, 0x495f68
call esi
push 0x466b38
mov ecx, 0x495f6c
call esi
push 0x466b3c
mov ecx, 0x495f70
call esi
push 0x466b40
mov ecx, 0x495f74
call esi
push 0x466b44
mov ecx, 0x495f78
call esi
push 0x466b48
mov ecx, 0x495f7c
call esi
push str.Attn
mov ecx, 0x496138
call esi
push str.CrSel
mov ecx, 0x49613c
call esi
push str.ExSel
mov ecx, 0x496140
call esi
push str.ErEOF
mov ecx, 0x496144
call esi
push str.Play
mov ecx, 0x496148
call esi
push str.Zoom
mov ecx, 0x49614c
call esi
push 0x466b7c
mov ecx, 0x496154
call esi
push str.OEMClear
mov ecx, 0x496158
call esi
push str.VolumeMute
mov ecx, 0x496014
call esi
push str.VolumeDown
mov ecx, 0x496018
call esi
push str.VolumeUp
mov ecx, 0x49601c
call esi
push str.MediaNext
mov ecx, 0x496020
call esi
push str.MediaPrev
mov ecx, 0x496024
call esi
push str.MediaStop
mov ecx, 0x496028
call esi
push str.MediaPlayPause
mov ecx, 0x49602c
call esi
push 0x1810
push 0
push 0x494550
call sub.MSVCR120.dll_memset
add esp, 0xc
xor esi, esi
push esi
call dword [sym.imp.USER32.dll_VkKeyScanW]
movzx ebx, ax
cmp bx, 0xffff
je 0x418f9c
movzx edi, bl
shl edi, 2
lea ecx, [edi + 0x495d60]
call dword [sym.imp.byondcore.dll_public:_bool___thiscall_DMString::IsEmpty_void_const]
test al, al
je 0x418f9c
shr ebx, 8
and ebx, 3
add ebx, edi
mov dword [ebx*4 + 0x494550], esi
inc esi
cmp esi, 0x100
jb 0x418f67
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret