Function at 0x46f020
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
cmp byte [0x6f4a9c], 0
push ebx
push esi
push edi
mov esi, ecx
jne 0x46f196
lea ecx, [esi + 0x210]
call fcn.00566970
lea ecx, [esi + 0x1f3a8]
fstp dword [esp + 0x10]
call fcn.00475950
sub esp, 0x10
lea ecx, [esi + 0x79c]
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x20]
mov dword [esp + 8], 0x42c80000
movss dword [esp + 4], xmm0
mov dword [esp], 0x41f00000
call fcn.00542250
mov ecx, dword [0x6f4498]
call fcn.00545d00
lea ecx, [esi + 0x2d8]
call fcn.004797b0
mov ecx, esi
lea ecx, [ecx + 0x2b0]
call fcn.0051ae30
mov ecx, esi
lea ecx, [ecx + 0x1f3a8]
call fcn.004766f0
lea ecx, [esi + 0x79c]
call fcn.00569cd0
lea ecx, [esi + 0x79c]
call fcn.00568e70
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esi + 0x210]
call fcn.005669d0
push dword [esp + 0x10]
lea ecx, [esi + 0x79c]
push dword [esp + 0x18]
call fcn.00569cb0
mov edi, esi
lea ebx, [edi + 0x1f3a8]
mov ecx, ebx
call fcn.00476900
mov ecx, ebx
call fcn.00476980
mov ecx, ebx
call fcn.00476920
mov ecx, ebx
call fcn.005786e0
mov ecx, ebx
call fcn.00476660
mov ecx, ebx
call fcn.00476a10
lea ecx, [esi + 0x2d8]
call fcn.00479be0
mov ecx, ebx
call fcn.00476a40
mov ecx, ebx
call fcn.00476940
mov ecx, ebx
call fcn.004766a0
mov ecx, ebx
call fcn.00476960
mov ecx, ebx
call fcn.00578a80
lea ecx, [edi + 0x2b0]
call fcn.0051aa10
lea ecx, [edi + 0x1c31c]
call fcn.00490520
lea ecx, [edi + 0x15c]
call fcn.00588ec0
mov ecx, ebx
call fcn.005786e0
mov ecx, ebx
call fcn.004766b0
mov ecx, ebx
call fcn.00578a80
mov ecx, ebx
call fcn.004769a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.0052afd0
lea ebx, [esi + 0x2d8]
mov dword [esp + 0x18], eax
mov ecx, ebx
call fcn.004797b0
call fcn.0052afd0
lea ecx, [esi + 0x2b0]
mov dword [esp + 0x1c], eax
call fcn.0051ae30
call fcn.0052afd0
lea ecx, [esi + 0x1f3a8]
mov dword [esp + 0x20], eax
call fcn.004766f0
call fcn.0052afd0
lea ecx, [esi + 0x79c]
mov dword [esp + 0x24], eax
call fcn.00569cd0
lea ecx, [esi + 0x79c]
call fcn.00568e70
lea ecx, [esi + 0x210]
call fcn.00566970
mov ecx, esi
fstp dword [esp + 0x14]
lea ecx, [ecx + 0x1f3a8]
call fcn.00475950
sub esp, 0x10
lea ecx, [esi + 0x79c]
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x24]
mov dword [esp + 8], 0x42c80000
movss dword [esp + 4], xmm0
mov dword [esp], 0x41f00000
call fcn.00542250
call fcn.0052afd0
mov ecx, dword [0x6f4498]
mov dword [esp + 0x28], eax
call fcn.00545d00
call fcn.0052afd0
mov dword [esp + 0x2c], eax
lea ecx, [esi + 0x210]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.005669d0
push dword [esp + 0x14]
lea ecx, [esi + 0x79c]
push dword [esp + 0x14]
call fcn.00569cb0
mov edi, esi
lea esi, [edi + 0x1f3a8]
mov ecx, esi
call fcn.00476900
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.00476980
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x10], eax
call fcn.00476920
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0xc], eax
call fcn.005786e0
mov ecx, esi
call fcn.00476660
mov ecx, esi
call fcn.00476a10
call fcn.0052afd0
mov ecx, ebx
mov dword [esp + 0x30], eax
call fcn.00479be0
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x34], eax
call fcn.00476a40
mov ecx, esi
call fcn.00476940
call fcn.0052afd0
mov dword [esp + 0x38], eax
mov ecx, esi
call fcn.00476960
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x3c], eax
call fcn.00578a80
lea ecx, [edi + 0x2b0]
call fcn.0051aa10
call fcn.0052afd0
lea ecx, [edi + 0x1c31c]
mov dword [esp + 0x40], eax
call fcn.00490520
call fcn.0052afd0
lea ecx, [edi + 0x15c]
mov dword [esp + 0x44], eax
call fcn.00588ec0
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x48], eax
call fcn.005786e0
mov ecx, esi
call fcn.004766b0
mov ecx, esi
call fcn.00578a80
call fcn.0052afd0
mov ecx, esi
mov dword [esp + 0x4c], eax
call fcn.004769a0
call fcn.0052afd0
mov edi, eax
call fcn.0052afd0
push 0x5a
mov esi, eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x46f3a2
mov ecx, dword [0x6f86c4]
push 3
push 8
call fcn.00541aa0
mov ebx, dword [esp + 0x18]
sub esi, ebx
cmp esi, 3
jb 0x46f5d4
mov eax, dword [0x6f8800]
test al, 1
jne 0x46f3d9
or eax, 1
push 0x64d4c8
push str.perf_game_render.txt
mov dword [0x6f8800], eax
call fcn.005ca5ef
add esp, 8
mov dword [0x6f8804], eax
call fcn.0052afd0
push eax
push esi
push str.GR.Total__d__Time__d__n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x2c]
sub eax, ebx
push eax
push str.GR.DFM__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x3c]
add esp, 0x1c
sub eax, dword [esp + 0x1c]
push eax
push str.GR.EFT.UP__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x30]
add esp, 0xc
sub eax, dword [esp + 0x20]
push eax
push str.GR.SHW__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x34]
add esp, 0xc
sub eax, dword [esp + 0x24]
push eax
push str.GR.STT__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x38]
add esp, 0xc
sub eax, dword [esp + 0x28]
push eax
push str.GR.CLL__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x20]
add esp, 0xc
sub eax, dword [esp + 0x2c]
push eax
push str.GR.BG.SKY__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x1c]
add esp, 0xc
sub eax, dword [esp + 0x14]
push eax
push str.GR.BG.LEN__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x18]
add esp, 0xc
sub eax, dword [esp + 0x10]
push eax
push str.GR.BG.CLD__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x3c]
add esp, 0xc
sub eax, dword [esp + 0xc]
push eax
push str.GR.BG.MAIN__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x40]
add esp, 0xc
sub eax, dword [esp + 0x30]
push eax
push str.GR.CHR__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x44]
add esp, 0xc
sub eax, dword [esp + 0x34]
push eax
push str.GR.BG.WTR__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x48]
add esp, 0xc
sub eax, dword [esp + 0x38]
push eax
push str.GR.BG.EFT__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x4c]
add esp, 0xc
sub eax, dword [esp + 0x3c]
push eax
push str.GR.EFT__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x50]
add esp, 0xc
sub eax, dword [esp + 0x40]
push eax
push str.GR.ITM__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x54]
add esp, 0xc
sub eax, dword [esp + 0x44]
push eax
push str.GR.FLY__d_n
push dword [0x6f8804]
call fcn.005cbd0b
mov eax, dword [esp + 0x58]
add esp, 0xc
sub eax, dword [esp + 0x48]
push eax
push str.GR.BG.BLK__d_n
push dword [0x6f8804]
call fcn.005cbd0b
sub edi, dword [esp + 0x58]
add esp, 0xc
push edi
push str.GR.BG.LEN__d_n
push dword [0x6f8804]
call fcn.005cbd0b
add esp, 0xc
push dword [0x6f8804]
call fcn.005cc1d9
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret