Function at 0x42c3f0
Capabilities:
Manipulate console buffer

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x60
mov rbx, rdx
mov r12, rcx
mov rcx, rdx
call qword [sym.imp.msvcrt.dll__fileno]
mov ecx, eax
call qword [sym.imp.msvcrt.dll__get_osfhandle]
mov rsi, rax
mov eax, 0xffffffff
cmp rsi, 0xffffffffffffffff
je 0x42c4cd
mov rcx, rbx
call sub.msvcrt.dll_fflush
lea rdx, [rsp + 0x30]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleMode]
test eax, eax
je 0x42c4a0
lea rdi, [0x004f3780]
nop dword [rax + rax]
movzx ebx, byte [r12]
test bl, bl
je 0x42c4a0
lea eax, [rbx - 0x80]
cmp eax, 0x1f
jbe 0x42c4dc
mov rdx, r12
jmp 0x42c48b
sub eax, 0x40
cmp al, 0x1f
ja 0x42c480
test r8b, r8b
jne 0x42c801
lea eax, [rbx - 0x80]
mov rdx, rcx
cmp eax, 0x1f
jbe 0x42c4e0
lea rcx, [rdx + 1]
cmp ebx, 0x1b
movzx ebx, byte [rdx + 1]
sete r8b
test bl, bl
mov eax, ebx
jne 0x42c470
mov rcx, r12
call sub.msvcrt.dll_strlen
mov rdx, r12
mov rcx, rsi
mov r8, rax
call fcn.0042c210
nop word cs:[rax + rax]
mov ecx, esi
call qword [sym.imp.msvcrt.dll__close]
mov eax, 1
add rsp, 0x60
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
mov rcx, r12
nop
lea r13, [rcx + 1]
sub ebx, 0x40
je 0x42c4a0
mov edx, 1
movzx eax, byte [r13]
test al, al
je 0x42c4c0
sub eax, 0x40
mov rbp, r13
cmp eax, 0x3e
jbe 0x42c516
add rbp, 1
movzx eax, byte [rbp]
test al, al
je 0x42c4c0
sub eax, 0x40
cmp eax, 0x3e
ja 0x42c502
mov r8, r13
mov rcx, rsi
movzx ebx, bl
sub r8, rdx
mov rdx, r12
sub r8, r12
call fcn.0042c210
movzx eax, byte [rbp]
shl eax, 8
or ebx, eax
cmp bx, 0x465b
je 0x42c80f
jg 0x42c620
cmp bx, 0x435b
je 0x42c870
jg 0x42c5a0
cmp bx, 0x415b
je 0x42ca45
cmp bx, 0x425b
jne 0x42c593
cmp r13, rbp
je 0x42cba8
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov r12d, eax
je 0x42cbae
lea r12, [rbp + 1]
jmp 0x42c450
cmp bx, 0x445b
je 0x42c8f0
cmp bx, 0x455b
jne 0x42c593
cmp r13, rbp
je 0x42cc6a
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx ecx, word [rsp + 0x46]
movsx edx, word [rsp + 0x42]
mov eax, ecx
mov ebx, edx
sub edx, ecx
add eax, r12d
cmp edx, r12d
cmovg ebx, eax
mov rcx, rsi
lea r12, [rbp + 1]
shl ebx, 0x10
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
jmp 0x42c450
cmp bx, 0x4a5b
je 0x42c962
jle 0x42c6c0
cmp bx, 0x665b
je 0x42c72b
cmp bx, 0x6d5b
je 0x42c9d0
cmp bx, 0x4b5b
jne 0x42c593
cmp r13, rbp
je 0x42cc7f
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
test r12d, r12d
movzx ebx, word [rsp + 0x46]
je 0x42cc9a
cmp r12d, 1
je 0x42cd49
movsx r12d, word [rsp + 0x40]
xor eax, eax
jmp 0x42ccaa
cmp bx, 0x475b
jne 0x42c720
cmp r13, rbp
je 0x42ccf4
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
sub r12d, 1
movzx ebx, word [rsp + 0x46]
jns 0x42cd12
xor eax, eax
jmp 0x42c8d1
cmp bx, 0x485b
jne 0x42c593
cmp r13, rbp
je 0x42cd2f
mov r8, rbp
mov edx, 0x3b
mov rcx, r13
lea r14, [rsp + 0x38]
sub r8, r13
call sub.msvcrt.dll_memchr
mov r8d, 0xa
mov rdx, r14
mov rcx, r13
test rax, rax
mov rbx, rax
je 0x42cb8b
call sub.msvcrt.dll_strtol
cmp rbx, qword [rsp + 0x38]
mov r12d, eax
jne 0x42c593
lea rcx, [rbx + 1]
mov r8d, 0xa
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx eax, word [rsp + 0x4c]
movsx edx, word [rsp + 0x4a]
lea eax, [r12 + rax - 1]
lea ecx, [rbx + rdx - 1]
xor edx, edx
test eax, eax
js 0x42c7d4
movsx r8d, word [rsp + 0x42]
mov edx, r8d
cmp eax, r8d
cmovle edx, eax
xor eax, eax
test ecx, ecx
js 0x42c7e9
movsx r8d, word [rsp + 0x40]
mov eax, r8d
cmp ecx, r8d
cmovle eax, ecx
shl edx, 0x10
movzx eax, ax
or eax, edx
mov rcx, rsi
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
jmp 0x42c593
lea r13, [rdx + 2]
mov edx, 2
jmp 0x42c4ee
cmp r13, rbp
je 0x42cc07
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx edx, word [rsp + 0x46]
mov eax, edx
sub eax, ebx
cmp edx, ebx
mov ebx, 0
jmp 0x42c603
cmp r13, rbp
je 0x42cbfd
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx r8d, word [rsp + 0x44]
movsx ecx, word [rsp + 0x40]
mov edx, r8d
mov eax, ecx
sub ecx, r8d
add edx, ebx
cmp ecx, ebx
movzx ebx, word [rsp + 0x46]
cmovg eax, edx
mov edx, ebx
movzx ebx, ax
lea r12, [rbp + 1]
shl edx, 0x10
mov rcx, rsi
or ebx, edx
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
jmp 0x42c450
cmp r13, rbp
je 0x42cc75
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx edx, word [rsp + 0x44]
mov rcx, rsi
mov eax, edx
sub eax, ebx
cmp edx, ebx
mov ebx, 0
cmovg ebx, eax
movzx eax, word [rsp + 0x46]
movzx ebx, bx
shl eax, 0x10
or ebx, eax
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
jmp 0x42c593
cmp r13, rbp
je 0x42cc11
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
cmp ebx, 1
je 0x42cd7b
cmp ebx, 2
je 0x42cd5a
test ebx, ebx
je 0x42cc27
movsx edx, word [rsp + 0x42]
xor ecx, ecx
xor eax, eax
xor r8d, r8d
jmp 0x42cc48
cmp r13, rbp
je 0x42cd3f
lea r14, [rsp + 0x38]
xor r12d, r12d
xor ebx, ebx
mov rdx, r14
mov r8d, 0xa
mov rcx, r13
call sub.msvcrt.dll_strtol
mov rdx, qword [rsp + 0x38]
cmp byte [rdx], 0x3b
je 0x42ca03
cmp rdx, rbp
jne case.0x42ca11.38
cmp eax, 0x31
ja case.0x42ca11.2
mov ecx, eax
movsxd r8, dword [rdi + rcx*4]
add r8, rdi
jmp r8
and ebx, 0xffffff8f
or r12d, 0x70
nop dword [rax + rax]
lea r13, [rdx + 1]
cmp r13, rbp
jne 0x42c9e3
cmp r12w, 0xffff
jne 0x42ca9c
movzx edx, bx
lea r12, [rbp + 1]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SetConsoleTextAttribute]
jmp 0x42c450
cmp r13, rbp
je 0x42cd25
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x42c593
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx edx, word [rsp + 0x46]
mov eax, edx
sub eax, ebx
cmp edx, ebx
mov ebx, 0
jmp 0x42cbda
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42ca30
mov edx, r12d
not edx
and dx, word [rsp + 0x48]
or ebx, edx
jmp 0x42ca30
and ebx, 0xffffff8f
sub eax, 0x28
mov ecx, ebx
or ecx, 0x40
test al, 1
cmovne ebx, ecx
mov ecx, ebx
or ecx, 0x20
test al, 2
cmovne ebx, ecx
mov ecx, ebx
or ecx, 0x10
test al, 4
cmovne ebx, ecx
or r12d, 0x70
jmp case.0x42ca11.2
or ebx, 7
or r12d, 7
jmp case.0x42ca11.2
and ebx, 0xfffffff8
sub eax, 0x1e
mov ecx, ebx
or ecx, 4
test al, 1
cmovne ebx, ecx
mov ecx, ebx
or ecx, 2
test al, 2
cmovne ebx, ecx
mov ecx, ebx
or ecx, 1
test al, 4
cmovne ebx, ecx
or r12d, 7
jmp case.0x42ca11.2
and bh, 0xbf
or r12w, 0x4000
jmp case.0x42ca11.2
and bl, 0x7f
or r12b, 0x80
jmp case.0x42ca11.2
and bx, 0x7fff
or r12w, 0x8000
jmp case.0x42ca11.2
and ebx, 0xfffffff7
or r12d, 8
jmp case.0x42ca11.2
or bh, 0x40
jmp case.0x42ca11.2
or bl, 0x80
jmp case.0x42ca11.2
or bx, 0x8000
jmp case.0x42ca11.2
or ebx, 8
jmp case.0x42ca11.2
or ebx, 7
mov r12d, 0xffffffff
jmp case.0x42ca11.2
call sub.msvcrt.dll_strtol
cmp qword [rsp + 0x38], rbp
mov ebx, 1
mov r12d, eax
jne 0x42c593
jmp 0x42c796
mov r12d, 1
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx ecx, word [rsp + 0x46]
movsx edx, word [rsp + 0x42]
mov eax, ecx
mov ebx, edx
sub edx, ecx
add eax, r12d
cmp edx, r12d
cmovg ebx, eax
mov rcx, rsi
lea r12, [rbp + 1]
mov eax, ebx
movzx ebx, word [rsp + 0x44]
shl eax, 0x10
or ebx, eax
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
jmp 0x42c450
mov ebx, 1
jmp 0x42c89c
mov ebx, 1
jmp 0x42c83b
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movsx edx, word [rsp + 0x44]
movsx r8d, word [rsp + 0x40]
movsx r9d, word [rsp + 0x46]
mov eax, edx
sub r8d, edx
movsx edx, word [rsp + 0x50]
mov ecx, r9d
sub edx, r9d
test edx, edx
js 0x42c593
movsx r12d, word [rsp + 0x40]
shl ecx, 0x10
movzx eax, ax
or eax, ecx
mov ebx, eax
imul edx, r12d
lea r12d, [rdx + r8]
jmp 0x42ccb4
mov r12d, 1
jmp 0x42c5db
mov ebx, 1
jmp 0x42c91c
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movzx ebx, word [rsp + 0x46]
movsx edx, word [rsp + 0x44]
movsx r12d, word [rsp + 0x40]
mov eax, edx
sub r12d, edx
mov edx, ebx
movzx ebx, ax
shl edx, 0x10
or ebx, edx
lea r13, [rsp + 0x34]
mov r8d, r12d
mov r9d, ebx
mov edx, 0x20
mov rcx, rsi
mov qword [rsp + 0x20], r13
call qword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
mov r8d, r12d
movzx edx, word [rsp + 0x48]
mov r9d, ebx
mov qword [rsp + 0x20], r13
lea r12, [rbp + 1]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FillConsoleOutputAttribute]
jmp 0x42c450
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x42c593
movzx ebx, word [rsp + 0x46]
xor r12d, r12d
movsx edx, word [rsp + 0x40]
mov eax, edx
cmp edx, r12d
cmovge eax, r12d
jmp 0x42c8d1
mov ebx, 1
jmp 0x42ca71
mov ebx, 1
mov r12d, 1
jmp 0x42c796
mov edx, 7
jmp 0x42ca33
movsx r12d, word [rsp + 0x44]
xor eax, eax
add r12d, 1
jmp 0x42ccaa
movsx r8d, word [rsp + 0x4c]
movsx edx, word [rsp + 0x50]
movzx eax, word [rsp + 0x4a]
mov ecx, r8d
sub edx, r8d
xor r8d, r8d
add edx, 1
jmp 0x42cc48
movsx eax, word [rsp + 0x4c]
movsx r8d, word [rsp + 0x44]
movsx edx, word [rsp + 0x46]
mov ecx, eax
add r8d, 1
sub edx, eax
xor eax, eax
jmp 0x42cc48