// File: /workspace/github_cpp_makefile_star2_O3/ben-strasser[P]latex-checker/latex-checker.cpp
// Function: main
int main(){

	int line_num = 1;
	try{
		stack<Tag>s;

		
		auto skip_spaces = [&]{
			while(isspace(cin.peek())){
				if(cin.peek() == '\n'){
					++line_num;
				}
				cin.ignore();
			}
		};

		auto read_word = []{
			string word;
			while(isalnum(cin.peek()) || cin.peek() == '*')
				word += cin.get();
			return word;
		};

		auto check_close_tag = [&](string close_tag){
			if(s.empty()){
				if(close_tag == "}")
					throw string("} has no corresponding {");
				else if(close_tag == "]")
					throw string("\\] has no corresponding \\[");
				else 
					throw string("\"\\end{"+close_tag+"}\" has no corresponding \"\\begin{"+close_tag+"}\"");
			} else {
				auto x = s.top();
				s.pop();

				string wanted_close_tag = x.tag;
				if(wanted_close_tag == "{")
					wanted_close_tag = "}";
				if(wanted_close_tag == "[")
					wanted_close_tag = "]";


				if(close_tag != wanted_close_tag){
					ostringstream out;
					out << "on line "<<x.line_num << " a ";
					if(x.tag == "{")
						out << '{';
					else if(x.tag == "[")
						out << "\\[";
					else if(x.tag == "$")
						out << "$";
					else if(x.tag == "$$")
						out << "$$";
					else
						out << "\"\\begin{"<<x.tag << "}\"";
					out << " was opened but has not yet been closed. The ";
					if(close_tag == "}")
						out << '}';
					else if(close_tag == "]")
						out << "\\]";
					else if(close_tag == "$")
						out << "$";
					else if(close_tag == "$$")
						out << "$$";
					else
						out << "\"\\end{"<<close_tag << "}\"";
					out << " does not fit.";

					int unclosed = 1;
					while(!s.empty()){
						x = s.top();
						s.pop();

						wanted_close_tag = x.tag;
						if(wanted_close_tag == "{")
							wanted_close_tag = "}";
						if(wanted_close_tag == "[")
							wanted_close_tag = "]";
					
						if(close_tag == wanted_close_tag){
							out << " A matching ";
							if(x.tag == "{")
								out << '{';
							else if(x.tag == "[")
								out << "\\[";
							else if(x.tag == "$")
								out << "$";
							else if(x.tag == "$$")
								out << "$$";
							else
								out << "\"\\begin{"<<x.tag << "}\"";
							out << " was opened on line "<<x.line_num <<" but ";
							if(unclosed == 1)
								out << "one parenthesis";
							else
								out << unclosed << " parentheses";
							out << " must be closed first.";
							throw string(out.str());
						}else
							++unclosed;
					}
					out << " No matching tag was open.";
					throw string(out.str());
				}
			}
		};

		char c;
		while(c = cin.get(), cin){
			if(c == '%'){
				while(c = cin.get(), cin)
					if(c == '\n')
						break;
				++line_num;
			} else if(c == '\n'){
				++line_num;
			} else if(c == '{'){
				s.push(Tag{line_num, "{"});
			} else if(c == '}'){
				check_close_tag("}");
			} else if(c == '$'){
				string tag = "$";
				if(cin.peek() == '$'){
					cin.ignore();
					tag = "$$";
				}
				if(!s.empty() && s.top().tag == tag)
					check_close_tag(tag);
				else
					s.push(Tag{line_num, tag});
			} else if(c == '\\'){
				if(cin.peek() == '['){
					cin.ignore();
					s.push(Tag{line_num, "["});
				}else if(cin.peek() == ']'){
					cin.ignore();
					check_close_tag("]");
				}else{
					string cmd = read_word();
					if(cmd == "begin"){
						skip_spaces();
						if(cin.get() != '{')
							throw ("\"\\begin\" must be followed by an {");
						string tag = read_word();
						if(cin.get() != '}')
							throw ("\"\\begin{"+tag+"\" must be followed by an }");
						s.push(Tag{line_num, tag});
					}else if(cmd == "end"){
						skip_spaces();
						if(cin.get() != '{')
							throw ("\"\\begin\" must be followed by an {");
						string tag = read_word();
						if(cin.get() != '}')
							throw ("\"\\begin{"+tag+"\" must be followed by an }");
						check_close_tag(tag);
					}else if(cmd == ""){
						// next character is escaped. For example \{. This is not parenthesis that we should check for.
						c = cin.get();
						if(c == '\n')
							++line_num;
					}else if(is_begin_variation(cmd)){
						cout << "Warning in line "<<line_num<<": You wrote \""<< cmd << "{\". Did you mean \"begin{\"?" << endl;
					}else if(is_end_variation(cmd)){
						cout << "Warning in line "<<line_num<<": You wrote \""<< cmd << "{\". Did you mean \"end{\"?" << endl;
					}
				}
			}
		}

		if(!s.empty()){
			ostringstream out;
			out << "not all parentheses were closed, still open are :";
			while(!s.empty()){
				out << '\n';
				auto x = s.top();
				s.pop();
				if(x.tag == "[" || x.tag == "{")
					out << x.tag;
				else
					out << "\"\\begin{"<<x.tag<<"}\"";
				out << " opened on line "<<x.line_num;
			}
			throw string(out.str());
		}
	}catch(string&msg){
		cout << "Error in line "<<line_num<<": " << msg << endl;
		return 1;
	}catch(exception&err){
		cerr << "Exception: "<<err.what() << endl;
		return 2;
	}
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rbx
movaps %xmm0, 0x40(%rbx)
movaps %xmm0, 0x30(%rbx)
movaps %xmm0, 0x20(%rbx)
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x42a8
leaq 0x28(%rsp), %rax
movq %rbx, (%rax)
leaq 0x10(%rsp), %r12
movl $0x1, %ebx
movq 0x4859(%rip), %r13      # 0x6fd8
movq %rsp, %rbp
leaq 0x30(%rsp), %r15
movq %r13, %rdi
callq 0x2210
movq (%r13), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%r13,%rcx)
jne 0x2f27
movzbl %al, %eax
cmpl $0x5b, %eax
jg 0x27e0
cmpl $0xa, %eax
je 0x27dc
cmpl $0x24, %eax
je 0x28a5
cmpl $0x25, %eax
jne 0x2787
movq %r13, %rdi
callq 0x2210
cmpb $0xa, %al
je 0x27dc
movq (%r13), %rax
movq -0x18(%rax), %rax
movl 0x20(%r13,%rax), %eax
andl $0x5, %eax
je 0x27be
incl %ebx
jmp 0x2787
cmpl $0x5c, %eax
je 0x2843
cmpl $0x7b, %eax
je 0x29a5
cmpl $0x7d, %eax
jne 0x2787
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
leaq 0x100(%rsp), %r14
movq %r14, %rdi
leaq 0x2853(%rip), %rsi      # 0x5068
leaq 0x284d(%rip), %rdx      # 0x5069
callq 0x40ea
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x357a
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
jmp 0x29f9
movq %r13, %rdi
callq 0x20b0
cmpl $0x5b, %eax
jne 0x2a07
movq %r13, %rdi
callq 0x22f0
movl %ebx, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
leaq 0x128(%rsp), %rdi
leaq 0x28c1(%rip), %rsi      # 0x5143
leaq 0x28bb(%rip), %rdx      # 0x5144
callq 0x40ea
leaq 0x50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x44b0
jmp 0x29e9
movq %r12, (%rsp)
movq %rbp, %rdi
leaq 0x2772(%rip), %rsi      # 0x5025
leaq 0x276c(%rip), %rdx      # 0x5026
callq 0x40ea
movq %r13, %rdi
callq 0x20b0
cmpl $0x24, %eax
jne 0x28f0
movq %r13, %rdi
callq 0x22f0
movq 0x8(%rsp), %rdx
movl $0x2, %r8d
movq %rbp, %rdi
xorl %esi, %esi
leaq 0x2739(%rip), %rcx      # 0x5024
callq 0x2260
movq 0x80(%rsp), %rax
cmpq 0x60(%rsp), %rax
je 0x2a6d
cmpq 0x88(%rsp), %rax
jne 0x2921
movq 0x98(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movq -0x18(%rax), %r14
movq (%rsp), %r12
movq 0x8(%rsp), %rcx
cmpq %rcx, %r14
jne 0x2a78
testq %r14, %r14
je 0x2953
movq -0x20(%rax), %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x21f0
testl %eax, %eax
jne 0x2a7b
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
addq %r12, %r14
leaq 0xc0(%rsp), %rdi
movq %r12, %rsi
movq %r14, %rdx
leaq 0x10(%rsp), %r12
callq 0x4054
leaq 0x28(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x357a
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
jmp 0x2acf
movl %ebx, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
leaq 0x128(%rsp), %rdi
leaq 0x275d(%rip), %rsi      # 0x5128
leaq 0x2757(%rip), %rdx      # 0x5129
callq 0x40ea
leaq 0x50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x44b0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
jne 0x2ae6
jmp 0x2787
movq %r13, %rdi
callq 0x20b0
cmpl $0x5d, %eax
jne 0x2af0
movq %r13, %rdi
callq 0x22f0
leaq 0xf0(%rsp), %rax
movq %rax, 0xe0(%rsp)
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
leaq 0x275e(%rip), %rsi      # 0x51a0
leaq 0x2758(%rip), %rdx      # 0x51a1
callq 0x40ea
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x357a
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
jmp 0x29f9
movq (%rsp), %r12
movq 0x8(%rsp), %r14
jmp 0x2a7b
movq %rcx, %r14
movl %ebx, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
addq %r12, %r14
leaq 0x128(%rsp), %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x4054
leaq 0x50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0x10(%rsp), %r12
callq 0x44b0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x2ad9
callq 0x21a0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x2787
callq 0x21a0
jmp 0x2787
movq %r12, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
movq %r13, %rdi
callq 0x20b0
movl %eax, %edi
callq 0x21e0
testl %eax, %eax
jne 0x2b22
movq %r13, %rdi
callq 0x20b0
cmpl $0x2a, %eax
jne 0x2b37
movq %r13, %rdi
callq 0x2210
movsbl %al, %esi
movq %rbp, %rdi
callq 0x2180
jmp 0x2b02
movq %rbp, %rdi
leaq 0x24e6(%rip), %rsi      # 0x5027
callq 0x2070
testl %eax, %eax
je 0x2c20
movq %rbp, %rdi
leaq 0x2512(%rip), %rsi      # 0x506a
callq 0x2070
testl %eax, %eax
je 0x2d32
movq %rbp, %rdi
leaq 0x2592(%rip), %rsi      # 0x5101
callq 0x2070
testl %eax, %eax
je 0x2e5a
leaq 0x464d(%rip), %rdi      # 0x71d0
leaq 0x4746(%rip), %rsi      # 0x72d0
movq %rbp, %rdx
callq 0x417f
leaq 0x4737(%rip), %rcx      # 0x72d0
cmpq %rcx, %rax
je 0x2e70
movl $0x10, %edx
movq 0x441a(%rip), %rdi      # 0x6fc8
leaq 0x24b9(%rip), %rsi      # 0x506e
callq 0x2200
movq 0x4407(%rip), %rdi      # 0x6fc8
movl %ebx, %esi
callq 0x22c0
movq %rax, %r14
movl $0xd, %edx
movq %rax, %rdi
leaq 0x24a5(%rip), %rsi      # 0x507f
callq 0x2200
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x2200
movq %rax, %r14
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x248b(%rip), %rsi      # 0x508d
callq 0x2200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21b0
jmp 0x2f0f
movq %r13, %rdi
callq 0x20b0
movl %eax, %edi
callq 0x2040
testl %eax, %eax
je 0x2c57
movq %r13, %rdi
callq 0x20b0
xorl %ecx, %ecx
cmpl $0xa, %eax
sete %cl
addl %ecx, %ebx
movq %r13, %rdi
callq 0x22f0
movq %r13, %rdi
callq 0x20b0
jmp 0x2c28
movq %r13, %rdi
callq 0x2210
cmpl $0x7b, %eax
jne 0x2fc5
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0x20b0
movl %eax, %edi
callq 0x21e0
testl %eax, %eax
jne 0x2ca0
movq %r13, %rdi
callq 0x20b0
cmpl $0x2a, %eax
jne 0x2cb5
movq %r13, %rdi
callq 0x2210
movsbl %al, %esi
movq %r15, %rdi
callq 0x2180
jmp 0x2c80
movq %r13, %rdi
callq 0x2210
cmpl $0x7d, %eax
jne 0x2fef
movl %ebx, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0x4054
leaq 0x50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x44b0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x2d23
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
jmp 0x2acf
movq %r13, %rdi
callq 0x20b0
movl %eax, %edi
callq 0x2040
testl %eax, %eax
je 0x2d69
movq %r13, %rdi
callq 0x20b0
xorl %ecx, %ecx
cmpl $0xa, %eax
sete %cl
addl %ecx, %ebx
movq %r13, %rdi
callq 0x22f0
movq %r13, %rdi
callq 0x20b0
jmp 0x2d3a
movq %r13, %rdi
callq 0x2210
cmpl $0x7b, %eax
jne 0x3049
leaq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
movq $0x0, 0x128(%rsp)
movb $0x0, 0x130(%rsp)
movq %r13, %rdi
callq 0x20b0
movl %eax, %edi
callq 0x21e0
testl %eax, %eax
jne 0x2dbe
movq %r13, %rdi
callq 0x20b0
cmpl $0x2a, %eax
jne 0x2dd8
movq %r13, %rdi
callq 0x2210
movsbl %al, %esi
leaq 0x120(%rsp), %rdi
callq 0x2180
jmp 0x2d9e
movq %r13, %rdi
callq 0x2210
cmpl $0x7d, %eax
jne 0x3070
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa0(%rsp), %rdi
callq 0x4054
leaq 0x28(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x357a
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x2e45
callq 0x21a0
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
jmp 0x2acf
movq %r13, %rdi
callq 0x2210
xorl %ecx, %ecx
cmpb $0xa, %al
sete %cl
addl %ecx, %ebx
jmp 0x2ad9
leaq 0x4459(%rip), %rdi      # 0x72d0
leaq 0x44f2(%rip), %rsi      # 0x7370
movq %rbp, %rdx
callq 0x417f
leaq 0x44e3(%rip), %rcx      # 0x7370
cmpq %rcx, %rax
je 0x2ad9
movl $0x10, %edx
movq 0x4126(%rip), %rdi      # 0x6fc8
leaq 0x21c5(%rip), %rsi      # 0x506e
callq 0x2200
movq 0x4113(%rip), %rdi      # 0x6fc8
movl %ebx, %esi
callq 0x22c0
movq %rax, %r14
movl $0xd, %edx
movq %rax, %rdi
leaq 0x21b1(%rip), %rsi      # 0x507f
callq 0x2200
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x2200
movq %rax, %r14
movl $0x18, %edx
movq %rax, %rdi
leaq 0x21b2(%rip), %rsi      # 0x50a8
callq 0x2200
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2130
jmp 0x2ad9
movq 0x80(%rsp), %rax
cmpq 0x60(%rsp), %rax
jne 0x2f54
leaq 0x50(%rsp), %rdi
callq 0x3ef2
xorl %eax, %eax
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x120(%rsp), %rdi
callq 0x2220
leaq 0x2159(%rip), %rsi      # 0x50c1
leaq 0x120(%rsp), %rdi
movl $0x31, %edx
callq 0x2200
movq 0x80(%rsp), %rax
cmpq 0x60(%rsp), %rax
jne 0x30c5
movl $0x20, %edi
callq 0x20f0
movq %rax, %r12
leaq 0x128(%rsp), %rsi
movq %rax, %rdi
callq 0x2280
leaq 0x3dcf(%rip), %rsi      # 0x6d80
movq 0x3ff0(%rip), %rdx      # 0x6fa8
movq %r12, %rdi
callq 0x22b0
jmp 0x30c5
movl $0x8, %edi
callq 0x20f0
leaq 0x2057(%rip), %rcx      # 0x502d
movq %rcx, (%rax)
movq 0x3fd0(%rip), %rsi      # 0x6fb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x22b0
jmp 0x30c5
movl $0x20, %edi
callq 0x20f0
movq %rax, %r12
leaq 0x2161(%rip), %rsi      # 0x5164
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x3e0b
movb $0x1, %bpl
leaq 0x2030(%rip), %rdx      # 0x504f
leaq 0x120(%rsp), %rsi
movq %r12, %rdi
callq 0x3db8
xorl %ebp, %ebp
leaq 0x3d48(%rip), %rsi      # 0x6d80
movq 0x3f69(%rip), %rdx      # 0x6fa8
movq %r12, %rdi
callq 0x22b0
jmp 0x30c5
movl $0x8, %edi
callq 0x20f0
leaq 0x1fd3(%rip), %rcx      # 0x502d
movq %rcx, (%rax)
movq 0x3f4c(%rip), %rsi      # 0x6fb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x22b0
jmp 0x30c5
movl $0x20, %edi
callq 0x20f0
movq %rax, %r12
leaq 0x20e0(%rip), %rsi      # 0x5164
leaq 0x30(%rsp), %rdi
leaq 0x120(%rsp), %rdx
callq 0x3e0b
movb $0x1, %bpl
leaq 0x1faf(%rip), %rdx      # 0x504f
leaq 0x30(%rsp), %rsi
movq %r12, %rdi
callq 0x3db8
xorl %ebp, %ebp
leaq 0x3cca(%rip), %rsi      # 0x6d80
movq 0x3eeb(%rip), %rdx      # 0x6fa8
movq %r12, %rdi
callq 0x22b0
leaq 0x8(%rsp), %r14
leaq 0x18(%rsp), %r13
leaq 0x120(%rsp), %r15
leaq 0x2065(%rip), %rbp      # 0x5143
leaq 0x20dd(%rip), %r12      # 0x51c2
movb $0xa, (%rsp)
movl $0x1, %edx
movq %r15, %rdi
movq %rsp, %rsi
callq 0x2200
movq 0x80(%rsp), %rax
cmpq 0x88(%rsp), %rax
jne 0x311f
movq 0x98(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x28(%rax), %ecx
movl %ecx, (%rsp)
movq %r13, 0x8(%rsp)
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x4054
leaq 0x50(%rsp), %rdi
callq 0x4436
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2070
testl %eax, %eax
je 0x31a5
movq %r14, %rdi
leaq 0x1fc8(%rip), %rsi      # 0x5128
callq 0x2070
testl %eax, %eax
je 0x31a5
movl $0x8, %edx
movq %r15, %rdi
leaq 0x1fec(%rip), %rsi      # 0x5164
callq 0x2200
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r15, %rdi
callq 0x2200
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1f55(%rip), %rsi      # 0x50f3
callq 0x2200
jmp 0x31b7
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r15, %rdi
callq 0x2200
movl $0x10, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x2200
movl (%rsp), %esi
movq %r15, %rdi
callq 0x22c0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x31e1
callq 0x21a0
movq 0x80(%rsp), %rax
cmpq 0x60(%rsp), %rax
jne 0x30e5
jmp 0x2f8d
jmp 0x32c7
jmp 0x32c7
movq %rdx, %r14
movq %rax, %r15
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x32cd
callq 0x21a0
jmp 0x32cd
movq %rdx, %r14
movq %rax, %r15
movq %r12, %rdi
callq 0x2150
jmp 0x32cd
movq %rdx, %r14
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x324e
callq 0x21a0
testb %bpl, %bpl
jne 0x325e
jmp 0x3334
movq %rdx, %r14
movq %rax, %r15
movq %r12, %rdi
callq 0x2150
jmp 0x3334
movq %rdx, %r14
movq %rax, %r15
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x328b
callq 0x21a0
testb %bpl, %bpl
jne 0x329b
jmp 0x331d
movq %rdx, %r14
movq %rax, %r15
movq %r12, %rdi
callq 0x2150
jmp 0x331d
movq %rdx, %r14
movq %rax, %r15
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x3334
callq 0x21a0
jmp 0x3334
movq %rdx, %r14
movq %rax, %r15
movq 0x3cec(%rip), %rsi      # 0x6fc0
leaq 0x120(%rsp), %rdi
callq 0x2110
leaq 0x190(%rsp), %rdi
callq 0x2090
jmp 0x3481
jmp 0x3317
movq %rdx, %r14
movq %rax, %r15
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x331d
callq 0x21a0
jmp 0x331d
movq %rdx, %r14
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
jmp 0x3344
jmp 0x3465
movq %rdx, %r14
movq %rax, %r15
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
leaq 0x10(%rsp), %r12
jne 0x345e
jmp 0x3473
movq %rdx, %r14
movq %rax, %r15
leaq 0x10(%rsp), %r12
jmp 0x3473
movq %rdx, %r14
movq %rax, %r15
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
jmp 0x33c9
movq %rdx, %r14
movq %rax, %r15
movl $0x1, %ebx
jmp 0x348b
movq %rdx, %r14
movq %rax, %r15
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
jmp 0x3424
jmp 0x3465
jmp 0x3465
jmp 0x33f9
movq %rdx, %r14
movq %rax, %r15
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x341b
callq 0x21a0
jmp 0x341b
jmp 0x3415
jmp 0x346d
jmp 0x3465
movq %rdx, %r14
movq %rax, %r15
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
jmp 0x3424
movq %rdx, %r14
movq %rax, %r15
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
jmp 0x3424
jmp 0x3465
jmp 0x3465
movq %rdx, %r14
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
jne 0x347c
jmp 0x3481
jmp 0x346d
jmp 0x346d
jmp 0x3465
movq %rdx, %r14
movq %rax, %r15
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
jmp 0x3459
movq %rdx, %r14
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x3473
callq 0x21a0
jmp 0x3473
movq %rdx, %r14
movq %rax, %r15
jmp 0x3481
movq %rdx, %r14
movq %rax, %r15
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x3481
callq 0x21a0
leaq 0x50(%rsp), %rdi
callq 0x3ef2
cmpl $0x2, %r14d
jne 0x34ff
movq %r15, %rdi
callq 0x20c0
movq %rax, %r14
movq 0x3b25(%rip), %rdi      # 0x6fc8
leaq 0x1c58(%rip), %rsi      # 0x5102
movl $0xe, %edx
callq 0x2200
movq 0x3b0d(%rip), %rdi      # 0x6fc8
movl %ebx, %esi
callq 0x22c0
movq %rax, %rbx
leaq 0x1c33(%rip), %rsi      # 0x50ff
movl $0x2, %edx
movq %rax, %rdi
callq 0x2200
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbx, %rdi
callq 0x2200
movq %rax, %rdi
callq 0x20e0
callq 0x22a0
movl $0x1, %eax
jmp 0x2f42
cmpl $0x1, %r14d
jne 0x3569
movq %r15, %rdi
callq 0x20c0
movq %rax, %rbx
movq 0x3ad9(%rip), %rdi      # 0x6ff0
leaq 0x1bd8(%rip), %rsi      # 0x50f6
movl $0xb, %edx
callq 0x2200
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x3ab8(%rip), %rdi      # 0x6ff0
movq %rax, %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x20e0
callq 0x22a0
movl $0x2, %eax
jmp 0x2f42
movq %rax, %r15
callq 0x22a0
jmp 0x3569
movq %rax, %r15
callq 0x22a0
movq %r15, %rdi
callq 0x22d0
movq %rax, %rdi
callq 0x3e8c
nop