// File: Nallantli[P]Rossa/main/rossa/tokenizer/tokenizer.cpp
// Function: lexString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::filesystem::__cxx11::path const&)
const std::vector<token_t> lexString(const std::string &INPUT, const std::filesystem::path &filename)
{
	std::vector<std::string> LINES;
	std::stringstream ss(INPUT);
	std::string item;

	while (std::getline(ss, item, '\n'))
	{
		LINES.push_back(item);
	}

	std::vector<token_t> tokens;
	size_t INPUT_INDEX = 0;
	size_t LINE_INDEX = 0;
	size_t TOKEN_DIST = 0;
	std::string ID_STRING;

	bool in_sig = false;

	while (true)
	{
		int token = getToken(INPUT, INPUT_INDEX, LINE_INDEX, TOKEN_DIST, ID_STRING);
		if (token == TOK_EOF)
			break;
		if (token == '#')
			continue;
		token_t t = {filename, LINES[LINE_INDEX], LINE_INDEX, TOKEN_DIST, ID_STRING, token};
		if (t.type == TOK_DEF)
		{
			in_sig = true;
			tokens.push_back(t);
		}
		else
		{
			if (in_sig)
			{
				if (t.type == '(' && tokens.back().type == TOK_DEF)
				{
					tokens.back().type = TOK_LAMBDA;
				}
				if (t.type != TOK_IDF && t.valueString == ">>")
				{
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, ">", '>'});
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, ">", '>'});
				}
				else if (t.type != TOK_IDF && t.valueString == "<<")
				{
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, "<", '<'});
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, "<", '<'});
				}
				else if (t.type != TOK_IDF && t.valueString == "<>")
				{
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, "<", '<'});
					tokens.push_back({t.filename, t.line, t.lineNumber, t.distance, ">", '>'});
				}
				else
				{
					tokens.push_back(t);
				}
				if (tokens.back().type == ')')
				{
					in_sig = false;
				}
			}
			else
			{
				tokens.push_back(t);
			}
		}
	}

	for (auto &t : tokens)
	{
		while (!t.line.empty() && isspace(t.line[0]))
		{
			t.line = t.line.substr(1);
			t.distance--;
		}
	}

	return tokens;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x750, %rsp            # imm = 0x750
movq %rdi, -0x640(%rbp)
movq %rdi, %rax
movq %rax, -0x638(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x25a50
movq -0x10(%rbp), %rax
movq %rax, -0x630(%rbp)
movl $0x10, %edi
movl $0x8, %esi
callq 0x36530
movl %eax, -0x624(%rbp)
jmp 0x35563
movl -0x624(%rbp), %edx
movq -0x630(%rbp), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x118a0
jmp 0x3557e
leaq -0x1e8(%rbp), %rdi
callq 0x117c0
leaq -0x1b8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
movl $0xa, %edx
callq 0x11a20
movq %rax, -0x648(%rbp)
jmp 0x355ab
movq -0x648(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x11730
movb %al, -0x649(%rbp)
jmp 0x355c9
movb -0x649(%rbp), %al
testb $0x1, %al
jne 0x355d5
jmp 0x35617
leaq -0x30(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x2d9f0
jmp 0x355e7
jmp 0x3558a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x36377
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x3635f
movq -0x640(%rbp), %rdi
movb $0x0, -0x1e9(%rbp)
callq 0x36550
movq $0x0, -0x1f8(%rbp)
movq $0x0, -0x200(%rbp)
movq $0x0, -0x208(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x117c0
movb $0x0, -0x229(%rbp)
jmp 0x35660
movq -0x10(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x200(%rbp), %rdx
leaq -0x208(%rbp), %rcx
leaq -0x228(%rbp), %r8
callq 0x33390
movl %eax, -0x650(%rbp)
jmp 0x3568d
movl -0x650(%rbp), %eax
movl %eax, -0x230(%rbp)
cmpl $-0x1, -0x230(%rbp)
jne 0x356be
jmp 0x361b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x36308
cmpl $0x23, -0x230(%rbp)
jne 0x356c9
jmp 0x3565e
leaq -0x2b0(%rbp), %rdi
movq %rdi, -0x658(%rbp)
movq -0x18(%rbp), %rsi
callq 0x283d0
jmp 0x356e2
leaq -0x288(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x200(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x36570
movq -0x660(%rbp), %rdi
movq %rax, %rsi
callq 0x11250
jmp 0x35711
movq -0x200(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x208(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x11250
jmp 0x35742
movl -0x230(%rbp), %eax
movl %eax, -0x238(%rbp)
cmpl $-0xe, -0x238(%rbp)
jne 0x357d2
movq -0x640(%rbp), %rdi
movb $0x1, -0x229(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x36590
jmp 0x35773
jmp 0x3618f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x357aa
movq -0x660(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
callq 0x11360
movq -0x658(%rbp), %rdi
callq 0x24b40
jmp 0x36308
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x361a0
testb $0x1, -0x229(%rbp)
je 0x36176
cmpl $0x28, -0x238(%rbp)
jne 0x3580d
movq -0x640(%rbp), %rdi
callq 0x36600
cmpl $-0xe, 0x78(%rax)
jne 0x3580d
movq -0x640(%rbp), %rdi
callq 0x36600
movl $0xffffffca, 0x78(%rax) # imm = 0xFFFFFFCA
cmpl $-0x2, -0x238(%rbp)
je 0x35b1f
leaq -0x258(%rbp), %rdi
leaq 0x11a7f2(%rip), %rsi    # 0x15001a
callq 0x24630
movb %al, -0x661(%rbp)
jmp 0x35835
movb -0x661(%rbp), %al
testb $0x1, %al
jne 0x35844
jmp 0x35b1f
leaq -0x330(%rbp), %rdi
movq %rdi, -0x670(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35860
movb $0x1, -0x333(%rbp)
leaq -0x308(%rbp), %rdi
movq %rdi, -0x678(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35883
movb $0x1, -0x332(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x2d8(%rbp), %rax
movq %rax, -0x688(%rbp)
leaq -0x331(%rbp), %rdi
movq %rdi, -0x680(%rbp)
callq 0x119d0
movq -0x688(%rbp), %rdi
movq -0x680(%rbp), %rdx
leaq 0x11aa84(%rip), %rsi    # 0x150360
callq 0x24740
jmp 0x358e3
movq -0x640(%rbp), %rdi
movl $0x3e, -0x2b8(%rbp)
movb $0x0, -0x332(%rbp)
movb $0x0, -0x333(%rbp)
leaq -0x330(%rbp), %rsi
callq 0x36640
jmp 0x35910
leaq -0x330(%rbp), %rdi
callq 0x2a480
leaq -0x331(%rbp), %rdi
callq 0x11600
leaq -0x3b8(%rbp), %rdi
movq %rdi, -0x690(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35944
movb $0x1, -0x3bb(%rbp)
leaq -0x390(%rbp), %rdi
movq %rdi, -0x698(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35967
movb $0x1, -0x3ba(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x370(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x368(%rbp)
leaq -0x360(%rbp), %rax
movq %rax, -0x6a8(%rbp)
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x119d0
movq -0x6a8(%rbp), %rdi
movq -0x6a0(%rbp), %rdx
leaq 0x11a9a0(%rip), %rsi    # 0x150360
callq 0x24740
jmp 0x359c7
movq -0x640(%rbp), %rdi
movl $0x3e, -0x340(%rbp)
movb $0x0, -0x3ba(%rbp)
movb $0x0, -0x3bb(%rbp)
leaq -0x3b8(%rbp), %rsi
callq 0x36640
jmp 0x359f4
leaq -0x3b8(%rbp), %rdi
callq 0x2a480
leaq -0x3b9(%rbp), %rdi
callq 0x11600
jmp 0x3615b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35a7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35a57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x2a480
leaq -0x331(%rbp), %rdi
callq 0x11600
testb $0x1, -0x332(%rbp)
jne 0x35a6e
jmp 0x35a7a
movq -0x678(%rbp), %rdi
callq 0x11360
jmp 0x35a7c
testb $0x1, -0x333(%rbp)
jne 0x35a87
jmp 0x35a93
movq -0x670(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35b03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35ade
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x2a480
leaq -0x3b9(%rbp), %rdi
callq 0x11600
testb $0x1, -0x3ba(%rbp)
jne 0x35af5
jmp 0x35b01
movq -0x698(%rbp), %rdi
callq 0x11360
jmp 0x35b03
testb $0x1, -0x3bb(%rbp)
jne 0x35b0e
jmp 0x35b1a
movq -0x690(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
cmpl $-0x2, -0x238(%rbp)
je 0x35e31
leaq -0x258(%rbp), %rdi
leaq 0x11a4dd(%rip), %rsi    # 0x150017
callq 0x24630
movb %al, -0x6a9(%rbp)
jmp 0x35b47
movb -0x6a9(%rbp), %al
testb $0x1, %al
jne 0x35b56
jmp 0x35e31
leaq -0x440(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35b72
movb $0x1, -0x443(%rbp)
leaq -0x418(%rbp), %rdi
movq %rdi, -0x6c0(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35b95
movb $0x1, -0x442(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x3f0(%rbp)
leaq -0x3e8(%rbp), %rax
movq %rax, -0x6d0(%rbp)
leaq -0x441(%rbp), %rdi
movq %rdi, -0x6c8(%rbp)
callq 0x119d0
movq -0x6d0(%rbp), %rdi
movq -0x6c8(%rbp), %rdx
leaq 0x11a7a9(%rip), %rsi    # 0x150397
callq 0x24740
jmp 0x35bf5
movq -0x640(%rbp), %rdi
movl $0x3c, -0x3c8(%rbp)
movb $0x0, -0x442(%rbp)
movb $0x0, -0x443(%rbp)
leaq -0x440(%rbp), %rsi
callq 0x36640
jmp 0x35c22
leaq -0x440(%rbp), %rdi
callq 0x2a480
leaq -0x441(%rbp), %rdi
callq 0x11600
leaq -0x4c8(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35c56
movb $0x1, -0x4cb(%rbp)
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x6e0(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35c79
movb $0x1, -0x4ca(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x480(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x478(%rbp)
leaq -0x470(%rbp), %rax
movq %rax, -0x6f0(%rbp)
leaq -0x4c9(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x119d0
movq -0x6f0(%rbp), %rdi
movq -0x6e8(%rbp), %rdx
leaq 0x11a6c5(%rip), %rsi    # 0x150397
callq 0x24740
jmp 0x35cd9
movq -0x640(%rbp), %rdi
movl $0x3c, -0x450(%rbp)
movb $0x0, -0x4ca(%rbp)
movb $0x0, -0x4cb(%rbp)
leaq -0x4c8(%rbp), %rsi
callq 0x36640
jmp 0x35d06
leaq -0x4c8(%rbp), %rdi
callq 0x2a480
leaq -0x4c9(%rbp), %rdi
callq 0x11600
jmp 0x36159
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35d8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35d69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x2a480
leaq -0x441(%rbp), %rdi
callq 0x11600
testb $0x1, -0x442(%rbp)
jne 0x35d80
jmp 0x35d8c
movq -0x6c0(%rbp), %rdi
callq 0x11360
jmp 0x35d8e
testb $0x1, -0x443(%rbp)
jne 0x35d99
jmp 0x35da5
movq -0x6b8(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x35df0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x2a480
leaq -0x4c9(%rbp), %rdi
callq 0x11600
testb $0x1, -0x4ca(%rbp)
jne 0x35e07
jmp 0x35e13
movq -0x6e0(%rbp), %rdi
callq 0x11360
jmp 0x35e15
testb $0x1, -0x4cb(%rbp)
jne 0x35e20
jmp 0x35e2c
movq -0x6d8(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
cmpl $-0x2, -0x238(%rbp)
je 0x36140
leaq -0x258(%rbp), %rdi
leaq 0x11a1d1(%rip), %rsi    # 0x15001d
callq 0x24630
movb %al, -0x6f1(%rbp)
jmp 0x35e59
movb -0x6f1(%rbp), %al
testb $0x1, %al
jne 0x35e68
jmp 0x36140
leaq -0x550(%rbp), %rdi
movq %rdi, -0x700(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35e84
movb $0x1, -0x553(%rbp)
leaq -0x528(%rbp), %rdi
movq %rdi, -0x708(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35ea7
movb $0x1, -0x552(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x500(%rbp)
leaq -0x4f8(%rbp), %rax
movq %rax, -0x718(%rbp)
leaq -0x551(%rbp), %rdi
movq %rdi, -0x710(%rbp)
callq 0x119d0
movq -0x718(%rbp), %rdi
movq -0x710(%rbp), %rdx
leaq 0x11a497(%rip), %rsi    # 0x150397
callq 0x24740
jmp 0x35f07
movq -0x640(%rbp), %rdi
movl $0x3c, -0x4d8(%rbp)
movb $0x0, -0x552(%rbp)
movb $0x0, -0x553(%rbp)
leaq -0x550(%rbp), %rsi
callq 0x36640
jmp 0x35f34
leaq -0x550(%rbp), %rdi
callq 0x2a480
leaq -0x551(%rbp), %rdi
callq 0x11600
leaq -0x5d8(%rbp), %rdi
movq %rdi, -0x720(%rbp)
leaq -0x2b0(%rbp), %rsi
callq 0x283d0
jmp 0x35f68
movb $0x1, -0x5db(%rbp)
leaq -0x5b0(%rbp), %rdi
movq %rdi, -0x728(%rbp)
leaq -0x288(%rbp), %rsi
callq 0x11250
jmp 0x35f8b
movb $0x1, -0x5da(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x590(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x588(%rbp)
leaq -0x580(%rbp), %rax
movq %rax, -0x738(%rbp)
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0x730(%rbp)
callq 0x119d0
movq -0x738(%rbp), %rdi
movq -0x730(%rbp), %rdx
leaq 0x11a37c(%rip), %rsi    # 0x150360
callq 0x24740
jmp 0x35feb
movq -0x640(%rbp), %rdi
movl $0x3e, -0x560(%rbp)
movb $0x0, -0x5da(%rbp)
movb $0x0, -0x5db(%rbp)
leaq -0x5d8(%rbp), %rsi
callq 0x36640
jmp 0x36018
leaq -0x5d8(%rbp), %rdi
callq 0x2a480
leaq -0x5d9(%rbp), %rdi
callq 0x11600
jmp 0x36157
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x360a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x3607b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x2a480
leaq -0x551(%rbp), %rdi
callq 0x11600
testb $0x1, -0x552(%rbp)
jne 0x36092
jmp 0x3609e
movq -0x708(%rbp), %rdi
callq 0x11360
jmp 0x360a0
testb $0x1, -0x553(%rbp)
jne 0x360ab
jmp 0x360b7
movq -0x700(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x36127
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x36102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x2a480
leaq -0x5d9(%rbp), %rdi
callq 0x11600
testb $0x1, -0x5da(%rbp)
jne 0x36119
jmp 0x36125
movq -0x728(%rbp), %rdi
callq 0x11360
jmp 0x36127
testb $0x1, -0x5db(%rbp)
jne 0x36132
jmp 0x3613e
movq -0x720(%rbp), %rdi
callq 0x24b40
jmp 0x361a0
movq -0x640(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x36590
jmp 0x36155
jmp 0x36157
jmp 0x36159
jmp 0x3615b
movq -0x640(%rbp), %rdi
callq 0x36600
cmpl $0x29, 0x78(%rax)
jne 0x36174
movb $0x0, -0x229(%rbp)
jmp 0x3618d
movq -0x640(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x36590
jmp 0x3618b
jmp 0x3618d
jmp 0x3618f
leaq -0x2b0(%rbp), %rdi
callq 0x2a480
jmp 0x3565e
leaq -0x2b0(%rbp), %rdi
callq 0x2a480
jmp 0x36308
movq -0x640(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movq -0x5e8(%rbp), %rdi
callq 0x36670
movq %rax, -0x5f0(%rbp)
movq -0x5e8(%rbp), %rdi
callq 0x366a0
movq %rax, -0x5f8(%rbp)
leaq -0x5f0(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x366d0
testb $0x1, %al
jne 0x36201
jmp 0x362ea
leaq -0x5f0(%rbp), %rdi
callq 0x36710
movq %rax, -0x600(%rbp)
movq -0x600(%rbp), %rdi
addq $0x28, %rdi
callq 0x11940
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x739(%rbp)
jne 0x3626b
movq -0x600(%rbp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x11ac0
movq %rax, -0x748(%rbp)
jmp 0x36250
movq -0x748(%rbp), %rax
movsbl (%rax), %edi
callq 0x11090
cmpl $0x0, %eax
setne %al
movb %al, -0x739(%rbp)
movb -0x739(%rbp), %al
testb $0x1, %al
jne 0x36277
jmp 0x362d7
movq -0x600(%rbp), %rsi
addq $0x28, %rsi
leaq -0x620(%rbp), %rdi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x115b0
jmp 0x3629c
movq -0x600(%rbp), %rdi
addq $0x28, %rdi
leaq -0x620(%rbp), %rsi
callq 0x11700
leaq -0x620(%rbp), %rdi
callq 0x11360
movq -0x600(%rbp), %rax
movq 0x50(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x50(%rax)
jmp 0x36214
jmp 0x362d9
leaq -0x5f0(%rbp), %rdi
callq 0x36730
jmp 0x361e5
movb $0x1, -0x1e9(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x11360
testb $0x1, -0x1e9(%rbp)
jne 0x3632e
jmp 0x36322
leaq -0x228(%rbp), %rdi
callq 0x11360
movq -0x640(%rbp), %rdi
callq 0x2d090
jmp 0x3635f
movq -0x640(%rbp), %rdi
callq 0x2d090
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1b8(%rbp), %rdi
callq 0x11430
leaq -0x30(%rbp), %rdi
callq 0x25b00
movq -0x638(%rbp), %rax
addq $0x750, %rsp            # imm = 0x750
popq %rbp
retq
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1b8(%rbp), %rdi
callq 0x11430
leaq -0x30(%rbp), %rdi
callq 0x25b00
movq -0x1c0(%rbp), %rdi
callq 0x119c0
nopl (%rax)