Function at 0x453f90
Capabilities:
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x20]
sub esp, 4
push 0xfffffff5
call sub.KERNEL32.dll_GetStdHandle
add esp, 4
mov dword [ebp - 4], eax
cmp eax, 0xffffffff
je 0x4541db
cmp byte [edi], 0x50
jle 0x453fc8
mov byte [edi], 0x50
mov ebx, dword [ebx]
movsx ecx, byte [esi]
mov dword [ebp - 8], ebx
mov eax, dword [ebp + 0x1c]
and ecx, 8
je 0x453ff3
movsx eax, byte [eax]
movsx ecx, byte [esi]
movsx dx, byte [esi]
and eax, 0x80
and ecx, 7
test eax, eax
jne 0x453ff7
mov cx, dx
jmp 0x453ff7
movsx cx, byte [esi]
mov eax, dword [ebp + 0x1c]
mov dl, byte [edi]
mov byte [ebp - 9], dl
movsx ecx, cx
movsx eax, byte [eax]
shl ecx, 4
add eax, ecx
movsx ecx, byte [ebp - 9]
mov word [0x3a68a8c], ax
dec ecx
mov esi, ecx
test ecx, ecx
jle 0x454094
lea eax, [0x3a68a8e]
cmp ecx, 6
jle 0x454082
mov di, word [0x3a68a8c]
sub esi, 7
mov word [eax], di
cmp esi, 6
mov dx, word [0x3a68a8c]
mov word [eax + 2], dx
lea eax, [eax + 0xe]
mov cx, word [0x3a68a8c]
mov word [eax - 0xa], cx
mov di, word [0x3a68a8c]
mov word [eax - 8], di
mov dx, word [0x3a68a8c]
mov word [eax - 6], dx
mov cx, word [0x3a68a8c]
mov word [eax - 4], cx
mov di, word [0x3a68a8c]
mov word [eax - 2], di
jg 0x454027
test esi, esi
jle 0x454094
mov dx, word [0x3a68a8c]
dec esi
mov word [eax], dx
lea eax, [eax + 2]
test esi, esi
jg 0x454082
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x10], 1
movsx ecx, byte [ecx]
mov dword [ebp - 0x14], ecx
test ecx, ecx
jle 0x4541db
movsx edx, byte [edi]
dec edx
mov word [ebp - 0x18], dx
movsx edx, byte [ebp - 9]
test edx, edx
jle 0x454149
mov esi, 0
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
dec ecx
mov ebx, ecx
sub edi, ebx
test edi, edi
jge 0x4540d9
xor edi, edi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 8]
mov eax, 1
add esi, ebx
mov dword [ebp - 0x1c], edi
mov ecx, edi
lea edi, [0x4af8d0]
push 0x20
call fcn.0046e4c8
add esp, 4
test eax, eax
mov esi, dword [ebp - 0x20]
je 0x45410e
mov byte [esi + 0x3a68b2c], 0x20
jmp 0x45413a
lea edi, [0x3a68b2c]
mov esi, dword [ebp - 8]
add edi, dword [ebp - 0x20]
add esi, ebx
mov eax, dword [ebp - 0x1c]
mov ecx, 1
call fcn.0046f930
mov eax, 0x20
call fcn.0046e6bd
mov ebx, dword [ebp - 0x10]
inc ebx
mov dword [ebp - 0x10], ebx
mov edi, dword [ebp - 0x20]
inc edi
dec edx
mov esi, edi
test edx, edx
jg 0x4540c8
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0x24]
movsx eax, byte [eax]
mov cx, word [ebp - 0x18]
mov word [0x3a68a82], cx
dec eax
cmp dword [ebx], 0
mov word [0x3a68a80], ax
je 0x454192
mov edi, dword [0x3a68a80]
lea esi, [0x3a68a88]
movsx edx, byte [ebp - 9]
sub esp, 4
lea eax, [0x3a68b2c]
push esi
push edi
push edx
push eax
push dword [ebp - 4]
call sub.KERNEL32.dll_WriteConsoleOutputCharacterA
add esp, 4
mov ebx, dword [ebp + 0x28]
mov esi, dword [0x3a68a80]
cmp dword [ebx], 0
movsx eax, byte [ebp - 9]
je 0x4541c2
sub esp, 4
lea edx, [0x3a68a88]
lea edi, [0x3a68a8c]
push edx
push esi
push eax
push edi
push dword [ebp - 4]
call sub.KERNEL32.dll_WriteConsoleOutputAttribute
add esp, 4
mov edi, dword [ebp - 0x14]
mov bx, word [ebp - 0x18]
inc bx
dec edi
mov word [ebp - 0x18], bx
mov dword [ebp - 0x14], edi
test edi, edi
jg 0x4540b7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24