// File: Nallantli[P]Rossa/main/rossa/node_parser/node_parser.cpp
// Function: node_parser_t::parseCallNode(std::vector<node_scope_t, std::allocator<node_scope_t>>*, std::shared_ptr<Node> const&)
ptr_node_t node_parser_t::parseCallNode(std::vector<node_scope_t> *scopes, const ptr_node_t &a)
{
	auto marker = tokens.at(index - 2);
	nextToken();
	std::vector<ptr_node_t> args;
	int i = 0;
	while (currentToken.type != NULL_TOK && currentToken.type != ')')
	{
		if (i > 0)
		{
			if (currentToken.type != ',')
				return logErrorN(util::format(_EXPECTED_ERROR_, {","}), currentToken);
			nextToken();
		}
		i++;
		if (auto b = parseEquNode(scopes))
			args.push_back(b);
		else
			return logErrorN(_EXPECTED_FUNCTION_PARAM_, currentToken);
		if (currentToken.type == NULL_TOK)
			return logErrorN(util::format(_EXPECTED_ERROR_, {")"}), currentToken);
	}

	nextToken();

	ptr_node_t ret;
	if (a->getType() == Node::type_t::INS_NODE)
	{
		auto a_a = reinterpret_cast<InsNode *>(a.get())->getCallee();
		auto a_b = reinterpret_cast<InsNode *>(a.get())->getArg();
		if (a_b->getType() == Node::type_t::BID_NODE)
		{
			auto nkey = reinterpret_cast<BIDNode *>(a_b.get());
			std::string key = nkey->getKey();
			/*if (!args.empty())
				return logErrorN("Built in functions take a single argument", currentToken);*/

			if (key == KEYWORD_LENGTH)
			{
				ret = std::make_shared<CallBuiltNode>(*scopes, TOK_LENGTH, a_a, marker);
			}
			if (key == KEYWORD_ALLOC)
			{
				ret = std::make_shared<CallBuiltNode>(*scopes, TOK_ALLOC, a_a, marker);
			}
			if (key == KEYWORD_PARSE)
			{
				ret = std::make_shared<CallBuiltNode>(*scopes, TOK_PARSE, a_a, marker);
			}
			if (key == KEYWORD_CHAR_N)
			{
				ret = std::make_shared<CallBuiltNode>(*scopes, TOK_CHARN, a_a, marker);
			}
			if (key == KEYWORD_CHAR_S)
			{
				ret = std::make_shared<CallBuiltNode>(*scopes, TOK_CHARS, a_a, marker);
			}

			ret = parseTrailingNode(scopes, ret, true);
		}
		else
		{
			ret = std::make_shared<CallNode>(*scopes, std::make_shared<InsNode>(*scopes, a_a, a_b, currentToken), args, marker);
		}
		return parseTrailingNode(scopes, ret, true);
	}

	ret = std::make_shared<CallNode>(*scopes, a, args, marker);
	return parseTrailingNode(scopes, ret, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x480, %rsp            # imm = 0x480
movq %rdi, -0x388(%rbp)
movq %rdi, %rax
movq %rax, -0x380(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x378(%rbp)
movq %rax, %rdi
addq $0x10, %rdi
movl 0x50(%rax), %eax
addl $-0x2, %eax
movl %eax, %esi
callq 0x56f60
movq %rax, %rsi
leaq -0xa0(%rbp), %rdi
callq 0x2ee00
movq -0x378(%rbp), %rdi
callq 0x38fd0
jmp 0x3dad8
leaq -0xc8(%rbp), %rdi
callq 0x57390
movl $0x0, -0xcc(%rbp)
movq -0x378(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, 0xd0(%rcx)
movb %al, -0x389(%rbp)
je 0x3db1d
movq -0x378(%rbp), %rax
cmpl $0x29, 0xd0(%rax)
setne %al
movb %al, -0x389(%rbp)
movb -0x389(%rbp), %al
testb $0x1, %al
jne 0x3db2c
jmp 0x3e310
cmpl $0x0, -0xcc(%rbp)
jle 0x3de94
movq -0x378(%rbp), %rax
cmpl $0x2c, 0xd0(%rax)
je 0x3de6d
leaq -0x111(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x119d0
movq -0x398(%rbp), %rdx
leaq 0x113622(%rip), %rsi    # 0x151190
leaq -0x110(%rbp), %rdi
callq 0x24740
jmp 0x3db7c
movb $0x1, -0x16a(%rbp)
leaq -0x160(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x119d0
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rdx
leaq 0x113830(%rip), %rsi    # 0x1513f0
callq 0x24740
jmp 0x3dbc7
movb $0x0, -0x16a(%rbp)
leaq -0x160(%rbp), %rax
movq %rax, -0x140(%rbp)
movq $0x1, -0x138(%rbp)
leaq -0x16b(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x26e30
movq -0x3b0(%rbp), %rcx
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
leaq -0x130(%rbp), %rdi
callq 0x2d6a0
jmp 0x3dc1d
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x9e250
jmp 0x3dc39
movq -0x378(%rbp), %rsi
movq -0x388(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0xf0(%rbp), %rdx
callq 0x3f820
jmp 0x3dc5c
leaq -0xf0(%rbp), %rdi
callq 0x11360
leaq -0x130(%rbp), %rdi
callq 0x25b00
leaq -0x16b(%rbp), %rdi
callq 0x279c0
leaq -0x160(%rbp), %rax
movq %rax, -0x3c0(%rbp)
addq $0x20, %rax
movq %rax, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x11360
movq -0x3c0(%rbp), %rcx
movq -0x3c8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3b8(%rbp)
jne 0x3dc99
leaq -0x169(%rbp), %rdi
callq 0x11600
leaq -0x110(%rbp), %rdi
callq 0x11360
leaq -0x111(%rbp), %rdi
callq 0x11600
movl $0x1, -0x170(%rbp)
jmp 0x3e8b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e8eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3de5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3ddec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3dd94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3dd88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x11360
leaq -0x130(%rbp), %rdi
callq 0x25b00
leaq -0x16b(%rbp), %rdi
callq 0x279c0
leaq -0x160(%rbp), %rax
movq %rax, -0x3d8(%rbp)
addq $0x20, %rax
movq %rax, -0x3d0(%rbp)
movq -0x3d0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x11360
movq -0x3d8(%rbp), %rcx
movq -0x3e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3d0(%rbp)
jne 0x3ddb9
jmp 0x3ddec
leaq -0x169(%rbp), %rdi
callq 0x11600
testb $0x1, -0x16a(%rbp)
jne 0x3de03
jmp 0x3de50
movq -0x168(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x3e8(%rbp)
je 0x3de4e
movq -0x3e8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x11360
movq -0x3f0(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x3e8(%rbp)
jne 0x3de1d
jmp 0x3de50
leaq -0x110(%rbp), %rdi
callq 0x11360
leaq -0x111(%rbp), %rdi
callq 0x11600
jmp 0x3e8df
movq -0x378(%rbp), %rdi
callq 0x38fd0
jmp 0x3de7b
jmp 0x3de94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e8df
movq -0x378(%rbp), %rsi
movl -0xcc(%rbp), %eax
incl %eax
movl %eax, -0xcc(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x180(%rbp), %rdi
callq 0x3f500
jmp 0x3debb
leaq -0x180(%rbp), %rdi
callq 0x57630
testb $0x1, %al
jne 0x3decd
jmp 0x3defe
leaq -0xc8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x57650
jmp 0x3dee2
jmp 0x3dfb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e1a1
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x119d0
movq -0x3f8(%rbp), %rdx
leaq 0x113280(%rip), %rsi    # 0x15119f
leaq -0x1a0(%rbp), %rdi
callq 0x24740
jmp 0x3df2d
movq -0x378(%rbp), %rsi
movq -0x388(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x1a0(%rbp), %rdx
callq 0x3f820
jmp 0x3df50
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x1a1(%rbp), %rdi
callq 0x11600
movl $0x1, -0x170(%rbp)
jmp 0x3dfc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3dfa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x1a1(%rbp), %rdi
callq 0x11600
jmp 0x3e1a1
movl $0x0, -0x170(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x24b20
movl -0x170(%rbp), %eax
testl %eax, %eax
jne 0x3e8b7
jmp 0x3dfdd
movq -0x378(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
jne 0x3e30b
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x119d0
movq -0x400(%rbp), %rdx
leaq 0x11317e(%rip), %rsi    # 0x151190
leaq -0x1e8(%rbp), %rdi
callq 0x24740
jmp 0x3e020
movb $0x1, -0x242(%rbp)
leaq -0x238(%rbp), %rax
movq %rax, -0x410(%rbp)
movq %rax, -0x240(%rbp)
leaq -0x241(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x119d0
movq -0x410(%rbp), %rdi
movq -0x408(%rbp), %rdx
leaq 0x114c85(%rip), %rsi    # 0x152ce9
callq 0x24740
jmp 0x3e06b
movb $0x0, -0x242(%rbp)
leaq -0x238(%rbp), %rax
movq %rax, -0x218(%rbp)
movq $0x1, -0x210(%rbp)
leaq -0x243(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x26e30
movq -0x418(%rbp), %rcx
movq -0x218(%rbp), %rsi
movq -0x210(%rbp), %rdx
leaq -0x208(%rbp), %rdi
callq 0x2d6a0
jmp 0x3e0c1
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x208(%rbp), %rdx
callq 0x9e250
jmp 0x3e0dd
movq -0x378(%rbp), %rsi
movq -0x388(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x1c8(%rbp), %rdx
callq 0x3f820
jmp 0x3e100
leaq -0x1c8(%rbp), %rdi
callq 0x11360
leaq -0x208(%rbp), %rdi
callq 0x25b00
leaq -0x243(%rbp), %rdi
callq 0x279c0
leaq -0x238(%rbp), %rax
movq %rax, -0x428(%rbp)
addq $0x20, %rax
movq %rax, -0x420(%rbp)
movq -0x420(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x430(%rbp)
callq 0x11360
movq -0x428(%rbp), %rcx
movq -0x430(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x420(%rbp)
jne 0x3e13d
leaq -0x241(%rbp), %rdi
callq 0x11600
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1e9(%rbp), %rdi
callq 0x11600
movl $0x1, -0x170(%rbp)
jmp 0x3e8b7
leaq -0x180(%rbp), %rdi
callq 0x24b20
jmp 0x3e8df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e2fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e28a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e232
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x11360
leaq -0x208(%rbp), %rdi
callq 0x25b00
leaq -0x243(%rbp), %rdi
callq 0x279c0
leaq -0x238(%rbp), %rax
movq %rax, -0x440(%rbp)
addq $0x20, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x448(%rbp)
callq 0x11360
movq -0x440(%rbp), %rcx
movq -0x448(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x438(%rbp)
jne 0x3e257
jmp 0x3e28a
leaq -0x241(%rbp), %rdi
callq 0x11600
testb $0x1, -0x242(%rbp)
jne 0x3e2a1
jmp 0x3e2ee
movq -0x240(%rbp), %rax
leaq -0x238(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x450(%rbp)
je 0x3e2ec
movq -0x450(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x458(%rbp)
callq 0x11360
movq -0x458(%rbp), %rax
leaq -0x238(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x450(%rbp)
jne 0x3e2bb
jmp 0x3e2ee
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1e9(%rbp), %rdi
callq 0x11600
jmp 0x3e8df
jmp 0x3daee
movq -0x378(%rbp), %rdi
callq 0x38fd0
jmp 0x3e31e
leaq -0x258(%rbp), %rdi
callq 0x576c0
movq -0x20(%rbp), %rdi
callq 0x2d030
movq %rax, %rdi
callq 0xd2b20
movl %eax, -0x45c(%rbp)
jmp 0x3e343
movl -0x45c(%rbp), %eax
cmpl $0x5, %eax
jne 0x3e812
movq -0x20(%rbp), %rdi
callq 0x327c0
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0xdee50
jmp 0x3e36c
movq -0x20(%rbp), %rdi
callq 0x327c0
movq %rax, %rsi
leaq -0x278(%rbp), %rdi
callq 0xdee90
jmp 0x3e386
leaq -0x278(%rbp), %rdi
callq 0x2d030
movq %rax, %rdi
callq 0xd2b20
movl %eax, -0x460(%rbp)
jmp 0x3e3a2
movl -0x460(%rbp), %eax
cmpl $0x19, %eax
jne 0x3e6f7
leaq -0x278(%rbp), %rdi
callq 0x327c0
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0xd4460
jmp 0x3e3d9
leaq 0x111f7a(%rip), %rsi    # 0x15035a
leaq -0x2a0(%rbp), %rdi
callq 0x24630
movb %al, -0x461(%rbp)
jmp 0x3e3f4
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x3e403
jmp 0x3e4bd
movq -0x18(%rbp), %rsi
movl $0xffffffe6, -0x2b4(%rbp) # imm = 0xFFFFFFE6
leaq -0x2b0(%rbp), %rdi
leaq -0x2b4(%rbp), %rdx
leaq -0x268(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x576e0
jmp 0x3e434
leaq -0x258(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x57770
leaq -0x2b0(%rbp), %rdi
callq 0x57610
jmp 0x3e4bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e8a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e801
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x3e7f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x11360
jmp 0x3e7f5
leaq 0x11231c(%rip), %rsi    # 0x1507e0
leaq -0x2a0(%rbp), %rdi
callq 0x24630
movb %al, -0x462(%rbp)
jmp 0x3e4d8
movb -0x462(%rbp), %al
testb $0x1, %al
jne 0x3e4e4
jmp 0x3e534
movq -0x18(%rbp), %rsi
movl $0xffffffda, -0x2cc(%rbp) # imm = 0xFFFFFFDA
leaq -0x2c8(%rbp), %rdi
leaq -0x2cc(%rbp), %rdx
leaq -0x268(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x576e0
jmp 0x3e515
leaq -0x258(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x57770
leaq -0x2c8(%rbp), %rdi
callq 0x57610
leaq 0x1122f7(%rip), %rsi    # 0x150832
leaq -0x2a0(%rbp), %rdi
callq 0x24630
movb %al, -0x463(%rbp)
jmp 0x3e54f
movb -0x463(%rbp), %al
testb $0x1, %al
jne 0x3e55b
jmp 0x3e5ab
movq -0x18(%rbp), %rsi
movl $0xffffffc7, -0x2e4(%rbp) # imm = 0xFFFFFFC7
leaq -0x2e0(%rbp), %rdi
leaq -0x2e4(%rbp), %rdx
leaq -0x268(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x576e0
jmp 0x3e58c
leaq -0x258(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x57770
leaq -0x2e0(%rbp), %rdi
callq 0x57610
leaq 0x11226f(%rip), %rsi    # 0x150821
leaq -0x2a0(%rbp), %rdi
callq 0x24630
movb %al, -0x464(%rbp)
jmp 0x3e5c6
movb -0x464(%rbp), %al
testb $0x1, %al
jne 0x3e5d2
jmp 0x3e622
movq -0x18(%rbp), %rsi
movl $0xffffffcc, -0x2fc(%rbp) # imm = 0xFFFFFFCC
leaq -0x2f8(%rbp), %rdi
leaq -0x2fc(%rbp), %rdx
leaq -0x268(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x576e0
jmp 0x3e603
leaq -0x258(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x57770
leaq -0x2f8(%rbp), %rdi
callq 0x57610
leaq 0x1121fe(%rip), %rsi    # 0x150827
leaq -0x2a0(%rbp), %rdi
callq 0x24630
movb %al, -0x465(%rbp)
jmp 0x3e63d
movb -0x465(%rbp), %al
testb $0x1, %al
jne 0x3e649
jmp 0x3e699
movq -0x18(%rbp), %rsi
movl $0xffffffcb, -0x314(%rbp) # imm = 0xFFFFFFCB
leaq -0x310(%rbp), %rdi
leaq -0x314(%rbp), %rdx
leaq -0x268(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x576e0
jmp 0x3e67a
leaq -0x258(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x57770
leaq -0x310(%rbp), %rdi
callq 0x57610
movq -0x378(%rbp), %rsi
movq -0x18(%rbp), %rdx
movb $0x1, -0x329(%rbp)
leaq -0x328(%rbp), %rdi
leaq -0x258(%rbp), %rcx
leaq -0x329(%rbp), %r8
callq 0x3d860
jmp 0x3e6c7
leaq -0x258(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x577a0
leaq -0x328(%rbp), %rdi
callq 0x24b20
leaq -0x2a0(%rbp), %rdi
callq 0x11360
jmp 0x3e7a0
movq -0x378(%rbp), %r8
movq -0x18(%rbp), %rsi
movq %rsi, -0x470(%rbp)
addq $0x58, %r8
leaq -0x350(%rbp), %rdi
leaq -0x268(%rbp), %rdx
leaq -0x278(%rbp), %rcx
callq 0x57860
jmp 0x3e729
movq -0x470(%rbp), %rsi
leaq -0x340(%rbp), %rdi
leaq -0x350(%rbp), %rdx
leaq -0xc8(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x577d0
jmp 0x3e753
leaq -0x258(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x578f0
leaq -0x340(%rbp), %rdi
callq 0x57920
leaq -0x350(%rbp), %rdi
callq 0x57940
jmp 0x3e7a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x57940
jmp 0x3e7f5
movq -0x378(%rbp), %rsi
movq -0x388(%rbp), %rdi
movq -0x18(%rbp), %rdx
movb $0x1, -0x351(%rbp)
leaq -0x258(%rbp), %rcx
leaq -0x351(%rbp), %r8
callq 0x3d860
jmp 0x3e7ce
movl $0x1, -0x170(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x24b20
leaq -0x268(%rbp), %rdi
callq 0x24b20
jmp 0x3e89b
leaq -0x278(%rbp), %rdi
callq 0x24b20
leaq -0x268(%rbp), %rdi
callq 0x24b20
jmp 0x3e8a9
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x368(%rbp), %rdi
leaq -0xc8(%rbp), %rcx
leaq -0xa0(%rbp), %r8
callq 0x57960
jmp 0x3e836
leaq -0x258(%rbp), %rdi
movq %rdi, -0x478(%rbp)
leaq -0x368(%rbp), %rsi
movq %rsi, -0x480(%rbp)
callq 0x578f0
movq -0x480(%rbp), %rdi
callq 0x57920
movq -0x388(%rbp), %rdi
movq -0x378(%rbp), %rsi
movq -0x478(%rbp), %rcx
movq -0x18(%rbp), %rdx
movb $0x1, -0x369(%rbp)
leaq -0x369(%rbp), %r8
callq 0x3d860
jmp 0x3e891
movl $0x1, -0x170(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x24b20
jmp 0x3e8b7
leaq -0x258(%rbp), %rdi
callq 0x24b20
jmp 0x3e8df
leaq -0xc8(%rbp), %rdi
callq 0x574c0
leaq -0xa0(%rbp), %rdi
callq 0x2a480
movq -0x380(%rbp), %rax
addq $0x480, %rsp            # imm = 0x480
popq %rbp
retq
leaq -0xc8(%rbp), %rdi
callq 0x574c0
leaq -0xa0(%rbp), %rdi
callq 0x2a480
movq -0xa8(%rbp), %rdi
callq 0x119c0
nopw %cs:(%rax,%rax)