// File: /workspace/github_cpp_makefile_star2_O3/essarrdee[P]mutantaliens/mutantaliens.cpp
// Function: pretty_print(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void pretty_print(std::string s)
{
	attron(COLOR_PAIR(COLOR_WHITE));
	int current_line = 0;
	std::string line_so_far = "";
	std::string word_so_far = "";
	for(unsigned int i = 0; i<s.length();i++)
	{
		
		if(i == s.length()-1)
		{
			word_so_far += s[i];
			if(line_so_far.length() + word_so_far.length()+1 > viewport_width)
			{
				mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
				mvaddstr(current_line+1,0,(word_so_far+std::string(viewport_width-word_so_far.length(),' ')).c_str());
				return;
			}
			else
			{
				line_so_far += " " + word_so_far;
				mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
				return;
			}
		}
		else if(word_so_far.length() == viewport_width-1)
		{
			if(line_so_far.length())
			{
			mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
			current_line++;
			line_so_far = "";
			}
			mvaddstr(current_line,0,(word_so_far + s[i]).c_str());
			current_line++;
			word_so_far = "";
		}
		else if(s[i] == ' ')
		{
			if(line_so_far.length() + word_so_far.length()+1 > viewport_width)
			{
				mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
				line_so_far = word_so_far;
				word_so_far = "";
				current_line++;
			}
			else
			{
				line_so_far += " " + word_so_far;
				word_so_far = "";
			}
		}
		else if(s[i] == '\n')
		{
			if(line_so_far.length() + word_so_far.length() +1> viewport_width)
			{
				mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
				line_so_far = word_so_far;
				word_so_far = "";
			}
			else
			{
				line_so_far += word_so_far;
				word_so_far = "";
				mvaddstr(current_line,0,(line_so_far+std::string(viewport_width-line_so_far.length(),' ')).c_str());
			}
			current_line++;
		}
		else
		{
			word_so_far += s[i];
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %r14
movq 0x1a72e(%rip), %r13     # 0x20fd8
movq (%r13), %rdi
movl $0x700, %esi            # imm = 0x700
xorl %edx, %edx
callq 0x5150
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x13899(%rip), %rbx     # 0x1a163
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x15b1a
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x68(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x15b1a
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x7198
xorl %r12d, %r12d
movl $0x1, %r15d
movq %rsp, %rbp
xorl %ebx, %ebx
decq %rax
cmpq %r12, %rax
je 0x6ee2
movq 0x70(%rsp), %rdx
cmpq $0x30, %rdx
jne 0x69c5
cmpq $0x0, 0x48(%rsp)
je 0x6ca7
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6c8a
movl %ebx, 0x64(%rsp)
movq %r14, %rbx
movq %r13, %r14
movq (%r13), %rbp
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %r13
movq %r13, %rdi
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r14, %r13
je 0x6c2a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6c30
movq (%r14), %rax
movzbl (%rax,%r12), %eax
cmpl $0xa, %eax
je 0x6a78
cmpl $0x20, %eax
jne 0x6b11
movq 0x48(%rsp), %rax
addq %rdx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
ja 0x6b23
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6dcf
movq (%r13), %rbp
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r12
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6d79
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6d81
movq 0x48(%rsp), %rax
addq %rdx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
ja 0x6b7d
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6e54
movq (%r13), %rbp
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r12
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6dfe
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6e06
movsbl %al, %esi
leaq 0x68(%rsp), %rdi
callq 0x5200
jmp 0x6d61
movq %rbp, %rdi
leaq 0x13635(%rip), %rsi     # 0x1a162
leaq 0x68(%rsp), %rdx
callq 0x157ab
leaq 0x10(%rsp), %r12
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x6b5d
callq 0x5230
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x135f3(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d61
movq 0x68(%rsp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x135c4(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6d5f
movq (%r13), %rbp
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r12
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6e83
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6e8b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rbx, %r14
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbp, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movl 0x64(%rsp), %ebx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
movq %rsp, %rbp
je 0x6c76
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6c8a
callq 0x5230
movq 0x48(%rsp), %rdx
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
leaq 0x134c6(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
incl %ebx
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6d44
movl %r15d, 0x64(%rsp)
movl %ebx, %r15d
movq %r14, %rax
movq %r13, %r14
movq (%r13), %r13
movq %rax, %rbx
movq (%rax), %rax
movb (%rax,%r12), %r12b
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x15f56
movq 0x8(%rsp), %rsi
movsbl %r12b, %r8d
movl $0x1, %ecx
movq %rbp, %rdi
xorl %edx, %edx
callq 0x53f0
movq (%rsp), %rsi
movq %r13, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
leaq 0x10(%rsp), %r12
callq 0x50d0
movq (%rsp), %rdi
cmpq %r12, %rdi
movq %rsp, %rbp
movq %r14, %r13
je 0x6d39
callq 0x5230
movq %rbx, %r14
movl %r15d, %ebx
movl 0x64(%rsp), %r15d
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x1340c(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
incl %ebx
movl %r15d, %r12d
movq 0x8(%r14), %rax
incl %r15d
cmpq %r12, %rax
ja 0x690e
jmp 0x7198
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbp, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r12, %rdi
movq %rsp, %rbp
je 0x6dbb
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6dcf
callq 0x5230
leaq 0x40(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5170
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x13372(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d5f
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbp, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r12, %rdi
movq %rsp, %rbp
je 0x6e40
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6e54
callq 0x5230
leaq 0x40(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5170
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x132ed(%rip), %rcx     # 0x1a163
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d5f
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbp, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r12, %rdi
movq %rsp, %rbp
je 0x6ec5
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6d5f
callq 0x5230
jmp 0x6d5f
movq (%r14), %rax
movsbl (%rax,%r12), %esi
leaq 0x68(%rsp), %rdi
callq 0x5200
movq 0x48(%rsp), %rax
movq 0x70(%rsp), %rcx
addq %rcx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
leaq 0x10(%rsp), %r14
ja 0x6f94
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x709b
movq (%r13), %r14
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7049
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x7050
leaq 0x131c7(%rip), %rsi     # 0x1a162
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
callq 0x157ab
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x6fc9
callq 0x5230
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x7198
movq (%r13), %rbx
movl $0x31, %esi
subq 0x48(%rsp), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl $0x20, %edx
callq 0x52c0
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r14
movq %r14, (%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x7116
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x7120
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %r14, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x7087
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x709b
callq 0x5230
movq (%r13), %rdi
incl %ebx
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x7198
movq (%r13), %rbx
movl $0x31, %esi
subq 0x70(%rsp), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
movq %rax, (%rdi)
movl $0x20, %edx
callq 0x52c0
movq 0x68(%rsp), %rcx
movq 0x70(%rsp), %r8
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5290
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x7147
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x7151
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %r14, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
jmp 0x7176
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %r14, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x7184
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x7198
callq 0x5230
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x71ac
callq 0x5230
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x71c0
callq 0x5230
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x71d4
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
jne 0x724f
jmp 0x7259
jmp 0x7256
jmp 0x7256
jmp 0x728f
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x724f
jmp 0x7259
jmp 0x728f
jmp 0x7256
jmp 0x728f
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
jne 0x7286
jmp 0x7292
jmp 0x728f
jmp 0x7221
jmp 0x7256
jmp 0x728f
jmp 0x7221
jmp 0x7256
jmp 0x728f
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
jne 0x724f
jmp 0x7259
jmp 0x7256
jmp 0x728f
jmp 0x728f
jmp 0x7267
jmp 0x728f
movq %rax, %rbx
jmp 0x72a6
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x7259
callq 0x5230
jmp 0x7259
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
jmp 0x7281
jmp 0x728f
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
jne 0x7286
jmp 0x7292
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x7292
callq 0x5230
jmp 0x7292
jmp 0x728f
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x72a6
callq 0x5230
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x72ba
callq 0x5230
movq %rbx, %rdi
callq 0x53d0