Function at 0x45c325
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 0x45c91a
mov rax, qword [0x00724a90]
movzx eax, byte [rax + 0x12]
test al, al
je 0x45c42b
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 0x45c3dc
movzx eax, word [rbp - 0x3c]
cwde
add eax, 1
mov dword [rbp + 0x18], eax
cmp dword [rbp + 0x10], 0
jne 0x45c3ed
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 0x45c91e
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x20]
test ax, ax
je 0x45c4dd
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov rcx, qword [0x00714060]
mov rdx, qword [0x00724a90]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5b3f4], eax
mov rdx, qword [0x00714068]
mov rax, qword [0x00724a90]
mov eax, dword [rax + 0x30]
mov eax, eax
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c4c7
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov rcx, qword [0x00714068]
mov rdx, qword [0x00724a90]
mov edx, dword [rdx + 0x30]
mov edx, edx
shl rdx, 2
add rdx, rcx
mov ecx, dword [rdx]
cdq
idiv ecx
mov dword [0x00c5b3f8], eax
jmp 0x45c505
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5b3f8], eax
jmp 0x45c505
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x16]
movzx eax, ax
mov dword [0x00c5b3f4], eax
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x14]
movzx eax, ax
mov dword [0x00c5b3f8], eax
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45c64c
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x34]
cwde
cmp dword [rbp + 0x10], eax
jl 0x45c8eb
mov eax, dword [0x00c5b3f4]
cmp dword [rbp + 0x10], eax
je 0x45c64d
mov rax, qword [0x00724a90]
movzx eax, word [rax + 0x36]
cwde
cmp dword [rbp + 0x10], eax
jle 0x45c64d
mov eax, dword [0x005885cc]
test eax, eax
je 0x45c8ee
mov dword [0x005885cc], 0
cmp dword [rbp + 0x10], 0x32
jg 0x45c8ee
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c591
cmp dword [rbp + 0x18], 0
jle 0x45c8f1
mov eax, dword [0x00c5b3f8]
cmp dword [rbp + 0x18], eax
jg 0x45c8f4
mov ecx, 0xfa0
call sub.msvcrt.dll_malloc
mov qword [rbp - 0x18], rax
mov rax, qword [0x00724a90]
mov eax, dword [rax + 0x24]
mov dword [rbp - 0x1c], eax
mov rax, qword [0x00724a90]
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.0044e0e4
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 [0x00724a90]
mov edx, dword [rbp - 0x1c]
mov dword [rax + 0x24], edx
mov rax, qword [0x00724a90]
mov edx, dword [rbp - 0x20]
mov dword [rax + 0x28], edx
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sub.msvcrt.dll_free
jmp 0x45c64d
nop
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c670
cmp dword [rbp + 0x18], 0
jle 0x45c8f7
mov eax, dword [0x00c5b3f8]
cmp dword [rbp + 0x18], eax
jg 0x45c8fa
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45c68e
cmp dword [rbp + 0x20], 0
js 0x45c8fd
cmp dword [rbp + 0x20], 1
jg 0x45c900
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45c6ac
cmp dword [rbp + 0x28], 0
js 0x45c903
cmp dword [rbp + 0x28], 0x1f
jg 0x45c906
mov eax, dword [rbp + 0x38]
and eax, 0x10
test eax, eax
je 0x45c6ca
cmp dword [rbp + 0x30], 0
js 0x45c909
cmp dword [rbp + 0x30], 0x1f
jg 0x45c90c
mov eax, dword [rbp + 0x38]
and eax, 1
test eax, eax
je 0x45c6ed
mov rax, qword [0x00724a90]
mov edx, dword [rbp + 0x10]
mov word [rax + 0x3a], dx
mov rax, qword [0x00724a90]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 2
test eax, eax
je 0x45c710
mov rax, qword [0x00724a90]
mov edx, dword [rbp + 0x18]
mov word [rax + 0x38], dx
mov rax, qword [0x00724a90]
mov byte [rax + 0x5d], 0
mov eax, dword [rbp + 0x38]
and eax, 3
test eax, eax
jne 0x45c734
mov rax, qword [0x00724a90]
movzx eax, byte [rax + 0x5d]
test al, al
je 0x45c734
mov rax, qword [0x00724a90]
mov byte [rax + 0x5d], 2
mov eax, dword [rbp + 0x38]
and eax, 4
test eax, eax
je 0x45c7da
cmp dword [rbp + 0x20], 0
je 0x45c74f
mov dword [rbp + 0x20], 1
mov rax, qword [0x00724a90]
mov edx, dword [rbp + 0x20]
mov byte [rax + 0x3c], dl
mov rax, qword [0x00724a90]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c7da
mov dword [0x00c5b3fc], 0
mov edx, dword [0x00c5b3fc]
mov eax, dword [0x005885e4]
cmp edx, eax
jge 0x45c7da
mov rdx, qword [0x00724a40]
mov eax, dword [0x00c5b3fc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c7c9
mov rcx, qword [0x00724a48]
mov eax, dword [0x00c5b3fc]
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 [0x00c5b3fc]
add eax, 1
mov dword [0x00c5b3fc], eax
jmp 0x45c777
mov eax, dword [rbp + 0x38]
and eax, 8
test eax, eax
je 0x45c7f3
mov rax, qword [0x00724a90]
mov edx, dword [rbp + 0x28]
mov byte [rax + 0x3d], dl
jmp 0x45c804
mov rax, qword [0x00724a90]
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 0x45c81d
mov rax, qword [0x00724a90]
mov edx, dword [rbp + 0x30]
mov byte [rax + 0x3e], dl
jmp 0x45c82e
mov rax, qword [0x00724a90]
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 0x45c91d
mov rax, qword [0x00724a90]
mov eax, dword [rax + 0x48]
and eax, 2
test eax, eax
je 0x45c91d
mov dword [0x00c5b3fc], 0
mov edx, dword [0x00c5b3fc]
mov eax, dword [0x005885e4]
cmp edx, eax
jge 0x45c91d
mov rdx, qword [0x00724a40]
mov eax, dword [0x00c5b3fc]
cdqe
shl rax, 2
add rax, rdx
mov eax, dword [rax]
test eax, eax
je 0x45c8d7
mov rcx, qword [0x00724a48]
mov eax, dword [0x00c5b3fc]
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 [0x00724a48]
mov eax, dword [0x00c5b3fc]
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 [0x00c5b3fc]
add eax, 1
mov dword [0x00c5b3fc], eax
jmp 0x45c85b
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
jmp 0x45c90d
nop
mov ecx, 5
call fcn.004450ba
nop
jmp 0x45c91e
nop
jmp 0x45c91e
nop
add rsp, 0xb0
pop rbp
ret