Function at 0x180012720
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x20
cmp byte [0x1800bc0b8], 0
je 0x180012768
mov ecx, dword [0x1800e3e9c]
cmp dword [0x1800e5528], ecx
cmovg ecx, dword [0x1800e5528]
test ecx, ecx
js 0x180012761
lea r9, str.update:_BlockGameInputInImgui_is_true
mov r8d, 0x10
lea rdx, str.C:UsersTOTOMAN2_source_reposMetroExodus_EE_QolsModInputInputManager.cpp
xor ecx, ecx
call fcn.180064a50
mov byte [0x1800bc0b8], 0
mov ecx, 0x1b
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x1800127ce
cmp byte [0x1800e5260], 0
jne 0x1800127d5
cmp byte [0x1800e5249], 0
mov byte [0x1800e5260], 1
je 0x1800127d5
mov ecx, dword [0x1800e3e9c]
cmp dword [0x1800e5528], ecx
mov byte [0x1800e5249], 0
cmovg ecx, dword [0x1800e5528]
test ecx, ecx
js 0x1800127d5
lea r9, str.update:_Mod_menu_opened_and_Escape_Key_pressed___closing_mod_menu
mov r8d, 0x24
lea rdx, str.C:UsersTOTOMAN2_source_reposMetroExodus_EE_QolsModInputInputManager.cpp
xor ecx, ecx
call fcn.180064a50
jmp 0x1800127d5
mov byte [0x1800e5260], 0
cmp dword [0x1800e52d0], 2
jne 0x180012807
mov ecx, Ordinal_101
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012807
cmp byte [0x1800e5269], 0
jne 0x18001280e
mov byte [0x1800e5269], 1
call fcn.180012d00
jmp 0x18001280e
mov byte [0x1800e5269], 0
cmp dword [0x1800e52d0], 2
jne 0x18001286d
mov ecx, Ordinal_101
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x18001286d
cmp byte [0x1800e5266], 0
jne 0x180012874
mov ecx, dword [0x1800e3e9c]
cmp dword [0x1800e5528], ecx
mov byte [0x1800e5266], 1
cmovg ecx, dword [0x1800e5528]
test ecx, ecx
js 0x180012874
lea r9, str.m_isDebugKey_2_Pressed_pressed
mov r8d, 0x3a
lea rdx, str.C:UsersTOTOMAN2_source_reposMetroExodus_EE_QolsModInputInputManager.cpp
xor ecx, ecx
call fcn.180064a50
jmp 0x180012874
mov byte [0x1800e5266], 0
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx ebx, ax
mov ecx, 9
shr ebx, 0xf
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
test bl, 1
je 0x1800128e0
test al, al
je 0x1800128e0
cmp byte [0x1800e5249], 1
jne 0x1800128e0
mov ecx, dword [0x1800e3e9c]
cmp dword [0x1800e5528], ecx
cmovg ecx, dword [0x1800e5528]
test ecx, ecx
js 0x1800128d9
lea r9, str.update:_user_is_in_main_menu_and_ALT__TAB_is_pressed__forcing_out_of_mod_menu_to_prevent_imgui_window_freeze
mov r8d, 0x4b
lea rdx, str.C:UsersTOTOMAN2_source_reposMetroExodus_EE_QolsModInputInputManager.cpp
xor ecx, ecx
call fcn.180064a50
mov byte [0x1800e5249], 0
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012902
cmp dword [0x1800e52d0], 2
jne 0x180012902
mov byte [0x1800e5262], 1
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr ax, 0xf
cmp byte [0x1800e5249], 0
mov byte [0x1800e5248], al
jne 0x180012b00
movzx ecx, word [0x1800e3f94]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012954
cmp byte [0x1800e5264], 0
jne 0x18001295b
mov byte [0x1800e5264], 1
mov dword [0x1800e52ac], 2
jmp 0x18001295b
mov byte [0x1800e5264], 0
movzx ecx, word [0x1800e3fa0]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012994
cmp byte [0x1800e5264], 0
jne 0x180012994
cmp byte [0x1800e5265], 0
jne 0x18001299b
mov byte [0x1800e5265], 1
mov dword [0x1800e52ac], 1
jmp 0x18001299b
mov byte [0x1800e5265], 0
movzx ecx, word [0x1800e5d58]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x1800129e3
cmp byte [0x1800e5268], 0
jne 0x1800129e3
cmp byte [0x1800e5267], 0
jne 0x1800129e3
cmp byte [0x1800e5261], 0
jne 0x1800129e3
cmp byte [0x1800e5263], 0
jne 0x1800129ea
xor ecx, ecx
mov byte [0x1800e5263], 1
call fcn.18007afd0
jmp 0x1800129ea
mov byte [0x1800e5263], 0
movzx ecx, word [0x1800e5d54]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012a35
cmp byte [0x1800e5263], 0
jne 0x180012a35
cmp byte [0x1800e5267], 0
jne 0x180012a35
cmp byte [0x1800e5261], 0
jne 0x180012a35
cmp byte [0x1800e5268], 0
jne 0x180012a3c
mov ecx, 0xd
mov byte [0x1800e5268], 1
call fcn.18007afd0
jmp 0x180012a3c
mov byte [0x1800e5268], 0
movzx ecx, word [0x1800e5d4c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012a87
cmp byte [0x1800e5263], 0
jne 0x180012a87
cmp byte [0x1800e5268], 0
jne 0x180012a87
cmp byte [0x1800e5261], 0
jne 0x180012a87
cmp byte [0x1800e5267], 0
jne 0x180012a8e
mov ecx, 0x19
mov byte [0x1800e5267], 1
call fcn.18007afd0
jmp 0x180012a8e
mov byte [0x1800e5267], 0
movzx ecx, word [0x1800e5d60]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x180012ae8
cmp byte [0x1800e5263], 0
jne 0x180012ae8
cmp byte [0x1800e5268], 0
jne 0x180012ae8
cmp byte [0x1800e5267], 0
jne 0x180012ae8
cmp byte [0x1800e5261], 0
jne 0x180012aef
mov ecx, 3
mov byte [0x1800e5261], 1
call fcn.18007afd0
mov ecx, 0x26
add rsp, 0x20
pop rbx
jmp qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov byte [0x1800e5261], 0
mov ecx, 0x26
add rsp, 0x20
pop rbx
jmp qword [sym.imp.USER32.dll_GetAsyncKeyState]
add rsp, 0x20
pop rbx
ret