// File: essarrdee[P]mutantaliens/mutantaliens.cpp
// Function: pretty_print_message_words()
void pretty_print_message_words()
{
	attron(COLOR_PAIR(COLOR_WHITE));
	int line_number = message_area_height-1;
	std::string line_so_far = "";
	int word_number = rlmessage_words.size()-1;
	int position = -1;
	std::string word;
	bool boundary_on_this_line = false;
	int boundary_position = -1;
	bool already_seen = (last_word_seen == rlmessage_words.size()-1);
	while(line_number >= 0 && word_number >= 0)
	{
		bool next_line = false;
		bool next_word = false;
		if(position == -1) // start a new word
		{
			word = rlmessage_words[word_number];
			position = word.length();
		}
		int line_chars_remaining = viewport_width - 1 - line_so_far.length();
		if(line_chars_remaining >= position+1) // whole remainder of word fits
		{
			line_so_far = word.substr(0,position) + ' ' + line_so_far;
			next_word = true;
		}
		else if(position >= viewport_width-1) // remainder of word couldn't possibly fit on an empty line, or exactly fits
		{
			line_so_far = word.substr(position-line_chars_remaining,line_chars_remaining) + ' ' + line_so_far;
			position -= line_chars_remaining;
			if(position == 0)
			{
				next_word = true;
			}
			next_line = true;
		}
		else // remainder of word would not fit on this line but would fit on an empty line
		{
			next_line = true;
		}
		if(next_word)
		{
			position = -1;
			word_number--;
			if(word_number == last_word_seen && last_word_seen != rlmessage_words.size()-1)
			{
				boundary_on_this_line = true;
				boundary_position = line_so_far.length();
				already_seen = true;
			}
		}


		if(next_line)
		{
			if(!already_seen)
			{
				attron(A_BOLD);
				mvaddstr(line_number,0,line_so_far.c_str());
				attroff(A_BOLD);
			}
			else
			{
				if(boundary_on_this_line)
				{
					attroff(A_BOLD);
					mvaddstr(line_number,0,line_so_far.substr(0,line_so_far.length()-boundary_position).c_str());
					attron(A_BOLD);
					mvaddstr(line_number,line_so_far.length()-boundary_position,line_so_far.substr(line_so_far.length()-boundary_position,boundary_position).c_str());
					attroff(A_BOLD);
					boundary_on_this_line = false;
				}
				else
				{
					attroff(A_BOLD);
					mvaddstr(line_number,0,line_so_far.c_str());
				}
			}
			line_number--;
			line_so_far = "";
		}
		
	}
	{
		if(!already_seen)
		{
			attron(A_BOLD);
			mvaddstr(line_number,0,line_so_far.c_str());
			attroff(A_BOLD);
		}
		else
		{
			if(boundary_on_this_line)
			{
				attroff(A_BOLD);
				mvaddstr(line_number,0,line_so_far.substr(0,line_so_far.length()-boundary_position).c_str());
				attron(A_BOLD);
				mvaddstr(line_number,line_so_far.length()-boundary_position,line_so_far.substr(line_so_far.length()-boundary_position,boundary_position).c_str());
				attroff(A_BOLD);
				boundary_on_this_line = false;
			}
			else
			{
				attroff(A_BOLD);
				mvaddstr(line_number,0,line_so_far.c_str());
			}
		}
		line_number--;
		line_so_far = "";
	}
	//last_word_seen  = rlmessage_words.size()-1;
	//if(last_word_seen < (int)rlmessage_words.size())
	//	attron(A_BOLD);
	//unsigned int colour_change_offset = 2*viewport_width;
	//int word_number = rlmessage_words.size()-1;
	//int word_position = -1;
	//for(int line = message_area_height-1; line >= 0; line--)
	//{
	//	std::string line_to_print;
	//	for(line_to_print = "";
	//		word_number >= 0 && (line_to_print.length() + rlmessage_words[word_number].length() < viewport_width
	//		                 || (word_position != -1));
	//		word_number--)
	//	{
	//		if(word_position == -1)
	//		{
	//			if((int)rlmessage_words[word_number].length() > viewport_width-1)
	//			{
	//				line_to_print = rlmessage_words[word_number].substr(rlmessage_words[word_number].length()-viewport_width+1+line_to_print.length(),viewport_width-line_to_print.length()-1)+' '+line_to_print;
	//				word_number++;
	//				word_position = rlmessage_words[word_number].length()-viewport_width+1+line_to_print.length();
	//			}
	//			else 
	//			{
	//				line_to_print = rlmessage_words[word_number] + ' ' + line_to_print;
	//				if(word_number == last_word_seen)
	//				{
	//					colour_change_offset = line_to_print.length();
	//				}
	//			}
	//		}
	//		else
	//		{
	//			if(word_position > viewport_width-1)
	//			{
	//				line_to_print = rlmessage_words[word_number].substr(word_position - viewport_width+1,viewport_width-1);
	//				word_number++;
	//				word_position = word_position - viewport_width+1;
	//			}
	//			else
	//			{
	//				line_to_print = rlmessage_words[word_number].substr(0,word_position);
	//				word_position = -1;
	//			}
	//		}
	//	}
	//	if(colour_change_offset != 2*viewport_width)
	//	{
	//		attroff(A_BOLD);
	//		mvaddstr(line,0,line_to_print.substr(0,line_to_print.length()-colour_change_offset).c_str());
	//		attron(A_BOLD);
	//		mvaddstr(line,line_to_print.length()-colour_change_offset,line_to_print.substr(line_to_print.length()-colour_change_offset).c_str());
	//		attroff(A_BOLD);
	//		colour_change_offset = 2*viewport_width;
	//	}
	//	else
	//	{
	//		mvaddstr(line,0,line_to_print.c_str());
	//	}
	//}
	////last_word_seen  = rlmessage_words.size();
	//attroff(A_BOLD);
}

// Assembly:
subq $0x2a8, %rsp            # imm = 0x2A8
movq 0x34782(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x700, %esi            # imm = 0x700
callq 0x51a0
movl $0x5, 0x2a4(%rsp)
leaq 0x27f(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x5490
movq 0xc8(%rsp), %rdx
leaq 0x277c3(%rip), %rsi     # 0x2e061
leaq 0x280(%rsp), %rdi
callq 0x53d0
jmp 0x68ad
leaq 0x27f(%rsp), %rdi
callq 0x5310
leaq 0x819ff(%rip), %rdi     # 0x882c0
callq 0x1fe40
subq $0x1, %rax
movl %eax, 0x268(%rsp)
movl $0xffffffff, 0x264(%rsp) # imm = 0xFFFFFFFF
leaq 0x240(%rsp), %rdi
callq 0x53e0
movb $0x0, 0x23f(%rsp)
movl $0xffffffff, 0x238(%rsp) # imm = 0xFFFFFFFF
movslq 0x819d9(%rip), %rax     # 0x882dc
movq %rax, 0xc0(%rsp)
leaq 0x819ae(%rip), %rdi     # 0x882c0
callq 0x1fe40
movq %rax, %rcx
movq 0xc0(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movb %al, 0x237(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x2a4(%rsp)
movb %al, 0xbf(%rsp)
jl 0x695a
cmpl $0x0, 0x268(%rsp)
setge %al
movb %al, 0xbf(%rsp)
movb 0xbf(%rsp), %al
testb $0x1, %al
jne 0x696a
jmp 0x70d9
movb $0x0, 0x236(%rsp)
movb $0x0, 0x235(%rsp)
cmpl $-0x1, 0x264(%rsp)
jne 0x69ff
movslq 0x268(%rsp), %rsi
leaq 0x8192d(%rip), %rdi     # 0x882c0
callq 0x1fe60
movq %rax, %rsi
leaq 0x240(%rsp), %rdi
callq 0x5040
jmp 0x69aa
leaq 0x240(%rsp), %rdi
callq 0x5410
movl %eax, 0x264(%rsp)
jmp 0x69ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
leaq 0x27f(%rsp), %rdi
callq 0x5310
jmp 0x74be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
jmp 0x74a4
leaq 0x280(%rsp), %rdi
callq 0x5410
movq %rax, %rcx
movl $0x30, %eax
subq %rcx, %rax
movl %eax, 0x230(%rsp)
movl 0x230(%rsp), %eax
movl 0x264(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jl 0x6b27
movslq 0x264(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x1d0(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x52e0
jmp 0x6a5a
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
movl $0x20, %edx
callq 0x1fed0
jmp 0x6a76
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
leaq 0x280(%rsp), %rdx
callq 0x1fe80
jmp 0x6a95
leaq 0x280(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x5370
leaq 0x210(%rsp), %rdi
callq 0x54f8
leaq 0x1f0(%rsp), %rdi
callq 0x54f8
leaq 0x1d0(%rsp), %rdi
callq 0x54f8
movb $0x1, 0x235(%rsp)
jmp 0x6c61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
jmp 0x6b15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
leaq 0x1f0(%rsp), %rdi
callq 0x54f8
leaq 0x1d0(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
cmpl $0x30, 0x264(%rsp)
jl 0x6c57
movl 0x264(%rsp), %eax
movslq 0x230(%rsp), %rcx
movl %ecx, %edx
subl %edx, %eax
movslq %eax, %rdx
leaq 0x170(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x52e0
jmp 0x6b62
leaq 0x190(%rsp), %rdi
leaq 0x170(%rsp), %rsi
movl $0x20, %edx
callq 0x1fed0
jmp 0x6b7e
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x280(%rsp), %rdx
callq 0x1fe80
jmp 0x6b9d
leaq 0x280(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x5370
leaq 0x1b0(%rsp), %rdi
callq 0x54f8
leaq 0x190(%rsp), %rdi
callq 0x54f8
leaq 0x170(%rsp), %rdi
callq 0x54f8
movl 0x230(%rsp), %ecx
movl 0x264(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x264(%rsp)
cmpl $0x0, 0x264(%rsp)
jne 0x6c4d
movb $0x1, 0x235(%rsp)
jmp 0x6c4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
jmp 0x6c3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
leaq 0x190(%rsp), %rdi
callq 0x54f8
leaq 0x170(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
movb $0x1, 0x236(%rsp)
jmp 0x6c5f
movb $0x1, 0x236(%rsp)
jmp 0x6c61
testb $0x1, 0x235(%rsp)
je 0x6cef
movl $0xffffffff, 0x264(%rsp) # imm = 0xFFFFFFFF
movl 0x268(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x268(%rsp)
movl 0x268(%rsp), %eax
cmpl 0x81644(%rip), %eax     # 0x882dc
jne 0x6ced
movslq 0x8163b(%rip), %rax     # 0x882dc
movq %rax, 0xb0(%rsp)
leaq 0x81610(%rip), %rdi     # 0x882c0
callq 0x1fe40
movq %rax, %rcx
movq 0xb0(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x6ced
movb $0x1, 0x23f(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5410
movl %eax, 0x238(%rsp)
movb $0x1, 0x237(%rsp)
jmp 0x6cef
testb $0x1, 0x236(%rsp)
je 0x70d4
testb $0x1, 0x237(%rsp)
jne 0x6dab
movq 0x342ce(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x51a0
jmp 0x6d25
movq 0x342b4(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
xorl %edx, %edx
callq 0x52f0
movl %eax, 0xac(%rsp)
jmp 0x6d46
movl 0xac(%rsp), %eax
cmpl $-0x1, %eax
jne 0x6d54
jmp 0x6d8c
movq 0x34285(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0xa0(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5160
movq 0xa0(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x6d8a
jmp 0x6d8c
movq 0x3424d(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x6da6
jmp 0x70ac
testb $0x1, 0x23f(%rsp)
je 0x7035
movq 0x34220(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x6dd3
movq 0x34206(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
movb $0x0, 0x14f(%rsp)
xorl %edx, %edx
callq 0x52f0
movl %eax, 0x9c(%rsp)
jmp 0x6dfc
movl 0x9c(%rsp), %eax
cmpl $-0x1, %eax
jne 0x6e0a
jmp 0x6e88
movq 0x341cf(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x88(%rsp)
leaq 0x280(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x5410
movq 0x90(%rsp), %rsi
movq %rax, %rcx
movslq 0x238(%rsp), %rax
subq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x150(%rsp), %rdi
callq 0x52e0
jmp 0x6e5a
movb $0x1, 0x14f(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x5160
movq 0x88(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x6e86
jmp 0x6e88
testb $0x1, 0x14f(%rsp)
jne 0x6e94
jmp 0x6ea1
leaq 0x150(%rsp), %rdi
callq 0x54f8
movq 0x34138(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x51a0
jmp 0x6ebb
movq 0x3411e(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x78(%rsp)
movl 0x2a4(%rsp), %eax
movl %eax, 0x80(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5410
movq 0x78(%rsp), %rdi
movl 0x80(%rsp), %esi
movq %rax, %rcx
movl 0x238(%rsp), %eax
movl %ecx, %edx
subl %eax, %edx
movb $0x0, 0x127(%rsp)
callq 0x52f0
movl %eax, 0x84(%rsp)
jmp 0x6f15
movl 0x84(%rsp), %eax
cmpl $-0x1, %eax
jne 0x6f23
jmp 0x6f91
movq 0x340b6(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x68(%rsp)
leaq 0x280(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x5410
movq 0x70(%rsp), %rsi
movq %rax, %rdx
movslq 0x238(%rsp), %rcx
subq %rcx, %rdx
leaq 0x128(%rsp), %rdi
callq 0x52e0
jmp 0x6f66
movb $0x1, 0x127(%rsp)
leaq 0x128(%rsp), %rdi
callq 0x5160
movq 0x68(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x6f8f
jmp 0x6f91
testb $0x1, 0x127(%rsp)
jne 0x6f9d
jmp 0x6faa
leaq 0x128(%rsp), %rdi
callq 0x54f8
movq 0x3402f(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x6fc4
movb $0x0, 0x23f(%rsp)
jmp 0x70aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
testb $0x1, 0x14f(%rsp)
jne 0x6ff1
jmp 0x6ffe
leaq 0x150(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
testb $0x1, 0x127(%rsp)
jne 0x7023
jmp 0x7030
leaq 0x128(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
movq 0x33fa4(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x704f
movq 0x33f8a(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
xorl %edx, %edx
callq 0x52f0
movl %eax, 0x64(%rsp)
jmp 0x706d
movl 0x64(%rsp), %eax
cmpl $-0x1, %eax
jne 0x7078
jmp 0x70aa
movq 0x33f61(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x58(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5160
movq 0x58(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x70a8
jmp 0x70aa
jmp 0x70ac
movl 0x2a4(%rsp), %eax
decl %eax
movl %eax, 0x2a4(%rsp)
leaq 0x26f9e(%rip), %rsi     # 0x2e061
leaq 0x280(%rsp), %rdi
callq 0x53c0
jmp 0x70d2
jmp 0x70d4
jmp 0x6935
testb $0x1, 0x237(%rsp)
jne 0x717b
movq 0x33ef2(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x51a0
jmp 0x7101
movq 0x33ed8(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
xorl %edx, %edx
callq 0x52f0
movl %eax, 0x54(%rsp)
jmp 0x711f
movl 0x54(%rsp), %eax
cmpl $-0x1, %eax
jne 0x712a
jmp 0x715c
movq 0x33eaf(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x48(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5160
movq 0x48(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x715a
jmp 0x715c
movq 0x33e7d(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x7176
jmp 0x745c
testb $0x1, 0x23f(%rsp)
je 0x73e7
movq 0x33e50(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x71a3
movq 0x33e36(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
movb $0x0, 0xff(%rsp)
xorl %edx, %edx
callq 0x52f0
movl %eax, 0x44(%rsp)
jmp 0x71c9
movl 0x44(%rsp), %eax
cmpl $-0x1, %eax
jne 0x71d4
jmp 0x7246
movq 0x33e05(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x30(%rsp)
leaq 0x280(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x5410
movq 0x38(%rsp), %rsi
movq %rax, %rcx
movslq 0x238(%rsp), %rax
subq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x100(%rsp), %rdi
callq 0x52e0
jmp 0x721b
movb $0x1, 0xff(%rsp)
leaq 0x100(%rsp), %rdi
callq 0x5160
movq 0x30(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x7244
jmp 0x7246
testb $0x1, 0xff(%rsp)
jne 0x7252
jmp 0x725f
leaq 0x100(%rsp), %rdi
callq 0x54f8
movq 0x33d7a(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x51a0
jmp 0x7279
movq 0x33d60(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movl 0x2a4(%rsp), %eax
movl %eax, 0x28(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5410
movq 0x20(%rsp), %rdi
movl 0x28(%rsp), %esi
movq %rax, %rcx
movl 0x238(%rsp), %eax
movl %ecx, %edx
subl %eax, %edx
movb $0x0, 0xd7(%rsp)
callq 0x52f0
movl %eax, 0x2c(%rsp)
jmp 0x72ca
movl 0x2c(%rsp), %eax
cmpl $-0x1, %eax
jne 0x72d5
jmp 0x7343
movq 0x33d04(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, 0x10(%rsp)
leaq 0x280(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x5410
movq 0x18(%rsp), %rsi
movq %rax, %rdx
movslq 0x238(%rsp), %rcx
subq %rcx, %rdx
leaq 0xd8(%rsp), %rdi
callq 0x52e0
jmp 0x7318
movb $0x1, 0xd7(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x5160
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x7341
jmp 0x7343
testb $0x1, 0xd7(%rsp)
jne 0x734f
jmp 0x735c
leaq 0xd8(%rsp), %rdi
callq 0x54f8
movq 0x33c7d(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x7376
movb $0x0, 0x23f(%rsp)
jmp 0x745a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
testb $0x1, 0xff(%rsp)
jne 0x73a3
jmp 0x73b0
leaq 0x100(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x270(%rsp)
movl %eax, 0x26c(%rsp)
testb $0x1, 0xd7(%rsp)
jne 0x73d5
jmp 0x73e2
leaq 0xd8(%rsp), %rdi
callq 0x54f8
jmp 0x74a4
movq 0x33bf2(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x200000, %esi         # imm = 0x200000
callq 0x5380
jmp 0x7401
movq 0x33bd8(%rip), %rax     # 0x3afe0
movq (%rax), %rdi
movl 0x2a4(%rsp), %esi
xorl %edx, %edx
callq 0x52f0
movl %eax, 0xc(%rsp)
jmp 0x741f
movl 0xc(%rsp), %eax
cmpl $-0x1, %eax
jne 0x742a
jmp 0x745a
movq 0x33baf(%rip), %rax     # 0x3afe0
movq (%rax), %rax
movq %rax, (%rsp)
leaq 0x280(%rsp), %rdi
callq 0x5160
movq (%rsp), %rdi
movq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5100
jmp 0x7458
jmp 0x745a
jmp 0x745c
movl 0x2a4(%rsp), %eax
decl %eax
movl %eax, 0x2a4(%rsp)
leaq 0x26bee(%rip), %rsi     # 0x2e061
leaq 0x280(%rsp), %rdi
callq 0x53c0
jmp 0x7482
leaq 0x240(%rsp), %rdi
callq 0x54f8
leaq 0x280(%rsp), %rdi
callq 0x54f8
addq $0x2a8, %rsp            # imm = 0x2A8
retq
leaq 0x240(%rsp), %rdi
callq 0x54f8
leaq 0x280(%rsp), %rdi
callq 0x54f8
movq 0x270(%rsp), %rdi
callq 0x5480
nopl (%rax,%rax)