Function at 0x45bbc5
Capabilities:
Manipulate console buffer

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0xb0
mov dword [rbp + 0x10], ecx
mov dword [rbp + 0x18], edx
mov dword [rbp + 0x20], r8d
mov dword [rbp + 0x28], r9d
mov rax, qword [0x005d2ab0]
mov eax, dword [rax]
test eax, eax
jne 0x45c1ba
mov rax, qword [0x00723a70]
movzx eax, byte [rax + 0x12]
test al, al
je 0x45bccb
mov dword [rbp - 0x60], 0x18
mov qword [rbp - 0x58], 0
mov dword [rbp - 0x50], 1
lea rax, [rbp - 0x60]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 3
mov r9, rax
mov r8d, 3
mov edx, 0xc0000000
lea rcx, str.CONOUT_
mov rax, qword [sym.imp.KERNEL32.dll_CreateFileA]
call rax
mov qword [rbp - 8], rax
lea rax, [rbp - 0x40]
mov rcx, qword [rbp - 8]
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
call rax
cmp dword [rbp + 0x18], 0
jne 0x45bc7c
movzx eax, word [rbp - 0x3c]
cwde
add eax, 1
mov dword [rbp + 0x18], eax
cmp dword [rbp + 0x10], 0
jne 0x45bc8d
movzx eax, word [rbp - 0x3a]
cwde
add eax, 1
mov dword [rbp + 0x10], eax
mov eax, dword [rbp + 0x18]
sub eax, 1
mov word [rbp - 0x64], ax
mov eax, dword [rbp + 0x10]
sub eax, 1
mov word [rbp - 0x62], ax
mov ecx, 0xfffffff5
mov rax, qword [sym.imp.KERNEL32.dll_GetStdHandle]
call rax
mov qword [rbp - 0x10], rax
mov edx, dword [rbp - 0x64]
mov rax, qword [rbp - 0x10]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
call rax
jmp 0x45c1be
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x20]
test ax, ax
je 0x45bd7d
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov rcx, qword [0x00713040]
mov rdx, qword [0x00723a70]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5a3d4], eax
mov rdx, qword [0x00713048]
mov rax, qword [0x00723a70]
mov eax, dword [rax + 0x30]
mov eax, eax
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45bd67
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov rcx, qword [0x00713048]
mov rdx, qword [0x00723a70]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5a3d8], eax
jmp 0x45bda5
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5a3d8], eax
jmp 0x45bda5
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov dword [0x00c5a3d4], eax
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5a3d8], eax
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45beec
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x34]
cwde
cmp dword [rbp + 0x10], eax
jl 0x45c18b
mov eax, dword [0x00c5a3d4]
cmp dword [rbp + 0x10], eax
je 0x45beed
mov rax, qword [0x00723a70]
movzx eax, word [rax + 0x36]
cwde
cmp dword [rbp + 0x10], eax
jle 0x45beed
mov eax, dword [0x005875cc]
test eax, eax
je 0x45c18e
mov dword [0x005875cc], 0
cmp dword [rbp + 0x10], 0x32
jg 0x45c18e
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45be31
cmp dword [rbp + 0x18], 0
jle 0x45c191
mov eax, dword [0x00c5a3d8]
cmp dword [rbp + 0x18], eax
jg 0x45c194
mov ecx, 0xfa0
call sub.msvcrt.dll_malloc
mov qword [rbp - 0x18], rax
mov rax, qword [0x00723a70]
mov eax, dword [rax + 0x24]
mov dword [rbp - 0x1c], eax
mov rax, qword [0x00723a70]
mov eax, dword [rax + 0x28]
mov dword [rbp - 0x20], eax
mov rax, qword [rbp - 0x18]
mov r8d, 0xfa0
mov rdx, qword [0x005d27b0]
add rdx, 0xb8000
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov dword [rsp + 0x28], 3
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0x32
mov edx, 0x50
mov ecx, 0
call fcn.0044d984
mov rax, qword [rbp - 0x18]
mov r8d, 0xfa0
mov rdx, rax
mov rax, qword [0x005d27b0]
lea rcx, [rax + 0xb8000]
call sub.msvcrt.dll_memcpy
mov rax, qword [0x00723a70]
mov edx, dword [rbp - 0x1c]
mov dword [rax + 0x24], edx
mov rax, qword [0x00723a70]
mov edx, dword [rbp - 0x20]
mov dword [rax + 0x28], edx
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sub.msvcrt.dll_free
jmp 0x45beed
nop
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45bf10
cmp dword [rbp + 0x18], 0
jle 0x45c197
mov eax, dword [0x00c5a3d8]
cmp dword [rbp + 0x18], eax
jg 0x45c19a
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45bf2e
cmp dword [rbp + 0x20], 0
js 0x45c19d
cmp dword [rbp + 0x20], 1
jg 0x45c1a0
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45bf4c
cmp dword [rbp + 0x28], 0
js 0x45c1a3
cmp dword [rbp + 0x28], 0x1f
jg 0x45c1a6
mov eax, dword [rbp + 0x38]
and eax, 0x10
test eax, eax
je 0x45bf6a
cmp dword [rbp + 0x30], 0
js 0x45c1a9
cmp dword [rbp + 0x30], 0x1f
jg 0x45c1ac
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45bf8d
mov rax, qword [0x00723a70]
mov edx, dword [rbp + 0x10]
mov word [rax + 0x3a], dx
mov rax, qword [0x00723a70]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45bfb0
mov rax, qword [0x00723a70]
mov edx, dword [rbp + 0x18]
mov word [rax + 0x38], dx
mov rax, qword [0x00723a70]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 3
test eax, eax
jne 0x45bfd4
mov rax, qword [0x00723a70]
movzx eax, byte [rax + 0x5d]
test al, al
je 0x45bfd4
mov rax, qword [0x00723a70]
mov byte [rax + 0x5d], 2
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45c07a
cmp dword [rbp + 0x20], 0
je 0x45bfef
mov dword [rbp + 0x20], 1
mov rax, qword [0x00723a70]
mov edx, dword [rbp + 0x20]
mov byte [rax + 0x3c], dl
mov rax, qword [0x00723a70]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c07a
mov dword [0x00c5a3dc], 0
mov edx, dword [0x00c5a3dc]
mov eax, dword [0x005875e4]
cmp edx, eax
jge 0x45c07a
mov rdx, qword [0x00723a20]
mov eax, dword [0x00c5a3dc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c069
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c5a3dc]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov edx, dword [rbp + 0x20]
mov byte [rax + 0x3c], dl
mov eax, dword [0x00c5a3dc]
add eax, 1
mov dword [0x00c5a3dc], eax
jmp 0x45c017
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45c093
mov rax, qword [0x00723a70]
mov edx, dword [rbp + 0x28]
mov byte [rax + 0x3d], dl
jmp 0x45c0a4
mov rax, qword [0x00723a70]
movzx eax, byte [rax + 0x3d]
movzx eax, al
mov dword [rbp + 0x28], eax
mov eax, dword [rbp + 0x38]
and eax, 0x10
test eax, eax
je 0x45c0bd
mov rax, qword [0x00723a70]
mov edx, dword [rbp + 0x30]
mov byte [rax + 0x3e], dl
jmp 0x45c0ce
mov rax, qword [0x00723a70]
movzx eax, byte [rax + 0x3e]
movzx eax, al
mov dword [rbp + 0x30], eax
mov eax, dword [rbp + 0x38]
and eax, 0x18
test eax, eax
je 0x45c1bd
mov rax, qword [0x00723a70]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c1bd
mov dword [0x00c5a3dc], 0
mov edx, dword [0x00c5a3dc]
mov eax, dword [0x005875e4]
cmp edx, eax
jge 0x45c1bd
mov rdx, qword [0x00723a20]
mov eax, dword [0x00c5a3dc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c177
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c5a3dc]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov edx, dword [rbp + 0x28]
mov byte [rax + 0x3d], dl
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c5a3dc]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov edx, dword [rbp + 0x30]
mov byte [rax + 0x3e], dl
mov eax, dword [0x00c5a3dc]
add eax, 1
mov dword [0x00c5a3dc], eax
jmp 0x45c0fb
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
jmp 0x45c1ad
nop
mov ecx, 5
call fcn.0044495a
nop
jmp 0x45c1be
nop
jmp 0x45c1be
nop
add rsp, 0xb0
pop rbp
ret