// File: Nallantli[P]Rossa/main/rossa/node_parser/node_parser.cpp
// Function: node_parser_t::parseSigNode(std::vector<node_scope_t, std::allocator<node_scope_t>>*)
std::pair<signature_t, std::vector<std::pair<bool, hash_ull>>> node_parser_t::parseSigNode(std::vector<node_scope_t> *scopes)
{
	if (currentToken.type != '(')
		return logErrorSN(util::format(_EXPECTED_ERROR_, {"("}), currentToken);
	nextToken();

	if (currentToken.type == TOK_VAR_ARGS)
	{
		nextToken();
		if (currentToken.type != ')')
			return logErrorSN(util::format(_EXPECTED_ERROR_, {")"}), currentToken);
		nextToken();
		return {signature_t(), {{true, static_cast<hash_ull>(0)}}};
	}

	std::vector<std::pair<bool, hash_ull>> args;
	std::vector<parameter_t> types;

	int i = 0;
	while (currentToken.type != NULL_TOK && currentToken.type != ')')
	{
		if (i > 0)
		{
			if (currentToken.type != ',')
				return logErrorSN(util::format(_EXPECTED_ERROR_, {","}), currentToken);
			nextToken();
		}
		i++;

		int type = currentToken.type == TOK_REF;
		if (type)
		{
			nextToken();
		}
		std::string arg;

		if (currentToken.type == TOK_IDF)
			arg = currentToken.valueString;
		else
			return logErrorSN("Expected variable identifier", currentToken);
		nextToken();

		parameter_t pt({}, {value_type_enum::ANY});
		if (currentToken.type == ':')
		{
			aug_type_t ftype = {value_type_enum::ANY};
			nextToken();
			switch (currentToken.type)
			{
			case TOK_BOOLEAN:
				ftype = {value_type_enum::BOOLEAN_D};
				nextToken();
				break;
			case TOK_NUMBER:
				ftype = {value_type_enum::NUMBER};
				nextToken();
				break;
			case TOK_ARRAY:
				ftype = {value_type_enum::ARRAY};
				nextToken();
				break;
			case TOK_STRING:
				ftype = {value_type_enum::STRING};
				nextToken();
				break;
			case TOK_DICTIONARY:
				ftype = {value_type_enum::DICTIONARY};
				nextToken();
				break;
			case TOK_OBJECT:
				ftype = {value_type_enum::OBJECT};
				nextToken();
				break;
			case TOK_FUNCTION:
				ftype = {value_type_enum::FUNCTION};
				nextToken();
				break;
			case TOK_POINTER:
				ftype = {value_type_enum::POINTER};
				nextToken();
				break;
			case TOK_ANY:
				nextToken();
				break;
			case TOK_TYPE_NAME:
				ftype = {value_type_enum::TYPE_NAME};
				nextToken();
				break;
			case TOK_IDF:
			{
				ftype = {};
				while (currentToken.type == TOK_IDF)
				{
					ftype.push_back(ROSSA_HASH(currentToken.valueString));
					nextToken();
					if (currentToken.type != TOK_INNER)
						break;
					nextToken();
				}
				break;
			}
			default:
				return logErrorSN(_EXPECTED_BASE_TYPE_, currentToken);
			}
			if (currentToken.valueString == "<")
			{
				pt = parseParamTypeNode(scopes, ftype);
			}
			else
			{
				pt = parameter_t({}, ftype);
			}
		}

		args.push_back({type, ROSSA_HASH(arg)});
		types.push_back(pt);

		scopes->back().var_ids.push_back(ROSSA_HASH(arg));

		if (currentToken.type == NULL_TOK)
			return logErrorSN(util::format(_EXPECTED_ERROR_, {")"}), currentToken);
	}
	nextToken();

	return {types, args};
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x850, %rsp            # imm = 0x850
movq %rdi, -0x668(%rbp)
movq %rdi, %rax
movq %rax, -0x660(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x658(%rbp)
cmpl $0x28, 0xd0(%rax)
je 0x424d0
leaq -0x59(%rbp), %rdi
movq %rdi, -0x670(%rbp)
callq 0x119d0
movq -0x670(%rbp), %rdx
leaq 0x10ef62(%rip), %rsi    # 0x151190
leaq -0x58(%rbp), %rdi
callq 0x24740
jmp 0x42239
movb $0x1, -0xc2(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0x680(%rbp)
movq %rax, -0xc0(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x119d0
movq -0x680(%rbp), %rdi
movq -0x678(%rbp), %rdx
leaq 0x10df11(%rip), %rsi    # 0x15018e
callq 0x24740
jmp 0x42284
movb $0x0, -0xc2(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq $0x1, -0x90(%rbp)
leaq -0xc3(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x26e30
movq -0x688(%rbp), %rcx
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x2d6a0
jmp 0x422da
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x9e250
jmp 0x422f0
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x38(%rbp), %rdx
callq 0x43a20
jmp 0x42310
leaq -0x38(%rbp), %rdi
callq 0x11360
leaq -0x88(%rbp), %rdi
callq 0x25b00
leaq -0xc3(%rbp), %rdi
callq 0x279c0
leaq -0xb8(%rbp), %rax
movq %rax, -0x698(%rbp)
addq $0x20, %rax
movq %rax, -0x690(%rbp)
movq -0x690(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x11360
movq -0x698(%rbp), %rcx
movq -0x6a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x690(%rbp)
jne 0x4234a
leaq -0xc1(%rbp), %rdi
callq 0x11600
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0x59(%rbp), %rdi
callq 0x11600
jmp 0x43a07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x424c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x423fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x423f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x11360
leaq -0x88(%rbp), %rdi
callq 0x25b00
leaq -0xc3(%rbp), %rdi
callq 0x279c0
leaq -0xb8(%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 0x42422
jmp 0x42455
leaq -0xc1(%rbp), %rdi
callq 0x11600
testb $0x1, -0xc2(%rbp)
jne 0x4246c
jmp 0x424b9
movq -0xc0(%rbp), %rax
leaq -0xb8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x6c0(%rbp)
je 0x424b7
movq -0x6c0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6c8(%rbp)
callq 0x11360
movq -0x6c8(%rbp), %rax
leaq -0xb8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x6c0(%rbp)
jne 0x42486
jmp 0x424b9
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0x59(%rbp), %rdi
callq 0x11600
jmp 0x43a17
movq -0x658(%rbp), %rdi
callq 0x38fd0
movq -0x658(%rbp), %rax
cmpl $-0x3d, 0xd0(%rax)
jne 0x4291c
movq -0x658(%rbp), %rdi
callq 0x38fd0
movq -0x658(%rbp), %rax
cmpl $0x29, 0xd0(%rax)
je 0x427f1
leaq -0x109(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0x119d0
movq -0x6d0(%rbp), %rdx
leaq 0x10ec5f(%rip), %rsi    # 0x151190
leaq -0x108(%rbp), %rdi
callq 0x24740
jmp 0x4253f
movb $0x1, -0x162(%rbp)
leaq -0x158(%rbp), %rax
movq %rax, -0x6e0(%rbp)
movq %rax, -0x160(%rbp)
leaq -0x161(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0x119d0
movq -0x6e0(%rbp), %rdi
movq -0x6d8(%rbp), %rdx
leaq 0x110766(%rip), %rsi    # 0x152ce9
callq 0x24740
jmp 0x4258a
movb $0x0, -0x162(%rbp)
leaq -0x158(%rbp), %rax
movq %rax, -0x138(%rbp)
movq $0x1, -0x130(%rbp)
leaq -0x163(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x26e30
movq -0x6e8(%rbp), %rcx
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
leaq -0x128(%rbp), %rdi
callq 0x2d6a0
jmp 0x425e0
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0x128(%rbp), %rdx
callq 0x9e250
jmp 0x425fc
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0xe8(%rbp), %rdx
callq 0x43a20
jmp 0x4261f
leaq -0xe8(%rbp), %rdi
callq 0x11360
leaq -0x128(%rbp), %rdi
callq 0x25b00
leaq -0x163(%rbp), %rdi
callq 0x279c0
leaq -0x158(%rbp), %rax
movq %rax, -0x6f8(%rbp)
addq $0x20, %rax
movq %rax, -0x6f0(%rbp)
movq -0x6f0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x700(%rbp)
callq 0x11360
movq -0x6f8(%rbp), %rcx
movq -0x700(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6f0(%rbp)
jne 0x4265c
leaq -0x161(%rbp), %rdi
callq 0x11600
leaq -0x108(%rbp), %rdi
callq 0x11360
leaq -0x109(%rbp), %rdi
callq 0x11600
jmp 0x43a07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x427e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42718
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4270c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x11360
leaq -0x128(%rbp), %rdi
callq 0x25b00
leaq -0x163(%rbp), %rdi
callq 0x279c0
leaq -0x158(%rbp), %rax
movq %rax, -0x710(%rbp)
addq $0x20, %rax
movq %rax, -0x708(%rbp)
movq -0x708(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x718(%rbp)
callq 0x11360
movq -0x710(%rbp), %rcx
movq -0x718(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x708(%rbp)
jne 0x4273d
jmp 0x42770
leaq -0x161(%rbp), %rdi
callq 0x11600
testb $0x1, -0x162(%rbp)
jne 0x42787
jmp 0x427d4
movq -0x160(%rbp), %rax
leaq -0x158(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x720(%rbp)
je 0x427d2
movq -0x720(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x728(%rbp)
callq 0x11360
movq -0x728(%rbp), %rax
leaq -0x158(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x720(%rbp)
jne 0x427a1
jmp 0x427d4
leaq -0x108(%rbp), %rdi
callq 0x11360
leaq -0x109(%rbp), %rdi
callq 0x11600
jmp 0x43a17
movq -0x658(%rbp), %rdi
callq 0x38fd0
leaq -0x180(%rbp), %rdi
callq 0x838a0
movb $0x1, -0x1b9(%rbp)
movq $0x0, -0x1c8(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x1b9(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0x57ea0
jmp 0x42837
leaq -0x1b8(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq $0x1, -0x1a0(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x730(%rbp)
callq 0x385b0
movq -0x730(%rbp), %rcx
movq -0x1a8(%rbp), %rsi
movq -0x1a0(%rbp), %rdx
leaq -0x198(%rbp), %rdi
callq 0x57ed0
jmp 0x42886
movq -0x668(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x198(%rbp), %rdx
callq 0x57f50
jmp 0x428a2
leaq -0x198(%rbp), %rdi
callq 0x2a500
leaq -0x1c9(%rbp), %rdi
callq 0x2aa90
leaq -0x180(%rbp), %rdi
callq 0x57fb0
jmp 0x43a07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4290b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x428ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x2a500
leaq -0x1c9(%rbp), %rdi
callq 0x2aa90
leaq -0x180(%rbp), %rdi
callq 0x57fb0
jmp 0x43a17
leaq -0x1e8(%rbp), %rdi
callq 0x38310
leaq -0x200(%rbp), %rdi
callq 0x57fd0
movl $0x0, -0x204(%rbp)
movq -0x658(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, 0xd0(%rcx)
movb %al, -0x731(%rbp)
je 0x4296d
movq -0x658(%rbp), %rax
cmpl $0x29, 0xd0(%rax)
setne %al
movb %al, -0x731(%rbp)
movb -0x731(%rbp), %al
testb $0x1, %al
jne 0x4297c
jmp 0x4399f
cmpl $0x0, -0x204(%rbp)
jle 0x42ca9
movq -0x658(%rbp), %rax
cmpl $0x2c, 0xd0(%rax)
je 0x42c88
leaq -0x249(%rbp), %rdi
movq %rdi, -0x740(%rbp)
callq 0x119d0
movq -0x740(%rbp), %rdx
leaq 0x10e7d2(%rip), %rsi    # 0x151190
leaq -0x248(%rbp), %rdi
callq 0x24740
jmp 0x429cc
movb $0x1, -0x2a2(%rbp)
leaq -0x298(%rbp), %rax
movq %rax, -0x750(%rbp)
movq %rax, -0x2a0(%rbp)
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x748(%rbp)
callq 0x119d0
movq -0x750(%rbp), %rdi
movq -0x748(%rbp), %rdx
leaq 0x10e9e0(%rip), %rsi    # 0x1513f0
callq 0x24740
jmp 0x42a17
movb $0x0, -0x2a2(%rbp)
leaq -0x298(%rbp), %rax
movq %rax, -0x278(%rbp)
movq $0x1, -0x270(%rbp)
leaq -0x2a3(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x26e30
movq -0x758(%rbp), %rcx
movq -0x278(%rbp), %rsi
movq -0x270(%rbp), %rdx
leaq -0x268(%rbp), %rdi
callq 0x2d6a0
jmp 0x42a6d
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
leaq -0x268(%rbp), %rdx
callq 0x9e250
jmp 0x42a89
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x228(%rbp), %rdx
callq 0x43a20
jmp 0x42aac
leaq -0x228(%rbp), %rdi
callq 0x11360
leaq -0x268(%rbp), %rdi
callq 0x25b00
leaq -0x2a3(%rbp), %rdi
callq 0x279c0
leaq -0x298(%rbp), %rax
movq %rax, -0x768(%rbp)
addq $0x20, %rax
movq %rax, -0x760(%rbp)
movq -0x760(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x770(%rbp)
callq 0x11360
movq -0x768(%rbp), %rcx
movq -0x770(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x760(%rbp)
jne 0x42ae9
leaq -0x2a1(%rbp), %rdi
callq 0x11600
leaq -0x248(%rbp), %rdi
callq 0x11360
leaq -0x249(%rbp), %rdi
callq 0x11600
movl $0x1, -0x2a8(%rbp)
jmp 0x439d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42c77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42c07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42baf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42ba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x11360
leaq -0x268(%rbp), %rdi
callq 0x25b00
leaq -0x2a3(%rbp), %rdi
callq 0x279c0
leaq -0x298(%rbp), %rax
movq %rax, -0x780(%rbp)
addq $0x20, %rax
movq %rax, -0x778(%rbp)
movq -0x778(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x788(%rbp)
callq 0x11360
movq -0x780(%rbp), %rcx
movq -0x788(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x778(%rbp)
jne 0x42bd4
jmp 0x42c07
leaq -0x2a1(%rbp), %rdi
callq 0x11600
testb $0x1, -0x2a2(%rbp)
jne 0x42c1e
jmp 0x42c6b
movq -0x2a0(%rbp), %rax
leaq -0x298(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x790(%rbp)
je 0x42c69
movq -0x790(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x798(%rbp)
callq 0x11360
movq -0x798(%rbp), %rax
leaq -0x298(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x790(%rbp)
jne 0x42c38
jmp 0x42c6b
leaq -0x248(%rbp), %rdi
callq 0x11360
leaq -0x249(%rbp), %rdi
callq 0x11600
jmp 0x439ed
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x42c96
jmp 0x42ca9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x439ed
movq -0x658(%rbp), %rax
movl -0x204(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x204(%rbp)
cmpl $-0x28, 0xd0(%rax)
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x2ac(%rbp)
cmpl $0x0, -0x2ac(%rbp)
je 0x42ced
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x42ceb
jmp 0x42ced
leaq -0x2d0(%rbp), %rdi
callq 0x117c0
movq -0x658(%rbp), %rax
cmpl $-0x2, 0xd0(%rax)
jne 0x42d3b
movq -0x658(%rbp), %rsi
addq $0xb0, %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x11070
jmp 0x42d25
jmp 0x42deb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43991
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x119d0
movq -0x7a0(%rbp), %rdx
leaq 0x10e496(%rip), %rsi    # 0x1511f2
leaq -0x2f0(%rbp), %rdi
callq 0x24740
jmp 0x42d6a
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x2f0(%rbp), %rdx
callq 0x43a20
jmp 0x42d8d
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x2f1(%rbp), %rdi
callq 0x11600
movl $0x1, -0x2a8(%rbp)
jmp 0x43968
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42dda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x2f1(%rbp), %rdi
callq 0x11600
jmp 0x43991
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x42df9
xorps %xmm0, %xmm0
movaps %xmm0, -0x360(%rbp)
movq $0x0, -0x350(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x57bc0
movq $-0xb, -0x390(%rbp)
leaq -0x390(%rbp), %rax
movq %rax, -0x388(%rbp)
movq $0x1, -0x380(%rbp)
leaq -0x391(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x57c40
movq -0x7a8(%rbp), %rcx
movq -0x388(%rbp), %rsi
movq -0x380(%rbp), %rdx
leaq -0x378(%rbp), %rdi
callq 0x57c60
jmp 0x42e74
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rsi
leaq -0x378(%rbp), %rdx
callq 0x801d0
jmp 0x42e90
leaq -0x378(%rbp), %rdi
callq 0x57de0
leaq -0x391(%rbp), %rdi
callq 0x57ce0
leaq -0x360(%rbp), %rdi
callq 0x57be0
movq -0x658(%rbp), %rax
cmpl $0x3a, 0xd0(%rax)
jne 0x43582
movq $-0xb, -0x3c8(%rbp)
leaq -0x3c8(%rbp), %rax
movq %rax, -0x3c0(%rbp)
movq $0x1, -0x3b8(%rbp)
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0x7b0(%rbp)
callq 0x57c40
movq -0x7b0(%rbp), %rcx
movq -0x3c0(%rbp), %rsi
movq -0x3b8(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57c60
jmp 0x42f22
leaq -0x3c9(%rbp), %rdi
callq 0x57ce0
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x42f3c
movq -0x658(%rbp), %rax
movl 0xd0(%rax), %eax
addl $0x2e, %eax
movl %eax, %ecx
movq %rcx, -0x7b8(%rbp)
subl $0x2c, %eax
ja 0x4339c
movq -0x7b8(%rbp), %rax
leaq 0x10dba0(%rip), %rcx    # 0x150b0c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42f9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x57de0
leaq -0x391(%rbp), %rdi
callq 0x57ce0
leaq -0x360(%rbp), %rdi
callq 0x57be0
jmp 0x43991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3c9(%rbp), %rdi
callq 0x57ce0
jmp 0x43985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43571
movq $-0x3, -0x3e8(%rbp)
leaq -0x3e8(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq $0x1, -0x3d8(%rbp)
movq -0x3e0(%rbp), %rsi
movq -0x3d8(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x43026
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43034
jmp 0x4344c
movq $-0x2, -0x400(%rbp)
leaq -0x400(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq $0x1, -0x3f0(%rbp)
movq -0x3f8(%rbp), %rsi
movq -0x3f0(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x43079
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43087
jmp 0x4344c
movq $-0x5, -0x418(%rbp)
leaq -0x418(%rbp), %rax
movq %rax, -0x410(%rbp)
movq $0x1, -0x408(%rbp)
movq -0x410(%rbp), %rsi
movq -0x408(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x430cc
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x430da
jmp 0x4344c
movq $-0x4, -0x430(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x428(%rbp)
movq $0x1, -0x420(%rbp)
movq -0x428(%rbp), %rsi
movq -0x420(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x4311f
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x4312d
jmp 0x4344c
movq $-0x7, -0x448(%rbp)
leaq -0x448(%rbp), %rax
movq %rax, -0x440(%rbp)
movq $0x1, -0x438(%rbp)
movq -0x440(%rbp), %rsi
movq -0x438(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x43172
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43180
jmp 0x4344c
movq $-0x8, -0x460(%rbp)
leaq -0x460(%rbp), %rax
movq %rax, -0x458(%rbp)
movq $0x1, -0x450(%rbp)
movq -0x458(%rbp), %rsi
movq -0x450(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x431c5
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x431d3
jmp 0x4344c
movq $-0x6, -0x478(%rbp)
leaq -0x478(%rbp), %rax
movq %rax, -0x470(%rbp)
movq $0x1, -0x468(%rbp)
movq -0x470(%rbp), %rsi
movq -0x468(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x43218
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43226
jmp 0x4344c
movq $-0xa, -0x490(%rbp)
leaq -0x490(%rbp), %rax
movq %rax, -0x488(%rbp)
movq $0x1, -0x480(%rbp)
movq -0x488(%rbp), %rsi
movq -0x480(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x4326b
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43279
jmp 0x4344c
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x4328c
jmp 0x4344c
movq $-0x9, -0x4a8(%rbp)
leaq -0x4a8(%rbp), %rax
movq %rax, -0x4a0(%rbp)
movq $0x1, -0x498(%rbp)
movq -0x4a0(%rbp), %rsi
movq -0x498(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x432d1
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x432df
jmp 0x4344c
leaq -0x4b8(%rbp), %rdi
callq 0x57d50
movq -0x4b8(%rbp), %rsi
movq -0x4b0(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x57d00
jmp 0x4330c
jmp 0x4330e
movq -0x658(%rbp), %rax
cmpl $-0x2, 0xd0(%rax)
jne 0x43397
movq -0x658(%rbp), %rsi
addq $0xb0, %rsi
leaq 0x1a2765(%rip), %rdi    # 0x1e5a98
callq 0x2cb10
movq %rax, -0x7c0(%rbp)
jmp 0x43341
movq -0x7c0(%rbp), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x57d70
jmp 0x43364
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43372
movq -0x658(%rbp), %rax
cmpl $-0x27, 0xd0(%rax)
je 0x43384
jmp 0x43397
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x43392
jmp 0x4330e
jmp 0x4344c
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x119d0
movq -0x7c8(%rbp), %rdx
leaq 0x10ddfe(%rip), %rsi    # 0x1511bb
leaq -0x4e0(%rbp), %rdi
callq 0x24740
jmp 0x433cb
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x4e0(%rbp), %rdx
callq 0x43a20
jmp 0x433ee
leaq -0x4e0(%rbp), %rdi
callq 0x11360
leaq -0x4e1(%rbp), %rdi
callq 0x11600
movl $0x1, -0x2a8(%rbp)
jmp 0x43553
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4343b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x11360
leaq -0x4e1(%rbp), %rdi
callq 0x11600
jmp 0x43571
movq -0x658(%rbp), %rdi
addq $0xb0, %rdi
leaq 0x10cf36(%rip), %rsi    # 0x150397
callq 0x24630
movb %al, -0x7c9(%rbp)
jmp 0x4346e
movb -0x7c9(%rbp), %al
testb $0x1, %al
jne 0x4347a
jmp 0x434be
movq -0x658(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x530(%rbp), %rdi
leaq -0x3b0(%rbp), %rcx
callq 0x41520
jmp 0x4349a
leaq -0x340(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x57ff0
leaq -0x530(%rbp), %rdi
callq 0x57da0
jmp 0x43549
xorps %xmm0, %xmm0
movaps %xmm0, -0x590(%rbp)
movq $0x0, -0x580(%rbp)
leaq -0x590(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x57bc0
movq -0x7d8(%rbp), %rsi
leaq -0x578(%rbp), %rdi
leaq -0x3b0(%rbp), %rdx
callq 0x801d0
jmp 0x43502
leaq -0x340(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x57ff0
leaq -0x578(%rbp), %rdi
callq 0x57da0
leaq -0x590(%rbp), %rdi
callq 0x57be0
jmp 0x43549
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x57be0
jmp 0x43571
movl $0x0, -0x2a8(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x57de0
movl -0x2a8(%rbp), %eax
testl %eax, %eax
jne 0x4395c
jmp 0x4356f
jmp 0x43582
leaq -0x3b0(%rbp), %rdi
callq 0x57de0
jmp 0x43985
leaq 0x1a250f(%rip), %rdi    # 0x1e5a98
leaq -0x2d0(%rbp), %rsi
callq 0x2cb10
movq %rax, -0x7e0(%rbp)
jmp 0x4359e
movq -0x7e0(%rbp), %rax
movq %rax, -0x5a8(%rbp)
leaq -0x5a0(%rbp), %rdi
leaq -0x2ac(%rbp), %rsi
leaq -0x5a8(%rbp), %rdx
callq 0x58080
jmp 0x435c8
leaq -0x1e8(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x58050
jmp 0x435dd
leaq -0x200(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x580b0
jmp 0x435f2
movq -0x18(%rbp), %rdi
callq 0x30fe0
addq $0x8, %rax
movq %rax, -0x7f0(%rbp)
leaq 0x1a248b(%rip), %rdi    # 0x1e5a98
leaq -0x2d0(%rbp), %rsi
callq 0x2cb10
movq %rax, -0x7e8(%rbp)
jmp 0x43622
movq -0x7f0(%rbp), %rdi
movq -0x7e8(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x5b0(%rbp), %rsi
callq 0x58120
jmp 0x43645
movq -0x658(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
jne 0x43952
leaq -0x5f1(%rbp), %rdi
movq %rdi, -0x7f8(%rbp)
callq 0x119d0
movq -0x7f8(%rbp), %rdx
leaq 0x10db16(%rip), %rsi    # 0x151190
leaq -0x5f0(%rbp), %rdi
callq 0x24740
jmp 0x43688
movb $0x1, -0x64a(%rbp)
leaq -0x640(%rbp), %rax
movq %rax, -0x808(%rbp)
movq %rax, -0x648(%rbp)
leaq -0x649(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x119d0
movq -0x808(%rbp), %rdi
movq -0x800(%rbp), %rdx
leaq 0x10f61d(%rip), %rsi    # 0x152ce9
callq 0x24740
jmp 0x436d3
movb $0x0, -0x64a(%rbp)
leaq -0x640(%rbp), %rax
movq %rax, -0x620(%rbp)
movq $0x1, -0x618(%rbp)
leaq -0x64b(%rbp), %rdi
movq %rdi, -0x810(%rbp)
callq 0x26e30
movq -0x810(%rbp), %rcx
movq -0x620(%rbp), %rsi
movq -0x618(%rbp), %rdx
leaq -0x610(%rbp), %rdi
callq 0x2d6a0
jmp 0x43729
leaq -0x5d0(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
leaq -0x610(%rbp), %rdx
callq 0x9e250
jmp 0x43745
movq -0x658(%rbp), %rsi
movq -0x668(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x5d0(%rbp), %rdx
callq 0x43a20
jmp 0x43768
leaq -0x5d0(%rbp), %rdi
callq 0x11360
leaq -0x610(%rbp), %rdi
callq 0x25b00
leaq -0x64b(%rbp), %rdi
callq 0x279c0
leaq -0x640(%rbp), %rax
movq %rax, -0x820(%rbp)
addq $0x20, %rax
movq %rax, -0x818(%rbp)
movq -0x818(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x828(%rbp)
callq 0x11360
movq -0x820(%rbp), %rcx
movq -0x828(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x818(%rbp)
jne 0x437a5
leaq -0x649(%rbp), %rdi
callq 0x11600
leaq -0x5f0(%rbp), %rdi
callq 0x11360
leaq -0x5f1(%rbp), %rdi
callq 0x11600
movl $0x1, -0x2a8(%rbp)
jmp 0x4395c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43944
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x438d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4387c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x11360
leaq -0x610(%rbp), %rdi
callq 0x25b00
leaq -0x64b(%rbp), %rdi
callq 0x279c0
leaq -0x640(%rbp), %rax
movq %rax, -0x838(%rbp)
addq $0x20, %rax
movq %rax, -0x830(%rbp)
movq -0x830(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x840(%rbp)
callq 0x11360
movq -0x838(%rbp), %rcx
movq -0x840(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x830(%rbp)
jne 0x438a1
jmp 0x438d4
leaq -0x649(%rbp), %rdi
callq 0x11600
testb $0x1, -0x64a(%rbp)
jne 0x438eb
jmp 0x43938
movq -0x648(%rbp), %rax
leaq -0x640(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x848(%rbp)
je 0x43936
movq -0x848(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x850(%rbp)
callq 0x11360
movq -0x850(%rbp), %rax
leaq -0x640(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x848(%rbp)
jne 0x43905
jmp 0x43938
leaq -0x5f0(%rbp), %rdi
callq 0x11360
leaq -0x5f1(%rbp), %rdi
callq 0x11600
jmp 0x43985
movl $0x0, -0x2a8(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x57da0
leaq -0x2d0(%rbp), %rdi
callq 0x11360
movl -0x2a8(%rbp), %eax
testl %eax, %eax
jne 0x439d3
jmp 0x43980
jmp 0x4293e
leaq -0x340(%rbp), %rdi
callq 0x57da0
leaq -0x2d0(%rbp), %rdi
callq 0x11360
jmp 0x439ed
movq -0x658(%rbp), %rdi
callq 0x38fd0
jmp 0x439ad
movq -0x668(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
callq 0x58150
jmp 0x439c9
movl $0x1, -0x2a8(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x581b0
leaq -0x1e8(%rbp), %rdi
callq 0x2a500
jmp 0x43a07
leaq -0x200(%rbp), %rdi
callq 0x581b0
leaq -0x1e8(%rbp), %rdi
callq 0x2a500
jmp 0x43a17
movq -0x660(%rbp), %rax
addq $0x850, %rsp            # imm = 0x850
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x119c0