Function at 0x450180
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
cmp byte [0x700d68], 0
lea eax, [ecx + 0x2b0]
mov dword [esp + 4], eax
lea eax, [ecx + 0x1b58c]
push ebx
mov dword [esp + 0xc], eax
lea ebx, [ecx + 0x210]
lea eax, [ecx + 0x15c]
push esi
mov dword [esp + 0x14], eax
lea esi, [ecx + 0x1df08]
lea eax, [ecx + 0x2dc]
push edi
lea edi, [ecx + 0x7a0]
mov dword [esp + 0xc], eax
jne 0x4502f6
mov ecx, ebx
call fcn.00513870
mov ecx, esi
fstp dword [esp + 0x1c]
call fcn.00456ae0
sub esp, 0x10
mov ecx, edi
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x2c]
mov dword [esp + 8], 0x42c80000
movss dword [esp + 4], xmm0
mov dword [esp], 0x41f00000
call fcn.004e9f80
mov ecx, dword [0x7008ac]
call fcn.004ed480
mov ecx, dword [esp + 0xc]
call fcn.0045aaf0
mov ecx, dword [esp + 0x10]
call fcn.004bf050
mov ecx, esi
call fcn.00457b70
mov ecx, edi
call fcn.00516fd0
mov ecx, edi
call fcn.005160e0
lea eax, [esp + 0x1c]
mov ecx, ebx
push eax
lea eax, [esp + 0x24]
push eax
call fcn.005138c0
push dword [esp + 0x1c]
mov ecx, edi
push dword [esp + 0x24]
call fcn.00516fb0
mov ecx, esi
call fcn.00457db0
mov ecx, esi
call fcn.00457e30
mov ecx, esi
call fcn.00457dd0
mov ecx, esi
call fcn.005273a0
mov ecx, esi
call fcn.00457ae0
mov ecx, esi
call fcn.00457ec0
mov ecx, dword [esp + 0xc]
call fcn.0045ae50
mov ecx, esi
call fcn.00457ef0
mov ecx, esi
call fcn.00457df0
mov ecx, esi
call fcn.00457b20
mov ecx, esi
call fcn.00457e10
mov ecx, esi
call fcn.00527770
mov ecx, dword [esp + 0x10]
call fcn.004bec10
mov ecx, dword [esp + 0x14]
call fcn.0046eea0
mov ecx, dword [esp + 0x18]
call fcn.00538df0
mov ecx, esi
call fcn.005273a0
mov ecx, esi
call fcn.00457b30
mov ecx, esi
call fcn.00527770
mov ecx, esi
call fcn.00457e50
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.004d16c0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x24], eax
call fcn.0045aaf0
call fcn.004d16c0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
call fcn.004bf050
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x2c], eax
call fcn.00457b70
call fcn.004d16c0
mov ecx, edi
mov dword [esp + 0x30], eax
call fcn.00516fd0
mov ecx, edi
call fcn.005160e0
mov ecx, ebx
call fcn.00513870
mov ecx, esi
fstp dword [esp + 0x20]
call fcn.00456ae0
sub esp, 0x10
mov ecx, edi
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x30]
mov dword [esp + 8], 0x42c80000
movss dword [esp + 4], xmm0
mov dword [esp], 0x41f00000
call fcn.004e9f80
call fcn.004d16c0
mov ecx, dword [0x7008ac]
mov dword [esp + 0x34], eax
call fcn.004ed480
call fcn.004d16c0
mov dword [esp + 0x38], eax
mov ecx, ebx
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.005138c0
push dword [esp + 0x20]
mov ecx, edi
push dword [esp + 0x20]
call fcn.00516fb0
mov ecx, esi
call fcn.00457db0
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x20], eax
call fcn.00457e30
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x1c], eax
call fcn.00457dd0
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x3c], eax
call fcn.005273a0
mov ecx, esi
call fcn.00457ae0
mov ecx, esi
call fcn.00457ec0
call fcn.004d16c0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x40], eax
call fcn.0045ae50
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0xc], eax
call fcn.00457ef0
mov ecx, esi
call fcn.00457df0
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x44], eax
call fcn.00457e10
call fcn.004d16c0
mov dword [esp + 0x48], eax
mov ecx, esi
call fcn.00527770
mov ecx, dword [esp + 0x10]
call fcn.004bec10
call fcn.004d16c0
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
call fcn.0046eea0
call fcn.004d16c0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
call fcn.00538df0
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.005273a0
mov ecx, esi
call fcn.00457b30
mov ecx, esi
call fcn.00527770
call fcn.004d16c0
mov ecx, esi
mov dword [esp + 0x4c], eax
call fcn.00457e50
call fcn.004d16c0
mov ebx, eax
call fcn.004d16c0
push 0x5a
mov esi, eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x4504ce
mov ecx, dword [0x7008c8]
push 3
push 8
call fcn.004e97f0
mov edi, dword [esp + 0x24]
sub esi, edi
cmp esi, 3
jb 0x4506f1
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x736d2c]
cmp eax, dword [ecx + 0x20]
jg 0x4506f8
call fcn.004d16c0
push eax
push esi
push str.GR.Total__d__Time__d__n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x38]
sub eax, edi
push eax
push str.GR.DFM__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x48]
add esp, 0x1c
sub eax, dword [esp + 0x28]
push eax
push str.GR.EFT.UP__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x3c]
add esp, 0xc
sub eax, dword [esp + 0x2c]
push eax
push str.GR.SHW__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x40]
add esp, 0xc
sub eax, dword [esp + 0x30]
push eax
push str.GR.STT__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x44]
add esp, 0xc
sub eax, dword [esp + 0x34]
push eax
push str.GR.CLL__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x2c]
add esp, 0xc
sub eax, dword [esp + 0x38]
push eax
push str.GR.BG.SKY__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x28]
add esp, 0xc
sub eax, dword [esp + 0x20]
push eax
push str.GR.BG.LEN__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x48]
add esp, 0xc
sub eax, dword [esp + 0x1c]
push eax
push str.GR.BG.CLD__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x4c]
add esp, 0xc
sub eax, dword [esp + 0x3c]
push eax
push str.GR.BG.MAIN__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x18]
add esp, 0xc
sub eax, dword [esp + 0x40]
push eax
push str.GR.CHR__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x50]
add esp, 0xc
sub eax, dword [esp + 0xc]
push eax
push str.GR.BG.WTR__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x54]
add esp, 0xc
sub eax, dword [esp + 0x44]
push eax
push str.GR.BG.EFT__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x1c]
add esp, 0xc
sub eax, dword [esp + 0x48]
push eax
push str.GR.EFT__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x20]
add esp, 0xc
sub eax, dword [esp + 0x10]
push eax
push str.GR.ITM__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x24]
add esp, 0xc
sub eax, dword [esp + 0x14]
push eax
push str.GR.FLY__d_n
push dword [0x736d30]
call fcn.0044c9a0
mov eax, dword [esp + 0x58]
add esp, 0xc
sub eax, dword [esp + 0x18]
push eax
push str.GR.BG.BLK__d_n
push dword [0x736d30]
call fcn.0044c9a0
sub ebx, dword [esp + 0x58]
add esp, 0xc
push ebx
push str.GR.BG.LEN__d_n
push dword [0x736d30]
call fcn.0044c9a0
add esp, 0xc
push dword [0x736d30]
call fcn.005cd7fa
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x736d2c
call fcn.0057c130
add esp, 4
cmp dword [0x736d2c], 0xffffffff
jne 0x4504f6
push 0x65cae8
push str.perf_game_render.txt
call fcn.005c20ab
push 0x736d2c
mov dword [0x736d30], eax
call fcn.0057c0df
add esp, 0xc
jmp 0x4504f6