Function at 0x41e1e0
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 0x41e2bd
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 0x41e290
lea rdi, [0x004dce00]
nop dword [rax + rax]
movzx ebx, byte [r12]
test bl, bl
je 0x41e290
lea eax, [rbx - 0x80]
cmp eax, 0x1f
jbe 0x41e2cc
mov rdx, r12
jmp 0x41e27b
sub eax, 0x40
cmp al, 0x1f
ja 0x41e270
test r8b, r8b
jne 0x41e5f1
lea eax, [rbx - 0x80]
mov rdx, rcx
cmp eax, 0x1f
jbe 0x41e2d0
lea rcx, [rdx + 1]
cmp ebx, 0x1b
movzx ebx, byte [rdx + 1]
sete r8b
test bl, bl
mov eax, ebx
jne 0x41e260
mov rcx, r12
call sub.msvcrt.dll_strlen
mov rdx, r12
mov rcx, rsi
mov r8, rax
call fcn.0041e000
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 0x41e290
mov edx, 1
movzx eax, byte [r13]
test al, al
je 0x41e2b0
sub eax, 0x40
mov rbp, r13
cmp eax, 0x3e
jbe 0x41e306
add rbp, 1
movzx eax, byte [rbp]
test al, al
je 0x41e2b0
sub eax, 0x40
cmp eax, 0x3e
ja 0x41e2f2
mov r8, r13
mov rcx, rsi
movzx ebx, bl
sub r8, rdx
mov rdx, r12
sub r8, r12
call fcn.0041e000
movzx eax, byte [rbp]
shl eax, 8
or ebx, eax
cmp bx, 0x465b
je 0x41e5ff
jg 0x41e410
cmp bx, 0x435b
je 0x41e660
jg 0x41e390
cmp bx, 0x415b
je 0x41e835
cmp bx, 0x425b
jne 0x41e383
cmp r13, rbp
je 0x41e998
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov r12d, eax
je 0x41e99e
lea r12, [rbp + 1]
jmp 0x41e240
cmp bx, 0x445b
je 0x41e6e0
cmp bx, 0x455b
jne 0x41e383
cmp r13, rbp
je 0x41ea5a
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e240
cmp bx, 0x4a5b
je 0x41e752
jle 0x41e4b0
cmp bx, 0x665b
je 0x41e51b
cmp bx, 0x6d5b
je 0x41e7c0
cmp bx, 0x4b5b
jne 0x41e383
cmp r13, rbp
je 0x41ea6f
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
test r12d, r12d
movzx ebx, word [rsp + 0x46]
je 0x41ea8a
cmp r12d, 1
je 0x41eb39
movsx r12d, word [rsp + 0x40]
xor eax, eax
jmp 0x41ea9a
cmp bx, 0x475b
jne 0x41e510
cmp r13, rbp
je 0x41eae4
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov r12d, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
sub r12d, 1
movzx ebx, word [rsp + 0x46]
jns 0x41eb02
xor eax, eax
jmp 0x41e6c1
cmp bx, 0x485b
jne 0x41e383
cmp r13, rbp
je 0x41eb1f
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 0x41e97b
call fcn.0048bef0
cmp rbx, qword [rsp + 0x38]
mov r12d, eax
jne 0x41e383
lea rcx, [rbx + 1]
mov r8d, 0xa
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e5c4
movsx r8d, word [rsp + 0x42]
mov edx, r8d
cmp eax, r8d
cmovle edx, eax
xor eax, eax
test ecx, ecx
js 0x41e5d9
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 0x41e383
lea r13, [rdx + 2]
mov edx, 2
jmp 0x41e2de
cmp r13, rbp
je 0x41e9f7
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
movsx edx, word [rsp + 0x46]
mov eax, edx
sub eax, ebx
cmp edx, ebx
mov ebx, 0
jmp 0x41e3f3
cmp r13, rbp
je 0x41e9ed
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e240
cmp r13, rbp
je 0x41ea65
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e383
cmp r13, rbp
je 0x41ea01
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
cmp ebx, 1
je 0x41eb6b
cmp ebx, 2
je 0x41eb4a
test ebx, ebx
je 0x41ea17
movsx edx, word [rsp + 0x42]
xor ecx, ecx
xor eax, eax
xor r8d, r8d
jmp 0x41ea38
cmp r13, rbp
je 0x41eb2f
lea r14, [rsp + 0x38]
xor r12d, r12d
xor ebx, ebx
mov rdx, r14
mov r8d, 0xa
mov rcx, r13
call fcn.0048bef0
mov rdx, qword [rsp + 0x38]
cmp byte [rdx], 0x3b
je 0x41e7f3
cmp rdx, rbp
jne case.0x41e801.38
cmp eax, 0x31
ja case.0x41e801.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 0x41e7d3
cmp r12w, 0xffff
jne 0x41e88c
movzx edx, bx
lea r12, [rbp + 1]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SetConsoleTextAttribute]
jmp 0x41e240
cmp r13, rbp
je 0x41eb15
lea r14, [rsp + 0x38]
mov r8d, 0xa
mov rcx, r13
mov rdx, r14
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, eax
jne 0x41e383
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
movsx edx, word [rsp + 0x46]
mov eax, edx
sub eax, ebx
cmp edx, ebx
mov ebx, 0
jmp 0x41e9ca
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e820
mov edx, r12d
not edx
and dx, word [rsp + 0x48]
or ebx, edx
jmp 0x41e820
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.0x41e801.2
or ebx, 7
or r12d, 7
jmp case.0x41e801.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.0x41e801.2
and bh, 0xbf
or r12w, 0x4000
jmp case.0x41e801.2
and bl, 0x7f
or r12b, 0x80
jmp case.0x41e801.2
and bx, 0x7fff
or r12w, 0x8000
jmp case.0x41e801.2
and ebx, 0xfffffff7
or r12d, 8
jmp case.0x41e801.2
or bh, 0x40
jmp case.0x41e801.2
or bl, 0x80
jmp case.0x41e801.2
or bx, 0x8000
jmp case.0x41e801.2
or ebx, 8
jmp case.0x41e801.2
or ebx, 7
mov r12d, 0xffffffff
jmp case.0x41e801.2
call fcn.0048bef0
cmp qword [rsp + 0x38], rbp
mov ebx, 1
mov r12d, eax
jne 0x41e383
jmp 0x41e586
mov r12d, 1
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e240
mov ebx, 1
jmp 0x41e68c
mov ebx, 1
jmp 0x41e62b
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e383
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 0x41eaa4
mov r12d, 1
jmp 0x41e3cb
mov ebx, 1
jmp 0x41e70c
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
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 0x41e240
lea rdx, [rsp + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x41e383
movzx ebx, word [rsp + 0x46]
xor r12d, r12d
movsx edx, word [rsp + 0x40]
mov eax, edx
cmp edx, r12d
cmovge eax, r12d
jmp 0x41e6c1
mov ebx, 1
jmp 0x41e861
mov ebx, 1
mov r12d, 1
jmp 0x41e586
mov edx, 7
jmp 0x41e823
movsx r12d, word [rsp + 0x44]
xor eax, eax
add r12d, 1
jmp 0x41ea9a
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 0x41ea38
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 0x41ea38