// File: /workspace/github_c_makefile_star2_O0/MikeGray-APH[P]LibLouisAPH/source/compile.c
// Function: compile_match
static int compile_match(void)
{
	struct rule *rule;
	enum table_hash_type hash_type;
	enum rule_direction direction;
	unichar *chars, *dots;
	int chars_len, dots_len;
	int chars_weight, dots_weight;
	struct filter *filter_forward, *filter_backward;
	unichar pattern[PATTERN_MAX], *before, *after;
	int before_len, after_len;

	filter_forward =
	filter_backward = NULL;
	before =
	after = NULL;

	if(!token_parse())
		goto return_fail;

	/*   -weak may be pointless for match,
	     but leave it for consistency   */
	chars_weight =
	dots_weight = 0;

	direction = BOTH;
	while(*token_crs == u'-')
	{
		if(token_is_equal("-forward", 8))
			direction = FORWARD;
		else if(token_is_equal("-backward", 9))
			direction = BACKWARD;
		else if(token_is_equal("-after", 6))
			chars_weight =
			dots_weight = 1;
		else
		{
			log_message(LOG_ERROR, "%s:%d  invalid match option %#S", table_file_names[include_depth], table_file_lines[include_depth], token_crs, token_len);
			return 0;
		}

		if(!token_parse())
			goto return_fail;
	}

	if(token_is_equal("init", 4))
		hash_type = TABLE_HASH_INIT;
	else if(token_is_equal("premode", 7))
		hash_type = TABLE_HASH_PREMODE;
	else if(token_is_equal("postmode", 8))
		hash_type = TABLE_HASH_POSTMODE;
	else if(token_is_equal("pretrans", 8))
		hash_type = TABLE_HASH_PRETRANS;
	else if(token_is_equal("trans", 5))
		hash_type = TABLE_HASH_TRANS;
	else if(token_is_equal("posttrans", 9))
		hash_type = TABLE_HASH_POSTTRANS;
	else if(token_is_equal("fini", 4))
		hash_type = TABLE_HASH_FINI;
	else
	{
		log_message(LOG_ERROR, "%s:%d  invalid match type %#S", table_file_names[include_depth], table_file_lines[include_depth], token_crs, token_len);
		return 0;
	}

	if(!token_parse())
		goto return_fail;

	/*   forward filter   */
	if(token_crs[0] == u'-' && token_len == 1)
	{
		before = NULL;
		before_len = 0;
	}
	else if(token_crs[0] == u'=' && token_len == 1)
	{
		if(rule_filter_forward->before)
		{
			before_len = rule_filter_forward->before_len;
			before = MALLOC((before_len + 1) * sizeof(unichar));
			if(!before)
			{
				LOG_ALLOCATE_FAIL
				goto return_fail_free;
			}
			memcpy(before, rule_filter_forward->before, (before_len + 1) * sizeof(unichar));
		}
		else
		{
			before = NULL;
			before_len = 0;
		}
	}
	else
	{
		if(token_convert_escapes_with_dots() <= 0)
			goto return_fail;
		before_len = pattern_compile(pattern, PATTERN_MAX, token_crs, token_len, table->attrs_chars, table->subpatterns);
		if(!before_len)
			goto return_fail;
		pattern_reverse(pattern);
		before = MALLOC((before_len + 1) * sizeof(unichar));
		if(!before)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		memcpy(before, pattern, (before_len + 1) * sizeof(unichar));
	}

	if(!token_parse())
		goto return_fail;

	/*   target chars   */
	chars_len = token_convert_escapes_with_dots();
	if(chars_len <= 0)
		goto return_fail;
	chars = token_crs;

	if(!token_parse())
		goto return_fail;

	/*   after pattern   */
	if(token_crs[0] == u'-' && token_len == 1)
	{
		after = NULL;
		after_len = 0;
	}
	else if(token_crs[0] == u'=' && token_len == 1)
	{
		if(rule_filter_forward->after)
		{
			after_len = rule_filter_forward->after_len;
			after = MALLOC((after_len + 1) * sizeof(unichar));
			if(!after)
			{
				LOG_ALLOCATE_FAIL
				goto return_fail_free;
			}
			memcpy(after, rule_filter_forward->after, (after_len + 1) * sizeof(unichar));
		}
		else
		{
			after = NULL;
			after_len = 0;
		}
	}
	else
	{
		if(token_convert_escapes_with_dots() <= 0)
			goto return_fail;
		after_len = pattern_compile(pattern, PATTERN_MAX, token_crs, token_len, table->attrs_chars, table->subpatterns);
		if(!after_len)
			goto return_fail;
		after = MALLOC((after_len + 1) * sizeof(unichar));
		if(!after)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		memcpy(after, pattern, (after_len + 1) * sizeof(unichar));
	}

	if(before || after)
	{
		filter_forward = filter_allocate();
		if(!filter_forward)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		filter_forward->nxt = NULL;
		filter_forward->name = NULL;
		filter_forward->before = before;
		filter_forward->before_len = before_len;
		filter_forward->after = after;
		filter_forward->after_len = after_len;
		before =
		after = NULL;
	}

	if(!token_parse())
		goto return_fail;

	/*   backward filter   */
	if(token_crs[0] == u'-' && token_len == 1)
	{
		before = NULL;
		before_len = 0;
	}
	else if(token_crs[0] == u'=' && token_len == 1)
	{
		if(rule_filter_backward->before)
		{
			before_len = rule_filter_backward->before_len;
			before = MALLOC((before_len + 1) * sizeof(unichar));
			if(!before)
			{
				LOG_ALLOCATE_FAIL
				goto return_fail_free;
			}
			memcpy(before, rule_filter_backward->before, (before_len + 1) * sizeof(unichar));
		}
		else
		{
			before = NULL;
			before_len = 0;
		}
	}
	else
	{
		if(token_convert_escapes_with_dots() <= 0)
			goto return_fail;
		before_len = pattern_compile(pattern, PATTERN_MAX, token_crs, token_len, table->attrs_chars, table->subpatterns);
		if(!before_len)
			goto return_fail;
		pattern_reverse(pattern);
		before = MALLOC((before_len + 1) * sizeof(unichar));
		if(!before)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		memcpy(before, pattern, (before_len + 1) * sizeof(unichar));
	}

	if(!token_parse())
		goto return_fail;

	/*   dots   */
	if(token_is_equal("-", 1))
	{
		//NOTE:  FORWARD direction may noy be necessary
		direction = FORWARD;
		dots_len = 0;
		dots = NULL;
	}
	else
	{
		if(hash_type == TABLE_HASH_TRANS)
			dots_len = token_convert_to_dots();
		else
			dots_len = token_convert_escapes_with_dots();
		if(dots_len <= 0)
			goto return_fail;
		dots = token_crs;
	}

	if(!token_parse())
		goto return_fail;

	/*   after pattern   */
	if(token_crs[0] == u'-' && token_len == 1)
	{
		after = NULL;
		after_len = 0;
	}
	else if(token_crs[0] == u'=' && token_len == 1)
	{
		if(rule_filter_backward->after)
		{
			after_len = rule_filter_backward->after_len;
			after = MALLOC((after_len + 1) * sizeof(unichar));
			if(!after)
			{
				LOG_ALLOCATE_FAIL
				goto return_fail_free;
			}
			memcpy(after, rule_filter_backward->after, (after_len + 1) * sizeof(unichar));
		}
		else
		{
			after = NULL;
			after_len = 0;
		}
	}
	else
	{
		if(token_convert_escapes_with_dots() <= 0)
			goto return_fail;
		after_len = pattern_compile(pattern, PATTERN_MAX, token_crs, token_len, table->attrs_chars, table->subpatterns);
		if(!after_len)
			goto return_fail;
		after = MALLOC((after_len + 1) * sizeof(unichar));
		if(!after)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		memcpy(after, pattern, (after_len + 1) * sizeof(unichar));
	}

	if(before || after)
	{
		filter_backward = filter_allocate();
		if(!filter_backward)
		{
			LOG_ALLOCATE_FAIL
			goto return_fail_free;
		}
		filter_backward->nxt = NULL;
		filter_backward->name = NULL;
		filter_backward->before = before;
		filter_backward->before_len = before_len;
		filter_backward->after = after;
		filter_backward->after_len = after_len;
		before =
		after = NULL;
	}

	rule = table_add_rule(table, hash_type, direction, filter_forward, filter_backward, chars, chars_len, dots, dots_len, chars_weight, dots_weight);
	if(!rule)
	{
		log_message(LOG_ERROR, "%s:%d  unable to add match rule", table_file_names[include_depth], table_file_lines[include_depth]);
		goto return_fail_free;
	}
	rule->attrs = rule_attrs;
	rule->direction = direction;

	return 1;

	return_fail:
	log_message(LOG_ERROR, "%s:%d  invalid match", table_file_names[include_depth], table_file_lines[include_depth]);

	return_fail_free:
	if(before)
		FREE(before);
	if(after)
		FREE(after);
	if(filter_forward)
		FREE(filter_forward);
	if(filter_backward)
		FREE(filter_backward);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x4ad0, %rsp           # imm = 0x4AD0
movq $0x0, -0x58(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x4ab0(%rbp)
movq $0x0, -0x4aa8(%rbp)
callq 0x6190
cmpl $0x0, %eax
jne 0x83e3
jmp 0x9025
movl $0x0, -0x48(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x28(%rbp)
movq 0x1de09(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x84da
leaq 0x16484(%rip), %rdi     # 0x1e896
movl $0x8, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x842d
movl $0x1, -0x28(%rbp)
jmp 0x84c6
leaq 0x1646b(%rip), %rdi     # 0x1e89f
movl $0x9, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x844c
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
jmp 0x84c4
leaq 0x16456(%rip), %rdi     # 0x1e8a9
movl $0x6, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x8472
movl $0x1, -0x48(%rbp)
movl $0x1, -0x44(%rbp)
jmp 0x84c2
movslq 0x1bd1f(%rip), %rcx     # 0x24198
leaq 0x1bd40(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1bd0d(%rip), %rcx     # 0x24198
leaq 0x1bd0e(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movq 0x1dd6c(%rip), %r8      # 0x26208
movl 0x1dd5d(%rip), %r9d     # 0x26200
movl $0x6, %edi
leaq 0x16499(%rip), %rsi     # 0x1e948
movb $0x0, %al
callq 0xf610
movl $0x0, -0x14(%rbp)
jmp 0x90ae
jmp 0x84c4
jmp 0x84c6
callq 0x6190
cmpl $0x0, %eax
jne 0x84d5
jmp 0x9025
jmp 0x83f8
leaq 0x163ee(%rip), %rdi     # 0x1e8cf
movl $0x4, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x84fc
movl $0x1, -0x24(%rbp)
jmp 0x861e
leaq 0x163d1(%rip), %rdi     # 0x1e8d4
movl $0x7, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x851e
movl $0x2, -0x24(%rbp)
jmp 0x861c
leaq 0x163b7(%rip), %rdi     # 0x1e8dc
movl $0x8, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x8540
movl $0x3, -0x24(%rbp)
jmp 0x861a
leaq 0x1639e(%rip), %rdi     # 0x1e8e5
movl $0x8, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x8562
movl $0x4, -0x24(%rbp)
jmp 0x8618
leaq 0x1637f(%rip), %rdi     # 0x1e8e8
movl $0x5, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x8584
movl $0x5, -0x24(%rbp)
jmp 0x8616
leaq 0x16363(%rip), %rdi     # 0x1e8ee
movl $0x9, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x85a3
movl $0x6, -0x24(%rbp)
jmp 0x8614
leaq 0x1634e(%rip), %rdi     # 0x1e8f8
movl $0x4, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x85c2
movl $0x7, -0x24(%rbp)
jmp 0x8612
movslq 0x1bbcf(%rip), %rcx     # 0x24198
leaq 0x1bbf0(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1bbbd(%rip), %rcx     # 0x24198
leaq 0x1bbbe(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movq 0x1dc1c(%rip), %r8      # 0x26208
movl 0x1dc0d(%rip), %r9d     # 0x26200
movl $0x6, %edi
leaq 0x16369(%rip), %rsi     # 0x1e968
movb $0x0, %al
callq 0xf610
movl $0x0, -0x14(%rbp)
jmp 0x90ae
jmp 0x8614
jmp 0x8616
jmp 0x8618
jmp 0x861a
jmp 0x861c
jmp 0x861e
callq 0x6190
cmpl $0x0, %eax
jne 0x862d
jmp 0x9025
movq 0x1dbd4(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x865f
cmpl $0x1, 0x1dbbd(%rip)     # 0x26200
jne 0x865f
movq $0x0, -0x4aa8(%rbp)
movl $0x0, -0x4ab4(%rbp)
jmp 0x87fc
movq 0x1dba2(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x3d, %eax
jne 0x872c
cmpl $0x1, 0x1db87(%rip)     # 0x26200
jne 0x872c
movq 0x1baf2(%rip), %rax     # 0x24178
cmpq $0x0, 0x8(%rax)
je 0x8712
movq 0x1bae0(%rip), %rax     # 0x24178
movl 0x18(%rax), %eax
movl %eax, -0x4ab4(%rbp)
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4aa8(%rbp)
cmpq $0x0, -0x4aa8(%rbp)
jne 0x86ea
movl $0x7, %edi
leaq 0x15ba6(%rip), %rsi     # 0x1e278
leaq 0x15c48(%rip), %rdx     # 0x1e321
movl $0x53c, %ecx            # imm = 0x53C
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4aa8(%rbp), %rdi
movq 0x1ba80(%rip), %rax     # 0x24178
movq 0x8(%rax), %rsi
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8727
movq $0x0, -0x4aa8(%rbp)
movl $0x0, -0x4ab4(%rbp)
jmp 0x87fa
callq 0xa0a0
cmpl $0x0, %eax
jg 0x873b
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
movq 0x1dabf(%rip), %rdx     # 0x26208
movl 0x1dab1(%rip), %ecx     # 0x26200
movq 0x1ba0a(%rip), %r8      # 0x24160
addq $0x30, %r8
movq 0x1b9ff(%rip), %rax     # 0x24160
movq 0x28(%rax), %r9
movl $0x2520, %esi           # imm = 0x2520
callq 0xbf90
movl %eax, -0x4ab4(%rbp)
cmpl $0x0, -0x4ab4(%rbp)
jne 0x8783
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
callq 0xca30
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4aa8(%rbp)
cmpq $0x0, -0x4aa8(%rbp)
jne 0x87d8
movl $0x7, %edi
leaq 0x15ab8(%rip), %rsi     # 0x1e278
leaq 0x15b5a(%rip), %rdx     # 0x1e321
movl $0x552, %ecx            # imm = 0x552
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4aa8(%rbp), %rdi
leaq -0x4aa0(%rbp), %rsi
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x87fc
callq 0x6190
cmpl $0x0, %eax
jne 0x880b
jmp 0x9025
callq 0xa0a0
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jg 0x881e
jmp 0x9025
movq 0x1d9e3(%rip), %rax     # 0x26208
movq %rax, -0x30(%rbp)
callq 0x6190
cmpl $0x0, %eax
jne 0x8838
jmp 0x9025
movq 0x1d9c9(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x886a
cmpl $0x1, 0x1d9b2(%rip)     # 0x26200
jne 0x886a
movq $0x0, -0x4ab0(%rbp)
movl $0x0, -0x4ab8(%rbp)
jmp 0x89fb
movq 0x1d997(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x3d, %eax
jne 0x8937
cmpl $0x1, 0x1d97c(%rip)     # 0x26200
jne 0x8937
movq 0x1b8e7(%rip), %rax     # 0x24178
cmpq $0x0, 0x10(%rax)
je 0x891d
movq 0x1b8d5(%rip), %rax     # 0x24178
movl 0x1c(%rax), %eax
movl %eax, -0x4ab8(%rbp)
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4ab0(%rbp)
cmpq $0x0, -0x4ab0(%rbp)
jne 0x88f5
movl $0x7, %edi
leaq 0x1599b(%rip), %rsi     # 0x1e278
leaq 0x15a3d(%rip), %rdx     # 0x1e321
movl $0x572, %ecx            # imm = 0x572
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4ab0(%rbp), %rdi
movq 0x1b875(%rip), %rax     # 0x24178
movq 0x10(%rax), %rsi
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8932
movq $0x0, -0x4ab0(%rbp)
movl $0x0, -0x4ab8(%rbp)
jmp 0x89f9
callq 0xa0a0
cmpl $0x0, %eax
jg 0x8946
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
movq 0x1d8b4(%rip), %rdx     # 0x26208
movl 0x1d8a6(%rip), %ecx     # 0x26200
movq 0x1b7ff(%rip), %r8      # 0x24160
addq $0x30, %r8
movq 0x1b7f4(%rip), %rax     # 0x24160
movq 0x28(%rax), %r9
movl $0x2520, %esi           # imm = 0x2520
callq 0xbf90
movl %eax, -0x4ab8(%rbp)
cmpl $0x0, -0x4ab8(%rbp)
jne 0x898e
jmp 0x9025
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4ab0(%rbp)
cmpq $0x0, -0x4ab0(%rbp)
jne 0x89d7
movl $0x7, %edi
leaq 0x158b9(%rip), %rsi     # 0x1e278
leaq 0x1595b(%rip), %rdx     # 0x1e321
movl $0x587, %ecx            # imm = 0x587
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4ab0(%rbp), %rdi
leaq -0x4aa0(%rbp), %rsi
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x89fb
cmpq $0x0, -0x4aa8(%rbp)
jne 0x8a13
cmpq $0x0, -0x4ab0(%rbp)
je 0x8aac
callq 0x2af0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x8a47
movl $0x7, %edi
leaq 0x15849(%rip), %rsi     # 0x1e278
leaq 0x158eb(%rip), %rdx     # 0x1e321
movl $0x592, %ecx            # imm = 0x592
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x50(%rbp), %rax
movq $0x0, (%rax)
movq -0x50(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x4aa8(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x8(%rax)
movl -0x4ab4(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x4ab0(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x4ab8(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq $0x0, -0x4ab0(%rbp)
movq $0x0, -0x4aa8(%rbp)
callq 0x6190
cmpl $0x0, %eax
jne 0x8abb
jmp 0x9025
movq 0x1d746(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x8aed
cmpl $0x1, 0x1d72f(%rip)     # 0x26200
jne 0x8aed
movq $0x0, -0x4aa8(%rbp)
movl $0x0, -0x4ab4(%rbp)
jmp 0x8c8a
movq 0x1d714(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x3d, %eax
jne 0x8bba
cmpl $0x1, 0x1d6f9(%rip)     # 0x26200
jne 0x8bba
movq 0x1b65c(%rip), %rax     # 0x24170
cmpq $0x0, 0x8(%rax)
je 0x8ba0
movq 0x1b64a(%rip), %rax     # 0x24170
movl 0x18(%rax), %eax
movl %eax, -0x4ab4(%rbp)
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4aa8(%rbp)
cmpq $0x0, -0x4aa8(%rbp)
jne 0x8b78
movl $0x7, %edi
leaq 0x15718(%rip), %rsi     # 0x1e278
leaq 0x157ba(%rip), %rdx     # 0x1e321
movl $0x5b0, %ecx            # imm = 0x5B0
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4aa8(%rbp), %rdi
movq 0x1b5ea(%rip), %rax     # 0x24170
movq 0x8(%rax), %rsi
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8bb5
movq $0x0, -0x4aa8(%rbp)
movl $0x0, -0x4ab4(%rbp)
jmp 0x8c88
callq 0xa0a0
cmpl $0x0, %eax
jg 0x8bc9
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
movq 0x1d631(%rip), %rdx     # 0x26208
movl 0x1d623(%rip), %ecx     # 0x26200
movq 0x1b57c(%rip), %r8      # 0x24160
addq $0x30, %r8
movq 0x1b571(%rip), %rax     # 0x24160
movq 0x28(%rax), %r9
movl $0x2520, %esi           # imm = 0x2520
callq 0xbf90
movl %eax, -0x4ab4(%rbp)
cmpl $0x0, -0x4ab4(%rbp)
jne 0x8c11
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
callq 0xca30
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4aa8(%rbp)
cmpq $0x0, -0x4aa8(%rbp)
jne 0x8c66
movl $0x7, %edi
leaq 0x1562a(%rip), %rsi     # 0x1e278
leaq 0x156cc(%rip), %rdx     # 0x1e321
movl $0x5c6, %ecx            # imm = 0x5C6
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4aa8(%rbp), %rdi
leaq -0x4aa0(%rbp), %rsi
movl -0x4ab4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8c8a
callq 0x6190
cmpl $0x0, %eax
jne 0x8c99
jmp 0x9025
leaq 0x16738(%rip), %rdi     # 0x1f3d8
movl $0x1, %esi
callq 0x57f0
cmpl $0x0, %eax
je 0x8cc7
movl $0x1, -0x28(%rbp)
movl $0x0, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
jmp 0x8cf5
cmpl $0x5, -0x24(%rbp)
jne 0x8cd7
callq 0x9ed0
movl %eax, -0x40(%rbp)
jmp 0x8cdf
callq 0xa0a0
movl %eax, -0x40(%rbp)
cmpl $0x0, -0x40(%rbp)
jg 0x8cea
jmp 0x9025
movq 0x1d517(%rip), %rax     # 0x26208
movq %rax, -0x38(%rbp)
callq 0x6190
cmpl $0x0, %eax
jne 0x8d04
jmp 0x9025
movq 0x1d4fd(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x8d36
cmpl $0x1, 0x1d4e6(%rip)     # 0x26200
jne 0x8d36
movq $0x0, -0x4ab0(%rbp)
movl $0x0, -0x4ab8(%rbp)
jmp 0x8ec7
movq 0x1d4cb(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x3d, %eax
jne 0x8e03
cmpl $0x1, 0x1d4b0(%rip)     # 0x26200
jne 0x8e03
movq 0x1b413(%rip), %rax     # 0x24170
cmpq $0x0, 0x10(%rax)
je 0x8de9
movq 0x1b401(%rip), %rax     # 0x24170
movl 0x1c(%rax), %eax
movl %eax, -0x4ab8(%rbp)
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4ab0(%rbp)
cmpq $0x0, -0x4ab0(%rbp)
jne 0x8dc1
movl $0x7, %edi
leaq 0x154cf(%rip), %rsi     # 0x1e278
leaq 0x15571(%rip), %rdx     # 0x1e321
movl $0x5f3, %ecx            # imm = 0x5F3
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4ab0(%rbp), %rdi
movq 0x1b3a1(%rip), %rax     # 0x24170
movq 0x10(%rax), %rsi
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8dfe
movq $0x0, -0x4ab0(%rbp)
movl $0x0, -0x4ab8(%rbp)
jmp 0x8ec5
callq 0xa0a0
cmpl $0x0, %eax
jg 0x8e12
jmp 0x9025
leaq -0x4aa0(%rbp), %rdi
movq 0x1d3e8(%rip), %rdx     # 0x26208
movl 0x1d3da(%rip), %ecx     # 0x26200
movq 0x1b333(%rip), %r8      # 0x24160
addq $0x30, %r8
movq 0x1b328(%rip), %rax     # 0x24160
movq 0x28(%rax), %r9
movl $0x2520, %esi           # imm = 0x2520
callq 0xbf90
movl %eax, -0x4ab8(%rbp)
cmpl $0x0, -0x4ab8(%rbp)
jne 0x8e5a
jmp 0x9025
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq %rdi
callq 0x1160
movq %rax, -0x4ab0(%rbp)
cmpq $0x0, -0x4ab0(%rbp)
jne 0x8ea3
movl $0x7, %edi
leaq 0x153ed(%rip), %rsi     # 0x1e278
leaq 0x1548f(%rip), %rdx     # 0x1e321
movl $0x608, %ecx            # imm = 0x608
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x4ab0(%rbp), %rdi
leaq -0x4aa0(%rbp), %rsi
movl -0x4ab8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
shlq %rdx
callq 0x1150
jmp 0x8ec7
cmpq $0x0, -0x4aa8(%rbp)
jne 0x8edf
cmpq $0x0, -0x4ab0(%rbp)
je 0x8f78
callq 0x2af0
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x8f13
movl $0x7, %edi
leaq 0x1537d(%rip), %rsi     # 0x1e278
leaq 0x1541f(%rip), %rdx     # 0x1e321
movl $0x613, %ecx            # imm = 0x613
movb $0x0, %al
callq 0xf610
jmp 0x905b
movq -0x58(%rbp), %rax
movq $0x0, (%rax)
movq -0x58(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x4aa8(%rbp), %rcx
movq -0x58(%rbp), %rax
movq %rcx, 0x8(%rax)
movl -0x4ab4(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x4ab0(%rbp), %rcx
movq -0x58(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x4ab8(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq $0x0, -0x4ab0(%rbp)
movq $0x0, -0x4aa8(%rbp)
movq 0x1b1e1(%rip), %rdi     # 0x24160
movl -0x24(%rbp), %esi
movl -0x28(%rbp), %edx
movq -0x50(%rbp), %rcx
movq -0x58(%rbp), %r8
movq -0x30(%rbp), %r9
movl -0x3c(%rbp), %r14d
movq -0x38(%rbp), %rbx
movl -0x40(%rbp), %r11d
movl -0x44(%rbp), %r10d
movl -0x48(%rbp), %eax
movl %r14d, (%rsp)
movq %rbx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movl %r10d, 0x18(%rsp)
movl %eax, 0x20(%rsp)
callq 0x2ea0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x9003
movslq 0x1b1c6(%rip), %rcx     # 0x24198
leaq 0x1b1e7(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1b1b4(%rip), %rcx     # 0x24198
leaq 0x1b1b5(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x1598c(%rip), %rsi     # 0x1e986
movb $0x0, %al
callq 0xf610
jmp 0x905b
movl 0x1b15f(%rip), %ecx     # 0x24168
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x28(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movl $0x1, -0x14(%rbp)
jmp 0x90ae
movslq 0x1b16c(%rip), %rcx     # 0x24198
leaq 0x1b18d(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1b15a(%rip), %rcx     # 0x24198
leaq 0x1b15b(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x15952(%rip), %rsi     # 0x1e9a6
movb $0x0, %al
callq 0xf610
cmpq $0x0, -0x4aa8(%rbp)
je 0x9071
movq -0x4aa8(%rbp), %rdi
callq 0x1040
cmpq $0x0, -0x4ab0(%rbp)
je 0x9087
movq -0x4ab0(%rbp), %rdi
callq 0x1040
cmpq $0x0, -0x50(%rbp)
je 0x9097
movq -0x50(%rbp), %rdi
callq 0x1040
cmpq $0x0, -0x58(%rbp)
je 0x90a7
movq -0x58(%rbp), %rdi
callq 0x1040
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
addq $0x4ad0, %rsp           # imm = 0x4AD0
popq %rbx
popq %r14
popq %rbp
retq
nopl (%rax)