Function at 0x100001c8c
Capabilities:
Check for time delay via queryperformancecounter
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov byte [rax + 0x10], dl
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x210
mov rdi, rcx
mov ecx, dword [rcx + 0xd4]
xor r15d, r15d
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
cmp ecx, r15d
je 0x100001cfd
cmp byte [rdi + 0x4c], r15b
jne 0x100001cfd
mov eax, ecx
lea r14d, [r15 + 1]
lea ebp, [r15 + 2]
shr eax, 8
test r14b, al
jne 0x10002fef9
mov eax, dword [rdi + 0xd4]
shr eax, 0xc
test r14b, al
je 0x100001cfd
cmp byte [0x10009f9f7], r15b
jne 0x1000300dd
cmp byte [rdi + 0x58], r15b
jne 0x1000051ea
lea r11, [rsp + 0x210]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
lea rcx, [rsp + 0x268]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rcx, qword [rdi + 0x50]
mov rax, qword [rcx]
call qword [rax + 0x148]
cmp eax, r15d
mov esi, eax
jl 0x10003011a
mov rcx, qword [rdi + 0x78]
mov byte [rdi + 0xd3], r14b
mov rax, qword [rcx]
call qword [rax + 8]
mov rcx, qword [rdi + 0x50]
mov byte [rdi + 0xd3], r15b
mov rax, qword [rcx]
mov r8d, r14d
mov edx, 0x16
call qword [rax + 0x1c8]
mov dword [0x10009e0c0], r15d
cmp byte [rdi + 0x28], r15b
je 0x100005257
cmp qword [rdi + 0x98], r15
je 0x10003014a
cmp byte [rdi + 0xd2], r15b
jne 0x10003014a
mov rcx, qword [rdi + 0x98]
xorps xmm7, xmm7
mov byte [rdi + 0xd1], r15b
mov r12d, 6
cmp rcx, r15
je 0x1000056f6
mov rax, qword [rdi + 0x40]
movss xmm6, dword [0x10007cef0]
mov r9d, 0x320
mov edx, 0x1f0
mov r8d, edx
movd xmm1, dword [rax + 8]
movd xmm0, dword [rax + 0xc]
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm1, xmm1
divss xmm1, xmm0
movaps xmm0, xmm1
mulss xmm0, dword [0x10007cef8]
addss xmm0, xmm6
cvttss2si eax, xmm0
cmp eax, r9d
jg 0x1000301c0
mov dword [rcx + 0x1c4], eax
mov rax, qword [rdi + 0x98]
mov dword [rax + 0x1c8], r8d
mov ecx, dword [rdi + 0xa0]
cmp ecx, r15d
jne 0x1000301dd
mov rdx, qword [rdi + 0x98]
mov ecx, 0x190
mov eax, dword [rdx + 0x1c4]
shr eax, 1
sub ecx, eax
mov rax, qword [rdx + 0x1a0]
mov dword [rax + 4], ecx
mov rdx, qword [rdi + 0x98]
mov ecx, 0xf8
mov eax, dword [rdx + 0x1c8]
shr eax, 1
sub ecx, eax
mov rax, qword [rdx + 0x1a0]
mov dword [rax + 8], ecx
mov rcx, qword [rdi + 0x98]
call fcn.100005910
mov al, byte [rdi + 0xd2]
movss xmm5, dword [0x10007cef4]
movss dword [rsp + 0x40], xmm7
movss dword [rsp + 0x4c], xmm6
neg al
movaps xmm0, xmm7
movaps xmm3, xmm7
sbb ecx, ecx
and ecx, 0x41000000
movss dword [rsp + 0x48], xmm5
movss dword [rsp + 0x64], xmm5
movss dword [rsp + 0x80], xmm5
dec ecx
mov dword [rsp + 0x50], ecx
mov dword [rsp + 0x6c], ecx
mov dword [rsp + 0x88], ecx
movss dword [rsp + 0x9c], xmm5
movss dword [rsp + 0x68], xmm6
movss dword [rsp + 0x84], xmm6
mov dword [rsp + 0xa4], ecx
mov rcx, qword [rdi + 0x40]
movss dword [rsp + 0xa0], xmm6
subss xmm0, xmm6
subss xmm3, xmm6
movd xmm5, dword [rcx + 0xc]
cvtdq2ps xmm5, xmm5
movss dword [rsp + 0x44], xmm5
movd xmm1, dword [rcx + 8]
cvtdq2ps xmm1, xmm1
movss dword [rsp + 0x5c], xmm1
addss xmm1, xmm0
movd xmm4, dword [rcx + 0xc]
movaps xmm0, xmm7
subss xmm0, xmm6
cvtdq2ps xmm4, xmm4
movss dword [rsp + 0x60], xmm4
addss xmm5, xmm0
movd xmm2, dword [rcx + 8]
movss dword [rsp + 0x7c], xmm7
movss dword [rsp + 0x94], xmm7
movss dword [rsp + 0x98], xmm7
cvtdq2ps xmm2, xmm2
movss dword [rsp + 0x78], xmm2
mov eax, dword [rcx + 0xc]
imul eax, dword [rcx + 8]
mov rcx, qword [rdi + 0x50]
movss dword [rsp + 0x5c], xmm1
movss dword [rsp + 0x40], xmm3
movss dword [rsp + 0x94], xmm3
movss dword [rsp + 0x44], xmm5
movaps xmm1, xmm7
add dword [0x10009e0c0], eax
mov rax, qword [rdi + 0x98]
movss dword [rsp + 0x7c], xmm3
movss dword [rsp + 0x98], xmm3
subss xmm1, xmm6
addss xmm2, xmm1
movaps xmm1, xmm7
movss dword [rsp + 0x78], xmm2
subss xmm1, xmm6
addss xmm4, xmm1
movss dword [rsp + 0x60], xmm4
movss xmm0, dword [rax + 0x1b0]
movss dword [rsp + 0x54], xmm0
movss xmm1, dword [rax + 0x1bc]
movss dword [rsp + 0x58], xmm1
movss xmm0, dword [rax + 0x1b8]
movss dword [rsp + 0x70], xmm0
movss xmm1, dword [rax + 0x1bc]
movss dword [rsp + 0x74], xmm1
movss xmm0, dword [rax + 0x1b8]
movss dword [rsp + 0x8c], xmm0
movss xmm1, dword [rax + 0x1b4]
movss dword [rsp + 0x90], xmm1
movss xmm0, dword [rax + 0x1b0]
movss dword [rsp + 0xa8], xmm0
movss xmm1, dword [rax + 0x1b4]
movss dword [rsp + 0xac], xmm1
mov rax, qword [rcx]
mov edx, 0x144
call qword [rax + 0x2c8]
mov rcx, qword [rdi + 0x50]
cmp byte [rdi + 0xd2], r15b
mov rax, qword [rcx]
mov r8d, r15d
mov edx, 0x1b
setne r8b
call qword [rax + 0x1c8]
mov rcx, qword [rdi + 0x50]
mov ebx, 5
mov rax, qword [rcx]
lea edx, [rbx + 0xe]
mov r8d, ebx
call qword [rax + 0x1c8]
mov rcx, qword [rdi + 0x50]
lea edx, [rbx + 0xf]
mov rax, qword [rcx]
mov r8d, r12d
call qword [rax + 0x1c8]
mov rcx, qword [rdi + 0x50]
mov r9d, ebp
mov rax, qword [rcx]
mov r8d, ebx
xor edx, edx
call qword [rax + 0x228]
mov rcx, qword [rdi + 0x50]
mov r9d, ebp
mov rax, qword [rcx]
mov r8d, r12d
xor edx, edx
call qword [rax + 0x228]
mov rcx, qword [rdi + 0x50]
lea r8d, [rbx + 2]
mov rax, qword [rcx]
mov r9d, ebp
xor edx, edx
call qword [rax + 0x228]
mov rcx, qword [rdi + 0x50]
lea r9d, [rbx - 2]
mov rax, qword [rcx]
mov r8d, r14d
xor edx, edx
call qword [rax + 0x228]
mov rcx, qword [rdi + 0x50]
lea r9d, [rbx - 2]
mov rax, qword [rcx]
mov r8d, ebp
xor edx, edx
call qword [rax + 0x228]
mov al, byte [rdi + 0xd2]
mov rcx, qword [rdi + 0x50]
mov r10, qword [rcx]
neg al
mov r8d, r14d
sbb r9d, r9d
xor edx, edx
neg r9d
add r9d, ebp
call qword [r10 + 0x218]
mov rcx, qword [rdi + 0x50]
mov r9d, ebp
mov rax, qword [rcx]
mov r8d, ebp
xor edx, edx
call qword [rax + 0x218]
mov rcx, qword [rdi + 0x50]
lea r8d, [rbx - 2]
mov rax, qword [rcx]
xor r9d, r9d
xor edx, edx
call qword [rax + 0x218]
mov al, byte [rdi + 0xd2]
mov rcx, qword [rdi + 0x50]
mov r10, qword [rcx]
neg al
lea r8d, [rbx - 1]
sbb r9d, r9d
and r9d, ebp
add r9d, r14d
xor edx, edx
call qword [r10 + 0x218]
mov rcx, qword [rdi + 0x50]
mov r9d, ebp
mov rax, qword [rcx]
mov r8d, ebx
xor edx, edx
call qword [rax + 0x218]
mov rcx, qword [rdi + 0x50]
xor r9d, r9d
mov rax, qword [rcx]
mov r8d, r12d
xor edx, edx
call qword [rax + 0x218]
mov rcx, qword [rdi + 0x50]
mov r9d, r14d
mov rax, qword [rcx]
mov r8d, r14d
mov edx, r14d
call qword [rax + 0x218]
mov rcx, qword [rdi + 0x50]
lea r8d, [rbx - 1]
mov rax, qword [rcx]
mov r9d, r14d
mov edx, r14d
call qword [rax + 0x218]
mov r11, qword [rdi + 0x98]
mov rcx, qword [0x10009e1e0]
mov rax, qword [r11 + 0x1a0]
xor r8d, r8d
mov edx, dword [rax]
call fcn.100001aa4
cmp byte [rdi + 0xd1], r15b
jne 0x1000056f6
cmp rax, r15
je 0x100030242
mov r8, qword [rax + 0x30]
jmp 0x1000056c7
mov rcx, qword [rdi + 0x50]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x208]
mov rcx, qword [rdi + 0x50]
lea r9, [rsp + 0x40]
mov rax, qword [rcx]
mov r8d, ebp
mov edx, r12d
mov dword [rsp + 0x20], 0x1c
call qword [rax + 0x298]
lea rbp, [0x10009f990]
mov ebx, r15d
mov r12, rbp
cmp dword [r12], r15d
jbe 0x100005715
mov rcx, qword [rdi + 0x78]
mov edx, ebx
mov rax, qword [rcx]
call qword [rax + 0x58]
add ebx, r14d
add r12, 4
cmp ebx, 6
jb 0x100005703
mov ebx, r15d
cmp dword [rbp], r15d
jbe 0x100005740
mov r14d, r15d
cmp dword [rdi + 0x80], r15d
ja 0x1000223a0
mov r14d, 1
add ebx, r14d
add rbp, 4
cmp ebx, 6
jb 0x100005724
cmp byte [rdi + 0xd1], r15b
jne 0x100005790
mov rax, qword [rdi + 0x38]
mov rcx, qword [rax]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp byte [rdi + 0xd1], r15b
jne 0x100005790
mov rax, qword [rdi + 0x38]
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp byte [rdi + 0xd1], r15b
jne 0x100005790
mov rax, qword [rdi + 0x38]
mov rcx, qword [rax + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x20]
cmp byte [0x10009e057], r15b
jne 0x10003024a
mov rcx, qword [rdi + 0x50]
mov qword [rsp + 0x250], r15
lea r8, [rsp + 0x250]
mov rax, qword [rcx]
xor edx, edx
call qword [rax + 0x130]
mov rcx, qword [rdi + 0x50]
xor edx, edx
mov rax, qword [rcx]
cmp byte [rdi + 0xd0], r15b
jne 0x100005b2a
mov r8, qword [rdi + 0xc0]
call qword [rax + 0x128]
mov rcx, qword [rdi + 0x50]
mov dword [rsp + 0x30], r15d
movss dword [rsp + 0x28], xmm7
mov rax, qword [rcx]
mov r9d, r14d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], r15d
call qword [rax + 0x158]
mov rcx, qword [rdi + 0x50]
mov r8, qword [rdi + 0xc8]
mov rax, qword [rcx]
mov rdx, qword [rdi + 0xb8]
call qword [rax + 0x100]
mov byte [rdi + 0xd0], r14b
mov rcx, qword [rdi + 0x50]
mov r8, qword [rsp + 0x250]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x128]
mov rcx, qword [rsp + 0x250]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rcx, qword [rdi + 0x50]
mov rax, qword [rcx]
call qword [rax + 0x150]
mov r12, qword [0x10009e1e0]
mov r11, qword [0x10009e1b8]
mov r15d, dword [r11 + 0xb0]
xor r14d, r14d
cmp dword [r12 + 0x38], r14d
jbe 0x1000058a8
xor ebp, ebp
mov rbx, qword [r12 + 0x48]
mov rcx, qword [rbx + rbp]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rbx + rbp]
mov edx, r15d
sub edx, dword [rcx + 0x10]
cmp edx, eax
ja 0x100030277
inc r14d
add rbp, 8
cmp r14d, dword [r12 + 0x38]
jb 0x100005879
mov bl, byte [rsp + 0x258]
mov byte [rdi + 0x58], 0
test bl, bl
je 0x1000058df
mov rcx, qword [rdi + 0x50]
and qword [rsp + 0x20], 0
xor r9d, r9d
mov rax, qword [rcx]
xor r8d, r8d
xor edx, edx
call qword [rax + 0x88]
mov esi, eax
cmp eax, 0x88760868
je 0x1000302dc
cmp byte [rdi + 0xd2], 0
jne 0x1000302ef
test bl, bl
je 0x1000058f8
test esi, esi
js 0x100030359
inc dword [rdi + 0xb0]
jmp 0x100001cfd
mov r8, qword [rdi + 0xb8]
call qword [rax + 0x128]
mov rcx, qword [rdi + 0x50]
mov dword [rsp + 0x30], r15d
movss dword [rsp + 0x28], xmm7
mov rax, qword [rcx]
mov r9d, r14d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], r15d
call qword [rax + 0x158]
mov rcx, qword [rdi + 0x50]
mov r8, qword [rdi + 0xc8]
mov rax, qword [rcx]
mov rdx, qword [rdi + 0xc0]
call qword [rax + 0x100]
mov byte [rdi + 0xd0], r15b
jmp 0x100005826
mov r12, r15
mov rax, qword [rdi + 0x90]
mov edx, ebx
mov rcx, qword [r12 + rax]
mov rax, qword [rcx]
call qword [rax + 0x58]
inc r14d
add r12, 8
cmp r14d, dword [rdi + 0x80]
jae 0x10000573a
jmp 0x1000223a3
sub ecx, 0x101
je 0x10003009b
sub ecx, r14d
je 0x10002ff2a
sub ecx, ebp
je 0x10002ffb7
sub ecx, 4
je 0x10002ff2a
sub ecx, 8
je 0x10002ff2a
sub ecx, 0x10
je 0x10002ff2a
cmp ecx, 0x20
jne 0x100001cd8
mov rcx, rdi
call fcn.1000482b4
mov rcx, qword [0x10009e1e0]
call fcn.10004b774
lea rbx, [rdi + 0x60]
mov esi, 3
mov rcx, qword [rbx]
cmp rcx, r15
je 0x10002ff58
mov rax, qword [rcx]
mov edx, r14d
call qword [rax + 8]
mov qword [rbx], r15
add rbx, 8
sub rsi, r14
jne 0x10002ff47
mov rcx, qword [rdi + 0xc8]
cmp rcx, r15
je 0x10002ff7d
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [rdi + 0xc8], r15
mov rcx, qword [rdi + 0x50]
cmp rcx, r15
je 0x10002ff90
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [rdi + 0x50], r15
mov rcx, rdi
mov byte [rdi + 0x4c], r14b
call fcn.10001dc28
cmp al, r15b
je 0x10002ffae
mov edx, 0x1000
mov rcx, rdi
call fcn.100048598
mov byte [rdi + 0x4c], r15b
jmp 0x100001cd8
mov rcx, qword [rdi + 0x50]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 0x88760868
je 0x100030044
cmp eax, 0x88760869
je 0x10003000f
cmp eax, r15d
je 0x10002ffe4
mov ecx, 0x64
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x100001cfd
mov rcx, rdi
call fcn.1000482b4
mov rcx, rdi
call fcn.10001e210
cmp al, r15b
je 0x100001cfd
mov edx, 0x1000
mov rcx, rdi
call fcn.100048598
jmp 0x100001cfd
lea r9, str.Resuming_after_lost_device
lea r8, str.RenderManager.cpp
mov edx, 0x6a8
mov ecx, ebp
call fcn.100002c98
mov rcx, rdi
call fcn.1000482b4
mov rcx, rdi
call fcn.100048418
cmp al, r15b
je 0x100001cfd
jmp 0x10002ffec
mov ecx, 0x20
call sub.d3d9.dll_Direct3DCreate9
mov rbx, rax
cmp rax, r15
je 0x100001cfd
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
cmp eax, r15d
jbe 0x10003008d
lea r8, [rsp + 0xc0]
mov rdx, rbx
mov rcx, rdi
call fcn.10001e4f0
cmp al, r15b
je 0x10003008d
mov edx, 0x140
mov rcx, rdi
call fcn.100048598
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
jmp 0x100001cfd
call fcn.100047b28
mov rcx, rdi
call fcn.1000482b4
mov rcx, rdi
call fcn.100048418
cmp al, r15b
je 0x100001cd8
mov rcx, rdi
call fcn.10001e210
cmp al, r15b
je 0x100001cd8
mov edx, 0x1000
mov rcx, rdi
call fcn.100048598
nop
jmp 0x100001cd8
mov bl, byte [rdi + 0xd2]
mov ecx, 0x75
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x1f40
test cx, ax
setne al
cmp bl, al
je 0x100001cf3
cmp bl, r15b
mov byte [rdi + 0x14], r14b
mov byte [rdi + 0x58], r14b
sete al
mov byte [rdi + 0xd2], al
jmp 0x100001cf3
mov ecx, eax
call fcn.1000193c4
lea r9, str.Error_in_BeginScene____x__s_
lea r8, str.RenderManager.cpp
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov ecx, ebp
mov edx, 0x73b
call fcn.100002c98
nop
jmp 0x100005210
mov edx, r15d
cmp byte [rdi + 0xd2], r15b
jne 0x100030159
mov edx, dword [rdi + 8]
mov rcx, qword [rdi + 0x50]
movss xmm0, dword [0x10007ced4]
mov dword [rsp + 0x30], r15d
mov rax, qword [rcx]
movss dword [rsp + 0x28], xmm0
mov dword [rsp + 0x20], edx
mov r9d, r14d
xor r8d, r8d
xor edx, edx
call qword [rax + 0x158]
cmp eax, r15d
mov esi, eax
jge 0x100005264
mov ecx, eax
call fcn.1000193c4
lea r9, str.Error_in_Clear____x__s_
lea r8, str.RenderManager.cpp
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov ecx, ebp
mov edx, 0x755
call fcn.100002c98
nop
jmp 0x100005264
movss xmm0, dword [0x100093db0]
mov eax, r9d
divss xmm0, xmm1
addss xmm0, xmm6
cvttss2si r8d, xmm0
jmp 0x1000052ce
sub ecx, r14d
je 0x100030214
cmp ecx, r14d
jne 0x100005331
mov rax, qword [rdi + 0x98]
mov rcx, qword [rax + 0x1a0]
mov dword [rcx + 4], r15d
mov rax, qword [rdi + 0x98]
mov rcx, qword [rax + 0x1a0]
mov dword [rcx + 8], r15d
jmp 0x100005331
mov rax, qword [rdi + 0x98]
mov rcx, qword [rax + 0x1a0]
mov dword [rcx + 4], r15d
mov rax, qword [rdi + 0x98]
sub edx, dword [rax + 0x1c8]
mov rax, qword [rax + 0x1a0]
mov dword [rax + 8], edx
jmp 0x100005331
mov r8, r15
jmp 0x1000056c7
mov eax, dword [0x10009e0c0]
lea r9, str.Rendered__u_pixels
lea r8, str.RenderManager.cpp
mov edx, 0x828
mov ecx, 2
mov dword [rsp + 0x20], eax
call fcn.100002c98
nop
jmp 0x10000579d
mov rax, qword [r12 + 0x48]
mov rcx, qword [rax + rbp]
mov rax, qword [rcx]
call qword [rax + 8]
test al, al
je 0x10000589a
mov rax, qword [r12 + 0x48]
mov rax, qword [rax + rbp]
cmp byte [rax + 0x14], 0
jne 0x10000589a
mov rax, qword [rax + 0x20]
lea r9, str.Purging__s
lea r8, str.ResourceManager.cpp
mov edx, 0x1a3
mov ecx, 4
mov qword [rsp + 0x20], rax
call fcn.100002c98
mov r11, qword [r12 + 0x48]
mov rcx, qword [r11 + rbp]
mov rax, qword [rcx]
call qword [rax + 0x28]
nop
jmp 0x10000589a
mov edx, 0x104
mov rcx, rdi
call fcn.100048598
nop
jmp 0x1000058df
lea rcx, [rsp + 0x260]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rsp + 0xb0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov r11, qword [rsp + 0x260]
mov r9d, dword [0x10009e0c0]
pxor xmm2, xmm2
pxor xmm0, xmm0
sub r11, qword [rsp + 0x268]
lea rdx, str.Render_Time:__f__fill:__d
mov ecx, 2
cvtsi2sd xmm0, qword [rsp + 0xb0]
cvtsi2sd xmm2, r11
divsd xmm2, xmm0
movq r8, xmm2
call fcn.100002470
nop
jmp 0x1000058ec
mov ecx, esi
call fcn.1000193c4
lea r9, str.Present_Failed:__x__s_
lea r8, str.RenderManager.cpp
mov qword [rsp + 0x28], rax
mov edx, 0x86c
mov ecx, 2
mov dword [rsp + 0x20], esi
call fcn.100002c98
jmp 0x100001cfd