// File: /workspace/github_cpp_makefile_star2_O1/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 0x1a715(%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 0x13810(%rip), %rbx     # 0x1a0f3
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x16274
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x68(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x16274
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x71aa
xorl %r12d, %r12d
movl $0x1, %r15d
movq %rsp, %rbp
xorl %ebx, %ebx
decq %rax
cmpq %r12, %rax
je 0x6efb
movq 0x70(%rsp), %rdx
cmpq $0x30, %rdx
jne 0x69de
cmpq $0x0, 0x48(%rsp)
je 0x6cc0
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6ca3
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 0x6c43
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6c49
movq (%r14), %rax
movzbl (%rax,%r12), %eax
cmpl $0xa, %eax
je 0x6a91
cmpl $0x20, %eax
jne 0x6b2a
movq 0x48(%rsp), %rax
addq %rdx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
ja 0x6b3c
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6de8
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 0x6d92
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6d9a
movq 0x48(%rsp), %rax
addq %rdx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
ja 0x6b96
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6e6d
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 0x6e17
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6e1f
movsbl %al, %esi
leaq 0x68(%rsp), %rdi
callq 0x5200
jmp 0x6d7a
movq %rbp, %rdi
leaq 0x135ac(%rip), %rsi     # 0x1a0f2
leaq 0x68(%rsp), %rdx
callq 0x15e6b
leaq 0x10(%rsp), %r12
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x6b76
callq 0x5230
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x1356a(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d7a
movq 0x68(%rsp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x1353b(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6d78
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 0x6e9c
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x6ea4
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 0x6c8f
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6ca3
callq 0x5230
movq 0x48(%rsp), %rdx
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
leaq 0x1343d(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
incl %ebx
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x6d5d
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 0x166e0
movq 0x8(%rsp), %rsi
movsbl %r12b, %r8d
movl $0x1, %ecx
movq %rbp, %rdi
xorl %edx, %edx
callq 0x5400
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 0x6d52
callq 0x5230
movq %rbx, %r14
movl %r15d, %ebx
movl 0x64(%rsp), %r15d
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x13383(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
incl %ebx
movl %r15d, %r12d
movq 0x8(%r14), %rax
incl %r15d
cmpq %r12, %rax
ja 0x6927
jmp 0x71aa
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 0x6dd4
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6de8
callq 0x5230
leaq 0x40(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5170
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x132e9(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d78
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 0x6e59
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6e6d
callq 0x5230
leaq 0x40(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5170
movq 0x70(%rsp), %rdx
leaq 0x68(%rsp), %rdi
xorl %esi, %esi
leaq 0x13264(%rip), %rcx     # 0x1a0f3
xorl %r8d, %r8d
callq 0x5380
jmp 0x6d78
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 0x6ede
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x6d78
callq 0x5230
jmp 0x6d78
movq (%r14), %rax
movsbl (%rax,%r12), %esi
leaq 0x68(%rsp), %rdi
callq 0x5200
leaq 0x10(%rsp), %r15
movq 0x48(%rsp), %rax
movq 0x70(%rsp), %rcx
addq %rcx, %rax
addq $-0x31, %rax
cmpq $-0x33, %rax
ja 0x6fa4
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x70ab
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
movq %r15, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7059
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x7060
leaq 0x13147(%rip), %rsi     # 0x1a0f2
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
callq 0x15e6b
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x40(%rsp), %rdi
callq 0x50c0
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x6fd9
callq 0x5230
movq (%r13), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x71aa
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), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7126
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x712d
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 0x7097
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x70ab
callq 0x5230
movq (%r13), %rdi
incl %ebx
movl %ebx, %esi
xorl %edx, %edx
callq 0x5280
cmpl $-0x1, %eax
je 0x71aa
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, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7158
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x715f
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbx, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
jmp 0x7188
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq %rbx, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x50d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x7196
callq 0x5230
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x71aa
callq 0x5230
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x71be
callq 0x5230
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x71d2
callq 0x5230
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x71e6
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
jne 0x7261
jmp 0x726b
jmp 0x7268
jmp 0x7268
jmp 0x72a1
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x7261
jmp 0x726b
jmp 0x72a1
jmp 0x7268
jmp 0x72a1
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x7298
jmp 0x72a4
jmp 0x72a1
jmp 0x7233
jmp 0x7268
jmp 0x72a1
jmp 0x7233
jmp 0x7268
jmp 0x72a1
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
jne 0x7261
jmp 0x726b
jmp 0x7268
jmp 0x72a1
jmp 0x72a1
jmp 0x7279
jmp 0x72a1
movq %rax, %rbx
jmp 0x72b8
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x726b
callq 0x5230
jmp 0x726b
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
jmp 0x7293
jmp 0x72a1
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
jne 0x7298
jmp 0x72a4
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x72a4
callq 0x5230
jmp 0x72a4
jmp 0x72a1
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x72b8
callq 0x5230
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x72cc
callq 0x5230
movq %rbx, %rdi
callq 0x53d0