Function at 0x14000cab0
Capabilities:
Manipulate console buffer
Set console window title

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0xe8]
sub rsp, 0x1c0
movaps xmmword [rax - 0x38], xmm6
mov rax, qword [0x140045080]
xor rax, rsp
mov qword [rbp + 0xa0], rax
mov r14, rcx
xor r12d, r12d
mov dword [rsp + 0x30], r12d
cmp byte [rcx + 0x1f5], r12b
je 0x14000d4f6
xor r15b, r15b
movss xmm0, dword [rcx + 0xc4]
comiss xmm0, dword [rcx + 0xc0]
jae 0x14000cb24
cmp byte [rcx + 0xc9], r12b
jne 0x14000cf54
mov esi, r12d
mov edi, r12d
lea rdx, [rbp + 0x20]
mov rcx, qword [rcx + 0x118]
call qword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x14000cb4b
mov esi, dword [rbp + 0x28]
sub esi, dword [rbp + 0x20]
mov edi, dword [rbp + 0x2c]
sub edi, dword [rbp + 0x24]
cmp si, word [r14 + 0x1e4]
jne 0x14000cb6c
cmp di, word [r14 + 0x1e6]
jne 0x14000cb6c
cmp byte [r14 + 0xc9], r12b
jne 0x14000cf54
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rsi, rax
mov dword [rsp + 0x30], r12d
lea rdx, [rbp - 8]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
movsx edi, word [rbp - 6]
movsx ecx, word [rbp - 8]
imul edi, ecx
mov edx, 0x20
lea rax, [rbp + 0x18]
mov qword [rsp + 0x20], rax
mov ebx, r12d
mov r9d, ebx
mov r8d, edi
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x20], rax
mov r9d, ebx
mov r8d, edi
movzx edx, word [rbp]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FillConsoleOutputAttribute]
mov edx, ebx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, [rbp - 8]
mov rcx, qword [r14 + 0x108]
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
movzx eax, word [rbp + 6]
sub ax, word [rbp + 2]
mov word [r14 + 0x70], ax
lea rdx, [rbp - 8]
mov rcx, qword [r14 + 0x108]
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
movzx eax, word [rbp + 8]
sub ax, word [rbp + 4]
mov word [r14 + 0x72], ax
cmp byte [r14 + 0x1e3], r12b
jne 0x14000cc2c
cmp byte [r14 + 0x1f4], r12b
je 0x14000cc99
cmp byte [r14 + 0xc9], r12b
je 0x14000cc99
mov ebx, r12d
mov edi, r12d
lea rdx, [rbp - 8]
mov rcx, qword [r14 + 0x118]
call qword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x14000cc5c
mov ebx, dword [rbp]
sub ebx, dword [rbp - 8]
mov edi, dword [rbp + 4]
sub edi, dword [rbp - 4]
movzx ecx, di
mov r9d, ecx
shl r9d, 0x10
movzx eax, bx
or r9d, eax
mov dword [r14 + 0x1e4], r9d
movsx eax, cx
xor edx, edx
div dword [r14 + 0x1ec]
mov r8d, eax
movsx eax, r9w
xor edx, edx
div dword [r14 + 0x1e8]
mov edx, eax
mov rcx, r14
call fcn.14000b930
mov edx, dword [r14 + 0x1ec]
mov ecx, dword [r14 + 0x1e8]
call fcn.14000b120
cmp byte [r14 + 0xc9], r12b
jne 0x14000cd68
movsx r15d, word [r14 + 0x1e6]
movsx r12d, word [r14 + 0x1e4]
mov r13, qword [r14 + 0x118]
call fcn.14001bd64
mov dword [rax], 0
xorps xmm0, xmm0
movups xmmword [rbp - 8], xmm0
xor edi, edi
xor ebx, ebx
lea rdx, [rbp - 8]
mov rcx, r13
call qword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x14000ccfd
mov edi, dword [rbp - 8]
mov ebx, dword [rbp - 4]
movzx ebx, bx
shl ebx, 0x10
movzx eax, di
or ebx, eax
mov dword [rbp + 0x18], ebx
xor edi, edi
xor esi, esi
lea rdx, [rbp - 8]
mov rcx, r13
call qword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x14000cd2c
mov edi, dword [rbp]
sub edi, dword [rbp - 8]
mov esi, dword [rbp + 4]
sub esi, dword [rbp - 4]
test r12d, r12d
jne 0x14000cd35
movsx r12d, di
test r15d, r15d
jne 0x14000cd3e
movsx r15d, si
call fcn.14001bd64
cmp dword [rax], 0
jne 0x14000cd60
movsx r8d, word [rbp + 0x1a]
movsx edx, bx
mov dword [rsp + 0x20], r15d
mov r9d, r12d
mov rcx, r13
call fcn.14000b1d0
call fcn.14001bd64
xor r12d, r12d
mov rcx, qword [r14 + 0x108]
xor r8d, r8d
cmp byte [r14 + 0x1f4], r8b
mov edx, 1
jne 0x14000cd85
mov edx, 2
call qword [sym.imp.KERNEL32.dll_SetConsoleDisplayMode]
lea rdx, [rbp + 0x20]
mov rcx, qword [r14 + 0x110]
call qword [sym.imp.KERNEL32.dll_GetConsoleMode]
mov edx, dword [rbp + 0x20]
and edx, 0xffffffbf
bts edx, 7
mov rcx, qword [r14 + 0x110]
call qword [sym.imp.KERNEL32.dll_SetConsoleMode]
mov edx, dword [r14 + 0x1ec]
mov ecx, dword [r14 + 0x1e8]
call fcn.14000b120
cmp byte [r14 + 0x1e3], 0
jne 0x14000cdfb
mov edx, 0xfffffff0
mov rcx, qword [r14 + 0x118]
call qword [sym.imp.USER32.dll_GetWindowLongW]
btr eax, 0x12
mov r8d, eax
mov edx, 0xfffffff0
mov rcx, qword [r14 + 0x118]
call qword [sym.imp.USER32.dll_SetWindowLongW]
xor r8d, r8d
mov edx, 3
mov rcx, qword [r14 + 0x118]
call qword [sym.imp.USER32.dll_ShowScrollBar]
xorps xmm0, xmm0
movups xmmword [rbp + 0x40], xmm0
movups xmmword [rbp + 0x50], xmm0
movups xmmword [rbp + 0x60], xmm0
movups xmmword [rbp + 0x70], xmm0
movups xmmword [rbp + 0x80], xmm0
movups xmmword [rbp + 0x90], xmm0
lea rdx, [rbp + 0x40]
mov rcx, qword [r14 + 0x108]
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfoEx]
mov eax, dword [r14 + 0x140]
mov dword [rbp + 0x60], eax
mov eax, dword [r14 + 0x144]
mov dword [rbp + 0x64], eax
mov eax, dword [r14 + 0x148]
mov dword [rbp + 0x68], eax
mov eax, dword [r14 + 0x14c]
mov dword [rbp + 0x6c], eax
mov eax, dword [r14 + 0x150]
mov dword [rbp + 0x70], eax
mov eax, dword [r14 + 0x154]
mov dword [rbp + 0x74], eax
mov eax, dword [r14 + 0x158]
mov dword [rbp + 0x78], eax
mov eax, dword [r14 + 0x15c]
mov dword [rbp + 0x7c], eax
mov eax, dword [r14 + 0x160]
mov dword [rbp + 0x80], eax
mov eax, dword [r14 + 0x164]
mov dword [rbp + 0x84], eax
mov eax, dword [r14 + 0x168]
mov dword [rbp + 0x88], eax
mov eax, dword [r14 + 0x16c]
mov dword [rbp + 0x8c], eax
mov eax, dword [r14 + 0x170]
mov dword [rbp + 0x90], eax
mov eax, dword [r14 + 0x174]
mov dword [rbp + 0x94], eax
mov eax, dword [r14 + 0x178]
mov dword [rbp + 0x98], eax
mov eax, dword [r14 + 0x17c]
mov dword [rbp + 0x9c], eax
lea rdx, [rbp + 0x40]
mov rcx, qword [r14 + 0x108]
call qword [sym.imp.KERNEL32.dll_SetConsoleScreenBufferInfoEx]
cmp byte [r14 + 0x1e1], 0
je 0x14000cf3e
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_SetConsoleOutputCP]
mov ecx, 1
call fcn.14001b2a4
mov rcx, rax
call fcn.14001b854
mov ecx, eax
mov edx, 0x20000
call fcn.14001b628
mov ecx, 0x96
call qword [sym.imp.KERNEL32.dll_Sleep]
mov byte [r14 + 0xc9], 1
mov r15b, 1
mov eax, dword [r14 + 0x1f0]
mov dword [r14 + 0x6c], eax
lea rcx, [rbp + 0x20]
cmp byte [r14 + 0xc8], 0
jne 0x14000cf7e
call fcn.14000b040
mov rcx, qword [rax]
mov qword [r14 + 0x48], rcx
jmp 0x14000d4de
call fcn.14000b040
mov rcx, qword [rax]
mov qword [r14 + 0x50], rcx
sub rcx, qword [r14 + 0x48]
xorps xmm3, xmm3
cvtsi2ss xmm3, rcx
divss xmm3, dword [0x14003d768]
movss xmm4, dword [r14 + 0x6c]
movss xmm6, dword [0x14003d728]
movaps xmm2, xmm6
divss xmm2, xmm4
movaps xmm1, xmm3
movaps xmm0, xmm6
divss xmm0, xmm3
comiss xmm0, xmm4
jbe 0x14000d0c2
xorps xmm0, xmm0
comiss xmm4, xmm0
jbe 0x14000d0c2
subss xmm2, xmm3
andps xmm2, xmmword [0x14003d7a0]
mulss xmm2, dword [0x14003d764]
cvttss2si eax, xmm2
movsxd rdi, eax
lea rcx, [rbp + 0x20]
call fcn.14000b040
mov rbx, qword [rbp + 0x20]
mov rdx, rbx
test rdi, rdi
jle 0x14000d021
imul rcx, rdi, 0xf4240
movabs rbx, 0x7fffffffffffffff
mov rax, rbx
sub rax, rcx
cmp rdx, rax
jge 0x14000d021
lea rbx, [rdx + rcx]
lea rcx, [rbp + 0x20]
call fcn.14000b040
mov rax, qword [rbp + 0x20]
cmp rax, rbx
jge 0x14000d09e
movabs rdi, 0x4e94914f0000
movabs rsi, 0x431bde82d7b634db
nop word [rax + rax]
mov rcx, rbx
sub rcx, rax
cmp rcx, rdi
jl 0x14000d062
mov ecx, 0x5265c00
jmp 0x14000d087
mov rax, rsi
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rax, rdx, 0xf4240
cmp rax, rcx
jge 0x14000d085
inc rdx
mov ecx, edx
call sub.KERNEL32.dll_Sleep
lea rcx, [rbp + 0x20]
call fcn.14000b040
mov rax, qword [rbp + 0x20]
cmp rax, rbx
jl 0x14000d050
lea rcx, [rbp + 0x20]
call fcn.14000b040
mov rcx, qword [rax]
mov qword [r14 + 0x50], rcx
sub rcx, qword [r14 + 0x48]
xorps xmm1, xmm1
cvtsi2ss xmm1, rcx
divss xmm1, dword [0x14003d768]
divss xmm6, xmm1
movss dword [r14 + 0x68], xmm6
movss dword [r14 + 0x64], xmm1
movaps xmm0, xmm1
addss xmm0, dword [r14 + 0x60]
movss dword [r14 + 0x60], xmm0
movss dword [r14 + 0xb8], xmm6
movss dword [r14 + 0xbc], xmm1
addss xmm1, dword [r14 + 0xc4]
movss dword [r14 + 0xc4], xmm1
comiss xmm1, dword [r14 + 0xc0]
jb 0x14000d4de
cmp byte [r14 + 0x1f6], 0
je 0x14000d4d7
cvttss2si edx, xmm6
lea rcx, [rbp - 0x28]
call fcn.140010c20
mov dword [rsp + 0x30], 4
xorps xmm0, xmm0
movups xmmword [rsp + 0x78], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x78], xmm1
mov ebx, 6
mov r8d, ebx
lea rdx, str._FPS:
lea rcx, [rsp + 0x78]
call fcn.140011250
nop
lea rdi, [r14 + 0x98]
xorps xmm0, xmm0
xorps xmm1, xmm1
cmp qword [r14 + 0xa8], 0
jne 0x14000d1a2
movups xmmword [rsp + 0x58], xmm0
movdqu xmmword [rsp + 0x68], xmm1
xor r8d, r8d
lea rdx, [0x14003d430]
lea rcx, [rsp + 0x58]
call fcn.140011250
lea rcx, [rsp + 0x58]
mov ebx, 5
jmp 0x14000d1c9
movups xmmword [rsp + 0x38], xmm0
movdqu xmmword [rsp + 0x48], xmm1
mov r8d, 1
lea rdx, [0x14003d480]
lea rcx, [rsp + 0x38]
call fcn.140011250
lea rcx, [rsp + 0x38]
mov dword [rsp + 0x30], ebx
lea r8, [r14 + 0x78]
mov r9, qword [r8 + 0x10]
cmp qword [r8 + 0x18], 0xf
jbe 0x14000d1df
mov r8, qword [r8]
call fcn.140011dc0
xorps xmm0, xmm0
movups xmmword [rbp - 8], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 8], xmm1
movups xmm0, xmmword [rax]
movups xmmword [rbp - 8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 8], xmm1
mov qword [rax + 0x10], r12
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
or ebx, 8
mov dword [rsp + 0x30], ebx
mov r8, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0xf
jbe 0x14000d226
mov rdi, qword [rdi]
mov rdx, rdi
lea rcx, [rbp - 8]
call fcn.1400107c0
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x68], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x58], xmm1
mov qword [rax + 0x10], r12
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
or ebx, 0x10
mov dword [rsp + 0x30], ebx
lea r9, [rsp + 0x78]
lea r8, [rbp - 0x68]
lea rcx, [rbp - 0x48]
call fcn.140011b90
or ebx, 0x20
mov dword [rsp + 0x30], ebx
lea r9, [rbp - 0x28]
lea r8, [rbp - 0x48]
lea rcx, [rbp + 0x20]
call fcn.140011b90
or ebx, 0x40
lea rcx, [rbp + 0x20]
cmp qword [rbp + 0x38], 0xf
cmova rcx, qword [rbp + 0x20]
call qword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
mov rdx, qword [rbp + 0x38]
cmp rdx, 0xf
jbe 0x14000d2d3
inc rdx
mov rcx, qword [rbp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d2ce
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d533
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
movdqu xmmword [rbp + 0x30], xmm0
mov byte [rbp + 0x20], 0
mov rdx, qword [rbp - 0x30]
cmp rdx, 0xf
jbe 0x14000d327
inc rdx
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d31a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d539
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
mov rdx, qword [rbp - 0x50]
cmp rdx, 0xf
jbe 0x14000d36a
inc rdx
mov rcx, qword [rbp - 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d35d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d53f
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
mov rdx, qword [rbp + 0x10]
cmp rdx, 0xf
jbe 0x14000d3ad
inc rdx
mov rcx, qword [rbp - 8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d3a0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d545
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
movdqu xmmword [rbp + 8], xmm0
mov byte [rbp - 8], 0
test bl, 2
je 0x14000d40e
and ebx, 0xfffffffd
mov rdx, qword [rsp + 0x50]
cmp rdx, 0xf
jbe 0x14000d403
inc rdx
mov rcx, qword [rsp + 0x38]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d3f6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d54b
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
movdqu xmmword [rsp + 0x48], xmm0
mov byte [rsp + 0x38], 0
test bl, 1
je 0x14000d463
mov rdx, qword [rsp + 0x70]
cmp rdx, 0xf
jbe 0x14000d458
inc rdx
mov rcx, qword [rsp + 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d44b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d551
call fcn.140015110
movdqa xmm0, xmmword [0x14003d790]
movdqu xmmword [rsp + 0x68], xmm0
mov byte [rsp + 0x58], 0
mov rdx, qword [rbp - 0x70]
cmp rdx, 0xf
jbe 0x14000d4a0
inc rdx
mov rcx, qword [rsp + 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d49a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d557
call fcn.140015110
nop
mov rdx, qword [rbp - 0x10]
cmp rdx, 0xf
jbe 0x14000d4d7
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000d4d2
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000d52d
call fcn.140015110
mov dword [r14 + 0xc4], r12d
cmp byte [r14 + 0xc8], 0
sete cl
mov byte [r14 + 0xc8], cl
movzx eax, r15b
jmp 0x14000d4f8
xor al, al
mov rcx, qword [rbp + 0xa0]
xor rcx, rsp
call fcn.1400150f0
lea r11, [rsp + 0x1c0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
nop
call fcn.14001c30c
int3