Function at 0x45c3d5
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 [0x005d3b90]
mov eax, dword [rax]
test eax, eax
jne 0x45c9ca
mov rax, qword [0x00724a70]
movzx eax, byte [rax + 0x12]
test al, al
je 0x45c4db
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 0x45c48c
movzx eax, word [rbp - 0x3c]
cwde
add eax, 1
mov dword [rbp + 0x18], eax
cmp dword [rbp + 0x10], 0
jne 0x45c49d
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 0x45c9ce
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x20]
test ax, ax
je 0x45c58d
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov rcx, qword [0x00714040]
mov rdx, qword [0x00724a70]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5b3d4], eax
mov rdx, qword [0x00714048]
mov rax, qword [0x00724a70]
mov eax, dword [rax + 0x30]
mov eax, eax
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c577
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov rcx, qword [0x00714048]
mov rdx, qword [0x00724a70]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5b3d8], eax
jmp 0x45c5b5
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5b3d8], eax
jmp 0x45c5b5
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov dword [0x00c5b3d4], eax
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5b3d8], eax
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45c6fc
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x34]
cwde
cmp dword [rbp + 0x10], eax
jl 0x45c99b
mov eax, dword [0x00c5b3d4]
cmp dword [rbp + 0x10], eax
je 0x45c6fd
mov rax, qword [0x00724a70]
movzx eax, word [rax + 0x36]
cwde
cmp dword [rbp + 0x10], eax
jle 0x45c6fd
mov eax, dword [0x005885cc]
test eax, eax
je 0x45c99e
mov dword [0x005885cc], 0
cmp dword [rbp + 0x10], 0x32
jg 0x45c99e
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c641
cmp dword [rbp + 0x18], 0
jle 0x45c9a1
mov eax, dword [0x00c5b3d8]
cmp dword [rbp + 0x18], eax
jg 0x45c9a4
mov ecx, 0xfa0
call sub.msvcrt.dll_malloc
mov qword [rbp - 0x18], rax
mov rax, qword [0x00724a70]
mov eax, dword [rax + 0x24]
mov dword [rbp - 0x1c], eax
mov rax, qword [0x00724a70]
mov eax, dword [rax + 0x28]
mov dword [rbp - 0x20], eax
mov rax, qword [rbp - 0x18]
mov r8d, 0xfa0
mov rdx, qword [0x005d3890]
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.0044e194
mov rax, qword [rbp - 0x18]
mov r8d, 0xfa0
mov rdx, rax
mov rax, qword [0x005d3890]
lea rcx, [rax + 0xb8000]
call sub.msvcrt.dll_memcpy
mov rax, qword [0x00724a70]
mov edx, dword [rbp - 0x1c]
mov dword [rax + 0x24], edx
mov rax, qword [0x00724a70]
mov edx, dword [rbp - 0x20]
mov dword [rax + 0x28], edx
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sub.msvcrt.dll_free
jmp 0x45c6fd
nop
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c720
cmp dword [rbp + 0x18], 0
jle 0x45c9a7
mov eax, dword [0x00c5b3d8]
cmp dword [rbp + 0x18], eax
jg 0x45c9aa
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45c73e
cmp dword [rbp + 0x20], 0
js 0x45c9ad
cmp dword [rbp + 0x20], 1
jg 0x45c9b0
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45c75c
cmp dword [rbp + 0x28], 0
js 0x45c9b3
cmp dword [rbp + 0x28], 0x1f
jg 0x45c9b6
mov eax, dword [rbp + 0x38]
and eax, 0x10
test eax, eax
je 0x45c77a
cmp dword [rbp + 0x30], 0
js 0x45c9b9
cmp dword [rbp + 0x30], 0x1f
jg 0x45c9bc
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45c79d
mov rax, qword [0x00724a70]
mov edx, dword [rbp + 0x10]
mov word [rax + 0x3a], dx
mov rax, qword [0x00724a70]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c7c0
mov rax, qword [0x00724a70]
mov edx, dword [rbp + 0x18]
mov word [rax + 0x38], dx
mov rax, qword [0x00724a70]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 3
test eax, eax
jne 0x45c7e4
mov rax, qword [0x00724a70]
movzx eax, byte [rax + 0x5d]
test al, al
je 0x45c7e4
mov rax, qword [0x00724a70]
mov byte [rax + 0x5d], 2
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45c88a
cmp dword [rbp + 0x20], 0
je 0x45c7ff
mov dword [rbp + 0x20], 1
mov rax, qword [0x00724a70]
mov edx, dword [rbp + 0x20]
mov byte [rax + 0x3c], dl
mov rax, qword [0x00724a70]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c88a
mov dword [0x00c5b3dc], 0
mov edx, dword [0x00c5b3dc]
mov eax, dword [0x005885e4]
cmp edx, eax
jge 0x45c88a
mov rdx, qword [0x00724a20]
mov eax, dword [0x00c5b3dc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c879
mov rcx, qword [0x00724a28]
mov eax, dword [0x00c5b3dc]
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 [0x00c5b3dc]
add eax, 1
mov dword [0x00c5b3dc], eax
jmp 0x45c827
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45c8a3
mov rax, qword [0x00724a70]
mov edx, dword [rbp + 0x28]
mov byte [rax + 0x3d], dl
jmp 0x45c8b4
mov rax, qword [0x00724a70]
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 0x45c8cd
mov rax, qword [0x00724a70]
mov edx, dword [rbp + 0x30]
mov byte [rax + 0x3e], dl
jmp 0x45c8de
mov rax, qword [0x00724a70]
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 0x45c9cd
mov rax, qword [0x00724a70]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c9cd
mov dword [0x00c5b3dc], 0
mov edx, dword [0x00c5b3dc]
mov eax, dword [0x005885e4]
cmp edx, eax
jge 0x45c9cd
mov rdx, qword [0x00724a20]
mov eax, dword [0x00c5b3dc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c987
mov rcx, qword [0x00724a28]
mov eax, dword [0x00c5b3dc]
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 [0x00724a28]
mov eax, dword [0x00c5b3dc]
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 [0x00c5b3dc]
add eax, 1
mov dword [0x00c5b3dc], eax
jmp 0x45c90b
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
jmp 0x45c9bd
nop
mov ecx, 5
call fcn.0044516a
nop
jmp 0x45c9ce
nop
jmp 0x45c9ce
nop
add rsp, 0xb0
pop rbp
ret