Function at 0x402820
Capabilities:
Hash data using fnv
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49cb7d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x164
push ebx
xor ebx, ebx
xor eax, eax
push esi
push edi
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x14], eax
nop dword [eax + eax]
push eax
call fcn.00402660
mov edx, eax
add esp, 4
mov dword [ebp - 0x18], edx
cmp edx, 0xffffffff
je 0x402a4c
push edx
call fcn.0046bfd0
add esp, 4
mov esi, eax
push 1
push esi
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
mov edi, eax
mov dword [ebp - 0x1c], edi
test edi, edi
jle 0x40289e
push 1
push 0
push 0
lea ecx, [ebp - 0x170]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ostream_char__struct_std::char_traits_char__::constructor_class_std::basic_streambuf_char__struct_std::char_traits_char_____bool_]
or ebx, 1
mov dword [ebp - 0x10], ebx
jmp 0x402900
xor ecx, ecx
mov eax, ecx
inc ecx
cmp byte [eax + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp], 0
jne 0x4028a0
test ecx, ecx
je 0x4028cb
mov al, byte [ecx + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp]
cmp al, 0x5c
je 0x4029d0
cmp al, 0x2f
je 0x4029d0
sub ecx, 1
jne 0x4028b0
mov eax, str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp
push 0x1e
push eax
push 4
push 1
lea ecx, [ebp - 0x120]
call fcn.00418ef0
add eax, 0x30
mov dword [ebp - 4], 1
push str.Check_failed:_vk___0
or ebx, 2
push eax
mov dword [ebp - 0x10], ebx
call fcn.00401900
add esp, 8
test bl, 2
je 0x402916
and ebx, 0xfffffffd
lea ecx, [ebp - 0x120]
mov dword [ebp - 0x10], ebx
call fcn.00419120
mov dword [ebp - 4], 0xffffffff
test bl, 1
je 0x402934
and ebx, 0xfffffffe
lea ecx, [ebp - 0x170]
mov dword [ebp - 0x10], ebx
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ostream_char__struct_std::char_traits_char__::vbase_dtor_void_]
push edi
push 0x4001
push dword [ebp - 0x14]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_RegisterHotKey]
test eax, eax
jne 0x402a49
mov eax, dword [ebp - 0x18]
push eax
call fcn.00424260
add esp, 4
shl esi, 0x10
lea eax, [ebp - 0x48]
push 0xa
push eax
push esi
call dword [sym.imp.USER32.dll_GetKeyNameTextA]
xor ecx, ecx
test eax, eax
jle 0x4029e3
mov dword [ebp - 0x34], str.RegisterHotkey_failed._Key_name
mov dword [ebp - 0x30], 0x22
nop
mov eax, ecx
inc ecx
cmp byte [eax + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp], 0
jne 0x402980
test ecx, ecx
je 0x4029a3
mov al, byte [ecx + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp]
cmp al, 0x5c
je 0x4029db
cmp al, 0x2f
je 0x4029db
sub ecx, 1
jne 0x402990
mov eax, str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp
lea ecx, [ebp - 0x48]
push ecx
lea ecx, [ebp - 0x34]
push ecx
push 0x25
push eax
push 2
lea ecx, [ebp - 0x120]
call fcn.004016d0
lea ecx, [ebp - 0x120]
call fcn.00419120
jmp 0x402b7f
lea eax, [ecx + 0x4a07b9]
jmp 0x4028d0
lea eax, [ecx + 0x4a07b9]
jmp 0x4029a8
mov dword [ebp - 0x3c], str.RegisterHotkey_failed._Key_num
mov dword [ebp - 0x38], 0x21
mov eax, ecx
inc ecx
cmp byte [eax + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp], 0
jne 0x4029f1
test ecx, ecx
je 0x402a14
mov al, byte [ecx + str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp]
cmp al, 0x5c
je 0x402a41
cmp al, 0x2f
je 0x402a41
sub ecx, 1
jne 0x402a01
mov eax, str.C:ProjectsRA2YurisRevengeTrainer_src_binmain.cpp
lea ecx, [ebp - 0x1c]
push ecx
lea ecx, [ebp - 0x3c]
push ecx
push 0x27
push eax
push 2
lea ecx, [ebp - 0x120]
call fcn.004012b0
lea ecx, [ebp - 0x120]
call fcn.00419120
jmp 0x402b7f
lea eax, [ecx + 0x4a07b9]
jmp 0x402a19
mov edx, dword [ebp - 0x18]
mov eax, edx
mov dword [ebp - 0x1c], edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
lea eax, [ebp - 0x1c]
imul esi, ecx, 0x1000193
mov ecx, 0x4ff790
push esi
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00401b80
cmp dword [ebp - 0x20], 0
jne 0x402b7f
cmp dword [0x4ff798], 0xfffffff
je 0x402ba0
mov dword [ebp - 0x2c], 0x4ff794
push 0x10
mov dword [ebp - 4], 2
mov dword [ebp - 0x28], 0
call fcn.0049b32d
mov edi, eax
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x28], edi
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x14]
mov dword [edi + 0xc], eax
mov ecx, dword [0x4ff798]
mov eax, dword [0x4ff7ac]
inc ecx
mov dword [ebp - 4], 3
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x4a0960]
cvtpd2ps xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4a0960]
cvtpd2ps xmm0, xmm0
divss xmm1, xmm0
comiss xmm1, dword [0x4ff790]
jbe 0x402b61
mov ecx, 0x4ff790
call fcn.00403150
push esi
lea eax, [edi + 8]
mov ecx, 0x4ff790
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00401b80
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], eax
jmp 0x402b64
mov ecx, dword [ebp - 0x24]
push edi
push ecx
push esi
mov ecx, 0x4ff790
mov dword [ebp - 0x28], 0
call fcn.004030f0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, 0x2b
jl 0x402850
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push str.unordered_map_set_too_long
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const__
int3