// File: Nallantli[P]Rossa/main/rossa/node_parser/node_parser.cpp
// Function: node_parser_t::parseIfElseNode(std::vector<node_scope_t, std::allocator<node_scope_t>>*)
ptr_node_t node_parser_t::parseIfElseNode(std::vector<node_scope_t> *scopes)
{
	scopes->push_back({ROSSA_HASH("<IFS@" + std::to_string(scope_i++) + ">")});
	nextToken();
	auto ifs = parseEquNode(scopes);
	if (!ifs)
		return nullptr;
	if (currentToken.type != TOK_THEN)
		return logErrorN(util::format(_EXPECTED_ERROR_, {KEYWORD_THEN}), currentToken);

	auto marker = currentToken;

	nextToken();
	if (currentToken.type != '{')
		return logErrorN(util::format(_EXPECTED_ERROR_, {"{"}), currentToken);
	nextToken();
	std::vector<ptr_node_t> body;
	while (currentToken.type != NULL_TOK)
	{
		if (currentToken.type == '}')
			break;

		if (auto e = parseExprNode(scopes))
			body.push_back(e);
		else
			return logErrorN(_FAILURE_PARSE_CODE_, currentToken);
	}
	if (currentToken.type != '}')
		return logErrorN(util::format(_EXPECTED_ERROR_, {"}"}), currentToken);
	nextToken();

	std::shared_ptr<IfElseNode> ret;

	if (body.size() != 1)
		ret = std::make_shared<IfElseNode>(*scopes, ifs, std::make_shared<VectorNode>(*scopes, body, true, currentToken), marker);
	else
		ret = std::make_shared<IfElseNode>(*scopes, ifs, (body[0]), marker);

	if (currentToken.type == NULL_TOK)
	{
		scopes->pop_back();
		return ret;
	}

	switch (currentToken.type)
	{
	case TOK_ELSE:
	{
		nextToken();
		if (currentToken.type != '{')
			return logErrorN(util::format(_EXPECTED_ERROR_, {"{"}), currentToken);
		nextToken();
		std::vector<ptr_node_t> elses;
		while (currentToken.type != NULL_TOK)
		{
			if (currentToken.type == '}')
				break;

			if (auto e = parseExprNode(scopes))
				elses.push_back(e);
			else
				return logErrorN(_FAILURE_PARSE_CODE_, currentToken);
		}
		if (currentToken.type != '}')
			return logErrorN(util::format(_EXPECTED_ERROR_, {"}"}), currentToken);
		nextToken();
		if (elses.size() != 1)
			ret->setElse(std::make_shared<VectorNode>(*scopes, elses, true, currentToken));
		else
			ret->setElse(elses[0]);
		scopes->pop_back();
		return ret;
	}
	case TOK_ELSEIF:
	{
		ret->setElse(parseIfElseNode(scopes));
		scopes->pop_back();
		return ret;
	}
	default:
		scopes->pop_back();
		return ret;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7e0, %rsp            # imm = 0x7E0
movq %rdi, -0x5b0(%rbp)
movq %rdi, %rax
movq %rax, -0x5a8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x5a0(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x598(%rbp)
leaq -0x38(%rbp), %rcx
movq %rcx, -0x590(%rbp)
movq (%rax), %rsi
movq %rsi, %rcx
incq %rcx
movq %rcx, (%rax)
leaq -0x98(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x58780
movq -0x588(%rbp), %rdx
leaq 0x1013e5(%rip), %rsi    # 0x15134b
leaq -0x78(%rbp), %rdi
callq 0x24cb0
jmp 0x4ff71
leaq 0x1003e8(%rip), %rdx    # 0x150360
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x24c60
jmp 0x4ff87
leaq 0x195b0a(%rip), %rdi    # 0x1e5a98
leaq -0x58(%rbp), %rsi
callq 0x2cb10
movq %rax, -0x5b8(%rbp)
jmp 0x4ffa0
movq -0x590(%rbp), %rax
movq -0x5b8(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x30(%rbp), %rdi
xorps %xmm0, %xmm0
movups %xmm0, -0x30(%rbp)
movq $0x0, -0x20(%rbp)
callq 0x2ccf0
movq -0x598(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2ccc0
jmp 0x4ffdb
leaq -0x38(%rbp), %rdi
callq 0x2cd10
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0x78(%rbp), %rdi
callq 0x11360
leaq -0x98(%rbp), %rdi
callq 0x11360
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
movq -0x5a0(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0xb8(%rbp), %rdi
callq 0x3f500
leaq -0xb8(%rbp), %rdi
callq 0x57630
testb $0x1, %al
jne 0x500d2
movq -0x5b0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x58bf0
movl $0x1, -0xbc(%rbp)
jmp 0x51848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x500c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x500b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x500af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x2cd10
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0x78(%rbp), %rdi
callq 0x11360
leaq -0x98(%rbp), %rdi
callq 0x11360
jmp 0x51870
movq -0x5a0(%rbp), %rax
cmpl $-0xc, 0xd0(%rax)
je 0x503ef
leaq -0x101(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x119d0
movq -0x5c0(%rbp), %rdx
leaq 0x101089(%rip), %rsi    # 0x151190
leaq -0x100(%rbp), %rdi
callq 0x24740
jmp 0x50115
movb $0x1, -0x15a(%rbp)
leaq -0x150(%rbp), %rax
movq %rax, -0x5d0(%rbp)
movq %rax, -0x158(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x119d0
movq -0x5d0(%rbp), %rdi
movq -0x5c8(%rbp), %rdx
leaq 0x10060b(%rip), %rsi    # 0x150764
callq 0x24740
jmp 0x50160
movb $0x0, -0x15a(%rbp)
leaq -0x150(%rbp), %rax
movq %rax, -0x130(%rbp)
movq $0x1, -0x128(%rbp)
leaq -0x15b(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x26e30
movq -0x5d8(%rbp), %rcx
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0x2d6a0
jmp 0x501b6
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x9e250
jmp 0x501d2
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0xe0(%rbp), %rdx
callq 0x3f820
jmp 0x501f5
leaq -0xe0(%rbp), %rdi
callq 0x11360
leaq -0x120(%rbp), %rdi
callq 0x25b00
leaq -0x15b(%rbp), %rdi
callq 0x279c0
leaq -0x150(%rbp), %rax
movq %rax, -0x5e8(%rbp)
addq $0x20, %rax
movq %rax, -0x5e0(%rbp)
movq -0x5e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x11360
movq -0x5e8(%rbp), %rcx
movq -0x5f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5e0(%rbp)
jne 0x50232
leaq -0x159(%rbp), %rdi
callq 0x11600
leaq -0x100(%rbp), %rdi
callq 0x11360
leaq -0x101(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x51848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x503de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5036e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50316
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5030a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x11360
leaq -0x120(%rbp), %rdi
callq 0x25b00
leaq -0x15b(%rbp), %rdi
callq 0x279c0
leaq -0x150(%rbp), %rax
movq %rax, -0x600(%rbp)
addq $0x20, %rax
movq %rax, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x608(%rbp)
callq 0x11360
movq -0x600(%rbp), %rcx
movq -0x608(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5f8(%rbp)
jne 0x5033b
jmp 0x5036e
leaq -0x159(%rbp), %rdi
callq 0x11600
testb $0x1, -0x15a(%rbp)
jne 0x50385
jmp 0x503d2
movq -0x158(%rbp), %rax
leaq -0x150(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x610(%rbp)
je 0x503d0
movq -0x610(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x618(%rbp)
callq 0x11360
movq -0x618(%rbp), %rax
leaq -0x150(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x610(%rbp)
jne 0x5039f
jmp 0x503d2
leaq -0x100(%rbp), %rdi
callq 0x11360
leaq -0x101(%rbp), %rdi
callq 0x11600
jmp 0x51864
movq -0x5a0(%rbp), %rsi
addq $0x58, %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x2ee00
jmp 0x50408
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x50416
movq -0x5a0(%rbp), %rax
cmpl $0x7b, 0xd0(%rax)
je 0x50761
leaq -0x221(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x119d0
movq -0x620(%rbp), %rdx
leaq 0x100d45(%rip), %rsi    # 0x151190
leaq -0x220(%rbp), %rdi
callq 0x24740
jmp 0x50459
movb $0x1, -0x27a(%rbp)
leaq -0x270(%rbp), %rax
movq %rax, -0x630(%rbp)
movq %rax, -0x278(%rbp)
leaq -0x279(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x119d0
movq -0x630(%rbp), %rdi
movq -0x628(%rbp), %rdx
leaq 0x100ea4(%rip), %rsi    # 0x151341
callq 0x24740
jmp 0x504a4
movb $0x0, -0x27a(%rbp)
leaq -0x270(%rbp), %rax
movq %rax, -0x250(%rbp)
movq $0x1, -0x248(%rbp)
leaq -0x27b(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0x26e30
movq -0x638(%rbp), %rcx
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0x2d6a0
jmp 0x504fa
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
leaq -0x240(%rbp), %rdx
callq 0x9e250
jmp 0x50516
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x200(%rbp), %rdx
callq 0x3f820
jmp 0x50539
leaq -0x200(%rbp), %rdi
callq 0x11360
leaq -0x240(%rbp), %rdi
callq 0x25b00
leaq -0x27b(%rbp), %rdi
callq 0x279c0
leaq -0x270(%rbp), %rax
movq %rax, -0x648(%rbp)
addq $0x20, %rax
movq %rax, -0x640(%rbp)
movq -0x640(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x650(%rbp)
callq 0x11360
movq -0x648(%rbp), %rcx
movq -0x650(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x640(%rbp)
jne 0x50576
leaq -0x279(%rbp), %rdi
callq 0x11600
leaq -0x220(%rbp), %rdi
callq 0x11360
leaq -0x221(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x5182c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5183a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50750
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x506e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50688
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5067c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x11360
leaq -0x240(%rbp), %rdi
callq 0x25b00
leaq -0x27b(%rbp), %rdi
callq 0x279c0
leaq -0x270(%rbp), %rax
movq %rax, -0x660(%rbp)
addq $0x20, %rax
movq %rax, -0x658(%rbp)
movq -0x658(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x668(%rbp)
callq 0x11360
movq -0x660(%rbp), %rcx
movq -0x668(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x658(%rbp)
jne 0x506ad
jmp 0x506e0
leaq -0x279(%rbp), %rdi
callq 0x11600
testb $0x1, -0x27a(%rbp)
jne 0x506f7
jmp 0x50744
movq -0x278(%rbp), %rax
leaq -0x270(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x670(%rbp)
je 0x50742
movq -0x670(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x678(%rbp)
callq 0x11360
movq -0x678(%rbp), %rax
leaq -0x270(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x670(%rbp)
jne 0x50711
jmp 0x50744
leaq -0x220(%rbp), %rdi
callq 0x11360
leaq -0x221(%rbp), %rdi
callq 0x11600
jmp 0x5183a
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x5076f
leaq -0x298(%rbp), %rdi
callq 0x57390
movq -0x5a0(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
je 0x50909
movq -0x5a0(%rbp), %rax
cmpl $0x7d, 0xd0(%rax)
jne 0x507a4
jmp 0x50909
movq -0x5a0(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x2a8(%rbp), %rdi
callq 0x39980
jmp 0x507bd
leaq -0x2a8(%rbp), %rdi
callq 0x57630
testb $0x1, %al
jne 0x507cf
jmp 0x50817
leaq -0x298(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x57650
jmp 0x507e4
jmp 0x508cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5181e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x508f8
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x680(%rbp)
callq 0x119d0
movq -0x680(%rbp), %rdx
leaq 0x1009ee(%rip), %rsi    # 0x151226
leaq -0x2c8(%rbp), %rdi
callq 0x24740
jmp 0x50846
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x2c8(%rbp), %rdx
callq 0x3f820
jmp 0x50869
leaq -0x2c8(%rbp), %rdi
callq 0x11360
leaq -0x2c9(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x508d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x508bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x11360
leaq -0x2c9(%rbp), %rdi
callq 0x11600
jmp 0x508f8
movl $0x0, -0xbc(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x24b20
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51810
jmp 0x508f3
jmp 0x5077b
leaq -0x2a8(%rbp), %rdi
callq 0x24b20
jmp 0x5181e
movq -0x5a0(%rbp), %rax
cmpl $0x7d, 0xd0(%rax)
je 0x50c26
leaq -0x311(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x119d0
movq -0x688(%rbp), %rdx
leaq 0x100852(%rip), %rsi    # 0x151190
leaq -0x310(%rbp), %rdi
callq 0x24740
jmp 0x5094c
movb $0x1, -0x36a(%rbp)
leaq -0x360(%rbp), %rax
movq %rax, -0x698(%rbp)
movq %rax, -0x368(%rbp)
leaq -0x369(%rbp), %rdi
movq %rdi, -0x690(%rbp)
callq 0x119d0
movq -0x698(%rbp), %rdi
movq -0x690(%rbp), %rdx
leaq 0x104979(%rip), %rsi    # 0x155309
callq 0x24740
jmp 0x50997
movb $0x0, -0x36a(%rbp)
leaq -0x360(%rbp), %rax
movq %rax, -0x340(%rbp)
movq $0x1, -0x338(%rbp)
leaq -0x36b(%rbp), %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x26e30
movq -0x6a0(%rbp), %rcx
movq -0x340(%rbp), %rsi
movq -0x338(%rbp), %rdx
leaq -0x330(%rbp), %rdi
callq 0x2d6a0
jmp 0x509ed
leaq -0x2f0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
leaq -0x330(%rbp), %rdx
callq 0x9e250
jmp 0x50a09
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x2f0(%rbp), %rdx
callq 0x3f820
jmp 0x50a2c
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x330(%rbp), %rdi
callq 0x25b00
leaq -0x36b(%rbp), %rdi
callq 0x279c0
leaq -0x360(%rbp), %rax
movq %rax, -0x6b0(%rbp)
addq $0x20, %rax
movq %rax, -0x6a8(%rbp)
movq -0x6a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x11360
movq -0x6b0(%rbp), %rcx
movq -0x6b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6a8(%rbp)
jne 0x50a69
leaq -0x369(%rbp), %rdi
callq 0x11600
leaq -0x310(%rbp), %rdi
callq 0x11360
leaq -0x311(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x51810
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50c15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50ba5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50b4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x50b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x330(%rbp), %rdi
callq 0x25b00
leaq -0x36b(%rbp), %rdi
callq 0x279c0
leaq -0x360(%rbp), %rax
movq %rax, -0x6c8(%rbp)
addq $0x20, %rax
movq %rax, -0x6c0(%rbp)
movq -0x6c0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6d0(%rbp)
callq 0x11360
movq -0x6c8(%rbp), %rcx
movq -0x6d0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6c0(%rbp)
jne 0x50b72
jmp 0x50ba5
leaq -0x369(%rbp), %rdi
callq 0x11600
testb $0x1, -0x36a(%rbp)
jne 0x50bbc
jmp 0x50c09
movq -0x368(%rbp), %rax
leaq -0x360(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x6d8(%rbp)
je 0x50c07
movq -0x6d8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6e0(%rbp)
callq 0x11360
movq -0x6e0(%rbp), %rax
leaq -0x360(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x6d8(%rbp)
jne 0x50bd6
jmp 0x50c09
leaq -0x310(%rbp), %rdi
callq 0x11360
leaq -0x311(%rbp), %rdi
callq 0x11600
jmp 0x5181e
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x50c34
leaq -0x380(%rbp), %rdi
callq 0x59980
leaq -0x298(%rbp), %rdi
callq 0x593c0
cmpq $0x1, %rax
je 0x50d23
movq -0x5a0(%rbp), %r8
movq -0x18(%rbp), %rsi
movq %rsi, -0x6e8(%rbp)
movb $0x1, -0x3a1(%rbp)
addq $0x58, %r8
leaq -0x3a0(%rbp), %rdi
leaq -0x298(%rbp), %rdx
leaq -0x3a1(%rbp), %rcx
callq 0x573e0
jmp 0x50c8f
movq -0x6e8(%rbp), %rsi
leaq -0x390(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
leaq -0x3a0(%rbp), %rcx
leaq -0x1e0(%rbp), %r8
callq 0x599a0
jmp 0x50cb9
leaq -0x380(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x59a30
leaq -0x390(%rbp), %rdi
callq 0x59960
leaq -0x3a0(%rbp), %rdi
callq 0x574a0
jmp 0x50d83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51802
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x574a0
jmp 0x51802
movq -0x18(%rbp), %rax
movq %rax, -0x6f0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x298(%rbp), %rdi
callq 0x593e0
movq -0x6f0(%rbp), %rsi
movq %rax, %rcx
leaq -0x3b8(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
leaq -0x1e0(%rbp), %r8
callq 0x59a60
jmp 0x50d64
leaq -0x380(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x59a30
leaq -0x3b8(%rbp), %rdi
callq 0x59960
movq -0x5a0(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
jne 0x50dbe
movq -0x18(%rbp), %rdi
callq 0x58270
movq -0x5b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x59930
movl $0x1, -0xbc(%rbp)
jmp 0x517f4
movq -0x5a0(%rbp), %rax
movl 0xd0(%rax), %eax
movl %eax, -0x6f4(%rbp)
subl $-0x7, %eax
je 0x51739
jmp 0x50ddc
movl -0x6f4(%rbp), %eax
subl $-0x6, %eax
jne 0x517ce
jmp 0x50ded
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x50dfb
movq -0x5a0(%rbp), %rax
cmpl $0x7b, 0xd0(%rax)
je 0x51118
leaq -0x3f9(%rbp), %rdi
movq %rdi, -0x700(%rbp)
callq 0x119d0
movq -0x700(%rbp), %rdx
leaq 0x100360(%rip), %rsi    # 0x151190
leaq -0x3f8(%rbp), %rdi
callq 0x24740
jmp 0x50e3e
movb $0x1, -0x452(%rbp)
leaq -0x448(%rbp), %rax
movq %rax, -0x710(%rbp)
movq %rax, -0x450(%rbp)
leaq -0x451(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x119d0
movq -0x710(%rbp), %rdi
movq -0x708(%rbp), %rdx
leaq 0x1004bf(%rip), %rsi    # 0x151341
callq 0x24740
jmp 0x50e89
movb $0x0, -0x452(%rbp)
leaq -0x448(%rbp), %rax
movq %rax, -0x428(%rbp)
movq $0x1, -0x420(%rbp)
leaq -0x453(%rbp), %rdi
movq %rdi, -0x718(%rbp)
callq 0x26e30
movq -0x718(%rbp), %rcx
movq -0x428(%rbp), %rsi
movq -0x420(%rbp), %rdx
leaq -0x418(%rbp), %rdi
callq 0x2d6a0
jmp 0x50edf
leaq -0x3d8(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
leaq -0x418(%rbp), %rdx
callq 0x9e250
jmp 0x50efb
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x3d8(%rbp), %rdx
callq 0x3f820
jmp 0x50f1e
leaq -0x3d8(%rbp), %rdi
callq 0x11360
leaq -0x418(%rbp), %rdi
callq 0x25b00
leaq -0x453(%rbp), %rdi
callq 0x279c0
leaq -0x448(%rbp), %rax
movq %rax, -0x728(%rbp)
addq $0x20, %rax
movq %rax, -0x720(%rbp)
movq -0x720(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x730(%rbp)
callq 0x11360
movq -0x728(%rbp), %rcx
movq -0x730(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x720(%rbp)
jne 0x50f5b
leaq -0x451(%rbp), %rdi
callq 0x11600
leaq -0x3f8(%rbp), %rdi
callq 0x11360
leaq -0x3f9(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x517f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51107
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5103f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51033
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x11360
leaq -0x418(%rbp), %rdi
callq 0x25b00
leaq -0x453(%rbp), %rdi
callq 0x279c0
leaq -0x448(%rbp), %rax
movq %rax, -0x740(%rbp)
addq $0x20, %rax
movq %rax, -0x738(%rbp)
movq -0x738(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x748(%rbp)
callq 0x11360
movq -0x740(%rbp), %rcx
movq -0x748(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x738(%rbp)
jne 0x51064
jmp 0x51097
leaq -0x451(%rbp), %rdi
callq 0x11600
testb $0x1, -0x452(%rbp)
jne 0x510ae
jmp 0x510fb
movq -0x450(%rbp), %rax
leaq -0x448(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x750(%rbp)
je 0x510f9
movq -0x750(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x758(%rbp)
callq 0x11360
movq -0x758(%rbp), %rax
leaq -0x448(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x750(%rbp)
jne 0x510c8
jmp 0x510fb
leaq -0x3f8(%rbp), %rdi
callq 0x11360
leaq -0x3f9(%rbp), %rdi
callq 0x11600
jmp 0x51802
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x51126
leaq -0x470(%rbp), %rdi
callq 0x57390
movq -0x5a0(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
je 0x512c0
movq -0x5a0(%rbp), %rax
cmpl $0x7d, 0xd0(%rax)
jne 0x5115b
jmp 0x512c0
movq -0x5a0(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x480(%rbp), %rdi
callq 0x39980
jmp 0x51174
leaq -0x480(%rbp), %rdi
callq 0x57630
testb $0x1, %al
jne 0x51186
jmp 0x511ce
leaq -0x470(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x57650
jmp 0x5119b
jmp 0x51284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51728
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x512af
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0x760(%rbp)
callq 0x119d0
movq -0x760(%rbp), %rdx
leaq 0x100037(%rip), %rsi    # 0x151226
leaq -0x4a0(%rbp), %rdi
callq 0x24740
jmp 0x511fd
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x4a0(%rbp), %rdx
callq 0x3f820
jmp 0x51220
leaq -0x4a0(%rbp), %rdi
callq 0x11360
leaq -0x4a1(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x5128e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51276
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x11360
leaq -0x4a1(%rbp), %rdi
callq 0x11600
jmp 0x512af
movl $0x0, -0xbc(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x24b20
movl -0xbc(%rbp), %eax
testl %eax, %eax
jne 0x51717
jmp 0x512aa
jmp 0x51132
leaq -0x480(%rbp), %rdi
callq 0x24b20
jmp 0x51728
movq -0x5a0(%rbp), %rax
cmpl $0x7d, 0xd0(%rax)
je 0x515dd
leaq -0x4e9(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x119d0
movq -0x768(%rbp), %rdx
leaq 0xffe9b(%rip), %rsi     # 0x151190
leaq -0x4e8(%rbp), %rdi
callq 0x24740
jmp 0x51303
movb $0x1, -0x542(%rbp)
leaq -0x538(%rbp), %rax
movq %rax, -0x778(%rbp)
movq %rax, -0x540(%rbp)
leaq -0x541(%rbp), %rdi
movq %rdi, -0x770(%rbp)
callq 0x119d0
movq -0x778(%rbp), %rdi
movq -0x770(%rbp), %rdx
leaq 0x103fc2(%rip), %rsi    # 0x155309
callq 0x24740
jmp 0x5134e
movb $0x0, -0x542(%rbp)
leaq -0x538(%rbp), %rax
movq %rax, -0x518(%rbp)
movq $0x1, -0x510(%rbp)
leaq -0x543(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0x26e30
movq -0x780(%rbp), %rcx
movq -0x518(%rbp), %rsi
movq -0x510(%rbp), %rdx
leaq -0x508(%rbp), %rdi
callq 0x2d6a0
jmp 0x513a4
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
leaq -0x508(%rbp), %rdx
callq 0x9e250
jmp 0x513c0
movq -0x5a0(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x4c8(%rbp), %rdx
callq 0x3f820
jmp 0x513e3
leaq -0x4c8(%rbp), %rdi
callq 0x11360
leaq -0x508(%rbp), %rdi
callq 0x25b00
leaq -0x543(%rbp), %rdi
callq 0x279c0
leaq -0x538(%rbp), %rax
movq %rax, -0x790(%rbp)
addq $0x20, %rax
movq %rax, -0x788(%rbp)
movq -0x788(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x798(%rbp)
callq 0x11360
movq -0x790(%rbp), %rcx
movq -0x798(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x788(%rbp)
jne 0x51420
leaq -0x541(%rbp), %rdi
callq 0x11600
leaq -0x4e8(%rbp), %rdi
callq 0x11360
leaq -0x4e9(%rbp), %rdi
callq 0x11600
movl $0x1, -0xbc(%rbp)
jmp 0x51717
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x515cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x5155c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x51504
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x514f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x11360
leaq -0x508(%rbp), %rdi
callq 0x25b00
leaq -0x543(%rbp), %rdi
callq 0x279c0
leaq -0x538(%rbp), %rax
movq %rax, -0x7a8(%rbp)
addq $0x20, %rax
movq %rax, -0x7a0(%rbp)
movq -0x7a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7b0(%rbp)
callq 0x11360
movq -0x7a8(%rbp), %rcx
movq -0x7b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7a0(%rbp)
jne 0x51529
jmp 0x5155c
leaq -0x541(%rbp), %rdi
callq 0x11600
testb $0x1, -0x542(%rbp)
jne 0x51573
jmp 0x515c0
movq -0x540(%rbp), %rax
leaq -0x538(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x7b8(%rbp)
je 0x515be
movq -0x7b8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7c0(%rbp)
callq 0x11360
movq -0x7c0(%rbp), %rax
leaq -0x538(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x7b8(%rbp)
jne 0x5158d
jmp 0x515c0
leaq -0x4e8(%rbp), %rdi
callq 0x11360
leaq -0x4e9(%rbp), %rdi
callq 0x11600
jmp 0x51728
movq -0x5a0(%rbp), %rdi
callq 0x38fd0
jmp 0x515eb
leaq -0x470(%rbp), %rdi
callq 0x593c0
cmpq $0x1, %rax
je 0x516bb
leaq -0x380(%rbp), %rdi
callq 0x59910
movq -0x5a0(%rbp), %r8
movq %rax, -0x7c8(%rbp)
movq -0x18(%rbp), %rsi
movb $0x1, -0x569(%rbp)
addq $0x58, %r8
leaq -0x568(%rbp), %rdi
leaq -0x470(%rbp), %rdx
leaq -0x569(%rbp), %rcx
callq 0x573e0
jmp 0x51646
leaq -0x558(%rbp), %rdi
movq %rdi, -0x7d0(%rbp)
leaq -0x568(%rbp), %rsi
callq 0x57470
movq -0x7c8(%rbp), %rdi
movq -0x7d0(%rbp), %rsi
callq 0xdfac0
jmp 0x51675
leaq -0x558(%rbp), %rdi
callq 0x24b20
leaq -0x568(%rbp), %rdi
callq 0x574a0
jmp 0x516f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x558(%rbp), %rdi
callq 0x24b20
leaq -0x568(%rbp), %rdi
callq 0x574a0
jmp 0x51728
leaq -0x380(%rbp), %rdi
callq 0x59910
movq %rax, -0x7d8(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x470(%rbp), %rdi
callq 0x593e0
movq -0x7d8(%rbp), %rdi
movq %rax, %rsi
callq 0xdfac0
jmp 0x516ef
jmp 0x516f1
movq -0x18(%rbp), %rdi
callq 0x58270
movq -0x5b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x59930
movl $0x1, -0xbc(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x574c0
jmp 0x517f4
leaq -0x470(%rbp), %rdi
callq 0x574c0
jmp 0x51802
leaq -0x380(%rbp), %rdi
callq 0x59910
movq -0x5a0(%rbp), %rsi
movq %rax, -0x7e0(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x580(%rbp), %rdi
callq 0x4fef0
jmp 0x51765
movq -0x7e0(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0xdfac0
jmp 0x5177a
leaq -0x580(%rbp), %rdi
callq 0x24b20
movq -0x18(%rbp), %rdi
callq 0x58270
movq -0x5b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x59930
movl $0x1, -0xbc(%rbp)
jmp 0x517f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x24b20
jmp 0x51802
movq -0x18(%rbp), %rdi
callq 0x58270
movq -0x5b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x59930
movl $0x1, -0xbc(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x59960
jmp 0x51810
leaq -0x380(%rbp), %rdi
callq 0x59960
jmp 0x5181e
leaq -0x298(%rbp), %rdi
callq 0x574c0
jmp 0x5182c
leaq -0x298(%rbp), %rdi
callq 0x574c0
jmp 0x5183a
leaq -0x1e0(%rbp), %rdi
callq 0x2a480
jmp 0x51848
leaq -0x1e0(%rbp), %rdi
callq 0x2a480
jmp 0x51864
leaq -0xb8(%rbp), %rdi
callq 0x24b20
movq -0x5a8(%rbp), %rax
addq $0x7e0, %rsp            # imm = 0x7E0
popq %rbp
retq
leaq -0xb8(%rbp), %rdi
callq 0x24b20
movq -0xa0(%rbp), %rdi
callq 0x119c0
nopl (%rax)