Function at 0x45bae5
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 0x45c0da
mov rax, qword [0x00723a50]
movzx eax, byte [rax + 0x12]
test al, al
je 0x45bbeb
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 0x45bb9c
movzx eax, word [rbp - 0x3c]
cwde
add eax, 1
mov dword [rbp + 0x18], eax
cmp dword [rbp + 0x10], 0
jne 0x45bbad
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 0x45c0de
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x20]
test ax, ax
je 0x45bc9d
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov rcx, qword [0x00713020]
mov rdx, qword [0x00723a50]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5a3b4], eax
mov rdx, qword [0x00713028]
mov rax, qword [0x00723a50]
mov eax, dword [rax + 0x30]
mov eax, eax
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45bc87
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov rcx, qword [0x00713028]
mov rdx, qword [0x00723a50]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5a3b8], eax
jmp 0x45bcc5
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5a3b8], eax
jmp 0x45bcc5
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov dword [0x00c5a3b4], eax
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5a3b8], eax
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45be0c
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x34]
cwde
cmp dword [rbp + 0x10], eax
jl 0x45c0ab
mov eax, dword [0x00c5a3b4]
cmp dword [rbp + 0x10], eax
je 0x45be0d
mov rax, qword [0x00723a50]
movzx eax, word [rax + 0x36]
cwde
cmp dword [rbp + 0x10], eax
jle 0x45be0d
mov eax, dword [0x005875cc]
test eax, eax
je 0x45c0ae
mov dword [0x005875cc], 0
cmp dword [rbp + 0x10], 0x32
jg 0x45c0ae
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45bd51
cmp dword [rbp + 0x18], 0
jle 0x45c0b1
mov eax, dword [0x00c5a3b8]
cmp dword [rbp + 0x18], eax
jg 0x45c0b4
mov ecx, 0xfa0
call sub.msvcrt.dll_malloc
mov qword [rbp - 0x18], rax
mov rax, qword [0x00723a50]
mov eax, dword [rax + 0x24]
mov dword [rbp - 0x1c], eax
mov rax, qword [0x00723a50]
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.0044d8a4
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 [0x00723a50]
mov edx, dword [rbp - 0x1c]
mov dword [rax + 0x24], edx
mov rax, qword [0x00723a50]
mov edx, dword [rbp - 0x20]
mov dword [rax + 0x28], edx
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sub.msvcrt.dll_free
jmp 0x45be0d
nop
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45be30
cmp dword [rbp + 0x18], 0
jle 0x45c0b7
mov eax, dword [0x00c5a3b8]
cmp dword [rbp + 0x18], eax
jg 0x45c0ba
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45be4e
cmp dword [rbp + 0x20], 0
js 0x45c0bd
cmp dword [rbp + 0x20], 1
jg 0x45c0c0
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45be6c
cmp dword [rbp + 0x28], 0
js 0x45c0c3
cmp dword [rbp + 0x28], 0x1f
jg 0x45c0c6
mov eax, dword [rbp + 0x38]
and eax, 0x10
test eax, eax
je 0x45be8a
cmp dword [rbp + 0x30], 0
js 0x45c0c9
cmp dword [rbp + 0x30], 0x1f
jg 0x45c0cc
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45bead
mov rax, qword [0x00723a50]
mov edx, dword [rbp + 0x10]
mov word [rax + 0x3a], dx
mov rax, qword [0x00723a50]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45bed0
mov rax, qword [0x00723a50]
mov edx, dword [rbp + 0x18]
mov word [rax + 0x38], dx
mov rax, qword [0x00723a50]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 3
test eax, eax
jne 0x45bef4
mov rax, qword [0x00723a50]
movzx eax, byte [rax + 0x5d]
test al, al
je 0x45bef4
mov rax, qword [0x00723a50]
mov byte [rax + 0x5d], 2
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45bf9a
cmp dword [rbp + 0x20], 0
je 0x45bf0f
mov dword [rbp + 0x20], 1
mov rax, qword [0x00723a50]
mov edx, dword [rbp + 0x20]
mov byte [rax + 0x3c], dl
mov rax, qword [0x00723a50]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45bf9a
mov dword [0x00c5a3bc], 0
mov edx, dword [0x00c5a3bc]
mov eax, dword [0x005875e4]
cmp edx, eax
jge 0x45bf9a
mov rdx, qword [0x00723a00]
mov eax, dword [0x00c5a3bc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45bf89
mov rcx, qword [0x00723a08]
mov eax, dword [0x00c5a3bc]
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 [0x00c5a3bc]
add eax, 1
mov dword [0x00c5a3bc], eax
jmp 0x45bf37
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45bfb3
mov rax, qword [0x00723a50]
mov edx, dword [rbp + 0x28]
mov byte [rax + 0x3d], dl
jmp 0x45bfc4
mov rax, qword [0x00723a50]
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 0x45bfdd
mov rax, qword [0x00723a50]
mov edx, dword [rbp + 0x30]
mov byte [rax + 0x3e], dl
jmp 0x45bfee
mov rax, qword [0x00723a50]
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 0x45c0dd
mov rax, qword [0x00723a50]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c0dd
mov dword [0x00c5a3bc], 0
mov edx, dword [0x00c5a3bc]
mov eax, dword [0x005875e4]
cmp edx, eax
jge 0x45c0dd
mov rdx, qword [0x00723a00]
mov eax, dword [0x00c5a3bc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c097
mov rcx, qword [0x00723a08]
mov eax, dword [0x00c5a3bc]
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 [0x00723a08]
mov eax, dword [0x00c5a3bc]
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 [0x00c5a3bc]
add eax, 1
mov dword [0x00c5a3bc], eax
jmp 0x45c01b
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
jmp 0x45c0cd
nop
mov ecx, 5
call fcn.0044487a
nop
jmp 0x45c0de
nop
jmp 0x45c0de
nop
add rsp, 0xb0
pop rbp
ret