// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4a98, %rsp           # imm = 0x4A98
callq 0x5525
xorl %ebx, %ebx
testl %eax, %eax
je 0x6924
leaq 0xd628(%rip), %r14      # 0x13827
leaq 0xd617(%rip), %r12      # 0x1381d
leaq 0xd607(%rip), %r13      # 0x13814
xorl %ebp, %ebp
movq $0x0, 0x38(%rsp)
xorl %r15d, %r15d
movq 0x14006(%rip), %r8      # 0x1a228
cmpw $0x2d, (%r8)
movl 0x13ff2(%rip), %r9d     # 0x1a220
jne 0x6307
cmpl $0x6, %r9d
je 0x6298
cmpl $0x9, %r9d
je 0x6274
cmpl $0x8, %r9d
jne 0x62d1
xorl %eax, %eax
movsbl (%rax,%r13), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x6268
incq %rax
cmpq $0x8, %rax
jne 0x624c
movl $0x1, %ebp
jmp 0x62bf
cmpl $0x6, %r9d
je 0x6298
cmpl $0x9, %r9d
jne 0x62d1
xorl %eax, %eax
movsbl (%rax,%r12), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x6292
incq %rax
cmpq $0x9, %rax
jne 0x6276
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0x62bf
cmpl $0x6, %r9d
jne 0x62d1
xorl %eax, %eax
movsbl (%rax,%r14), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x62d1
incq %rax
cmpq $0x6, %rax
jne 0x629a
movl $0x1, %eax
movq %rax, 0x38(%rsp)
movl $0x1, %r15d
callq 0x5525
testl %eax, %eax
jne 0x621b
jmp 0x6924
movslq 0x11ee0(%rip), %rax     # 0x181b8
leaq 0x11f01(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11ed6(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xd5d2(%rip), %rsi      # 0x138c6
xorl %ebx, %ebx
movl $0x6, %edi
xorl %eax, %eax
callq 0xa36c
jmp 0x6992
cmpl $0x4, %r9d
jne 0x6335
xorl %eax, %eax
leaq 0xd537(%rip), %rcx      # 0x1384d
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6335
incq %rax
cmpq $0x4, %rax
jne 0x6316
movl $0x1, %r13d
jmp 0x644f
cmpl $0x7, %r9d
jne 0x6363
xorl %eax, %eax
leaq 0xd50e(%rip), %rcx      # 0x13852
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6363
incq %rax
cmpq $0x7, %rax
jne 0x6344
movl $0x2, %r13d
jmp 0x644f
cmpl $0x8, %r9d
jne 0x63bf
xorl %eax, %eax
leaq 0xd4e8(%rip), %rcx      # 0x1385a
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6391
incq %rax
cmpq $0x8, %rax
jne 0x6372
movl $0x3, %r13d
jmp 0x644f
cmpl $0x8, %r9d
jne 0x63bf
xorl %eax, %eax
leaq 0xd4c3(%rip), %rcx      # 0x13863
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x63bf
incq %rax
cmpq $0x8, %rax
jne 0x63a0
movl $0x4, %r13d
jmp 0x644f
cmpl $0x9, %r9d
je 0x63f9
cmpl $0x5, %r9d
jne 0x641e
xorl %eax, %eax
leaq 0xd492(%rip), %rcx      # 0x13866
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x63f3
incq %rax
cmpq $0x5, %rax
jne 0x63d4
movl $0x5, %r13d
movb $0x1, %r14b
jmp 0x6452
cmpl $0x9, %r9d
jne 0x641e
xorl %eax, %eax
leaq 0xd46a(%rip), %rcx      # 0x1386c
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x641e
incq %rax
cmpq $0x9, %rax
jne 0x6402
movl $0x6, %r13d
jmp 0x644f
cmpl $0x4, %r9d
jne 0x6567
xorl %eax, %eax
leaq 0xd445(%rip), %rcx      # 0x13876
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6567
incq %rax
cmpq $0x4, %rax
jne 0x6431
movl $0x7, %r13d
xorl %r14d, %r14d
callq 0x5525
xorl %ebx, %ebx
testl %eax, %eax
je 0x6924
movq 0x13dc0(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13da8(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x64fe
movl %r14d, 0x18(%rsp)
xorl %r14d, %r14d
callq 0x5525
testl %eax, %eax
je 0x6715
callq 0x6edd
testl %eax, %eax
jle 0x6715
movl %eax, %r12d
movl %r13d, 0x14(%rsp)
movq 0x13d73(%rip), %rax     # 0x1a228
movq %rax, 0x48(%rsp)
callq 0x5525
xorl %r13d, %r13d
testl %eax, %eax
je 0x6715
movq 0x13d57(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13d3f(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x661d
movq %r12, 0x30(%rsp)
xorl %r12d, %r12d
jmp 0x674e
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x658f
movl %r14d, 0x18(%rsp)
movq 0x11c7b(%rip), %rax     # 0x18198
movq 0x8(%rax), %r12
testq %r12, %r12
je 0x6613
movl %r13d, 0x14(%rsp)
movslq 0x18(%rax), %rbx
leaq 0x2(,%rbx,2), %r13
movq %r13, %rdi
callq 0x1180
testq %rax, %rax
je 0x6682
movq %rax, %r14
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x1170
movl 0x14(%rsp), %r13d
jmp 0x648c
movslq 0x11c4a(%rip), %rax     # 0x181b8
leaq 0x11c6b(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11c40(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xd35c(%rip), %rsi      # 0x138e6
jmp 0x62f4
callq 0x6edd
testl %eax, %eax
jle 0x660c
movq 0x13c89(%rip), %rdx     # 0x1a228
movl 0x13c7b(%rip), %ecx     # 0x1a220
movq 0x11bd4(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8144
testl %eax, %eax
je 0x660c
movl %eax, %ebx
movl %r14d, 0x18(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x85c5
movslq %ebx, %rax
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1180
testq %rax, %rax
je 0x671c
movq %rax, %r14
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0x1170
jmp 0x648c
xorl %ebx, %ebx
jmp 0x6924
xorl %r14d, %r14d
xorl %ebx, %ebx
jmp 0x648c
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x66a1
movq %r12, 0x30(%rsp)
movq 0x11b5c(%rip), %rax     # 0x18198
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x6748
movq %rcx, 0x8(%rsp)
movslq 0x1c(%rax), %r13
leaq 0x2(,%r13,2), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1180
testq %rax, %rax
je 0x6a09
movq %rax, %r12
movq %rax, %rdi
movq 0x8(%rsp), %rsi
movq 0x28(%rsp), %rdx
jmp 0x670e
leaq 0xcb6b(%rip), %rsi      # 0x131f4
leaq 0xcc11(%rip), %rdx      # 0x132a1
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x53c, %ecx            # imm = 0x53C
jmp 0x6736
callq 0x6edd
testl %eax, %eax
jle 0x6715
movq 0x13b77(%rip), %rdx     # 0x1a228
movl 0x13b69(%rip), %ecx     # 0x1a220
movq 0x11ac2(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8144
testl %eax, %eax
je 0x6715
movl %eax, %r13d
movq %r12, 0x30(%rsp)
cltq
leaq 0x2(,%rax,2), %rdi
movq %rdi, 0x8(%rsp)
callq 0x1180
testq %rax, %rax
je 0x6a8f
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq 0x8(%rsp), %rdx
callq 0x1170
jmp 0x674e
xorl %ebx, %ebx
jmp 0x6927
leaq 0xcad1(%rip), %rsi      # 0x131f4
leaq 0xcb77(%rip), %rdx      # 0x132a1
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x552, %ecx            # imm = 0x552
xorl %eax, %eax
callq 0xa36c
xorl %r13d, %r13d
xorl %r14d, %r14d
jmp 0x6959
xorl %r12d, %r12d
xorl %r13d, %r13d
movq %r14, %rax
orq %r12, %rax
je 0x6781
callq 0x1f69
testq %rax, %rax
je 0x6864
xorl %ecx, %ecx
movq %rcx, (%rax)
movq %rcx, 0x20(%rax)
movq %r14, 0x8(%rax)
movl %ebx, 0x18(%rax)
movq %r12, 0x10(%rax)
movl %r13d, 0x1c(%rax)
movq %rax, %rbx
jmp 0x6783
xorl %ebx, %ebx
callq 0x5525
xorl %r13d, %r13d
testl %eax, %eax
je 0x6924
movq 0x13a8e(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13a76(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x67fc
xorl %r14d, %r14d
callq 0x5525
testl %eax, %eax
je 0x6927
movq 0x13a5b(%rip), %rdi     # 0x1a228
movl 0x13a4d(%rip), %esi     # 0x1a220
cmpl $0x1, %esi
jne 0x688d
cmpw $0x2d, (%rdi)
jne 0x688d
movq $0x0, 0x18(%rsp)
movl $0x1, %ebp
xorl %r12d, %r12d
jmp 0x69c3
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x68ab
movq 0x11976(%rip), %rax     # 0x18190
movq 0x8(%rax), %r13
testq %r13, %r13
je 0x6ab8
movslq 0x18(%rax), %rax
movq %rax, 0x8(%rsp)
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1180
testq %rax, %rax
je 0x6ac3
movq %rax, %r14
movq %rax, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1170
movq 0x8(%rsp), %r13
jmp 0x67b9
leaq 0xc989(%rip), %rsi      # 0x131f4
leaq 0xca2f(%rip), %rdx      # 0x132a1
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x592, %ecx            # imm = 0x592
xorl %eax, %eax
callq 0xa36c
xorl %r13d, %r13d
jmp 0x695c
cmpb $0x0, 0x18(%rsp)
je 0x69a6
callq 0x6e16
movl %eax, %r12d
movl %eax, 0x1397a(%rip)     # 0x1a220
jmp 0x69ae
callq 0x6edd
testl %eax, %eax
jle 0x6924
movq 0x1396d(%rip), %rdx     # 0x1a228
movl 0x1395f(%rip), %ecx     # 0x1a220
movq 0x118b8(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8144
testl %eax, %eax
je 0x6924
movl %eax, %r13d
leaq 0x50(%rsp), %rdi
callq 0x85c5
movslq %r13d, %rax
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1180
testq %rax, %rax
je 0x6b5b
movq %rax, %r14
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0x1170
jmp 0x67b9
xorl %r14d, %r14d
movslq 0x1188a(%rip), %rax     # 0x181b8
leaq 0x118ab(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11880(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xcfda(%rip), %rsi      # 0x13924
xorl %r13d, %r13d
movl $0x6, %edi
xorl %eax, %eax
callq 0xa36c
xorl %r12d, %r12d
testq %r14, %r14
je 0x6969
movq %r14, %rdi
callq 0x1040
testq %r12, %r12
je 0x6976
movq %r12, %rdi
callq 0x1040
testq %rbx, %rbx
je 0x6983
movq %rbx, %rdi
callq 0x1040
xorl %ebx, %ebx
testq %r13, %r13
je 0x6992
movq %r13, %rdi
callq 0x1040
movl %ebx, %eax
addq $0x4a98, %rsp           # imm = 0x4A98
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6edd
movl %eax, %r12d
testl %r12d, %r12d
jle 0x6927
movq 0x1386a(%rip), %rax     # 0x1a228
movq %rax, 0x18(%rsp)
callq 0x5525
testl %eax, %eax
je 0x6927
movq 0x13851(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13839(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
movq %r12, 0x28(%rsp)
je 0x6a28
xorl %r12d, %r12d
movq $0x0, 0x20(%rsp)
jmp 0x6b93
leaq 0xc7e4(%rip), %rsi      # 0x131f4
leaq 0xc88a(%rip), %rdx      # 0x132a1
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x572, %ecx            # imm = 0x572
jmp 0x6aa9
movq %r13, 0x8(%rsp)
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x6ae3
movq 0x11745(%rip), %rax     # 0x18190
movq 0x10(%rax), %r13
testq %r13, %r13
je 0x6b82
movslq 0x1c(%rax), %rax
movq %rax, 0x20(%rsp)
leaq 0x2(,%rax,2), %rdi
movq %rdi, 0x40(%rsp)
callq 0x1180
testq %rax, %rax
je 0x6c7d
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movq 0x40(%rsp), %rdx
jmp 0x6b54
leaq 0xc75e(%rip), %rsi      # 0x131f4
leaq 0xc804(%rip), %rdx      # 0x132a1
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x587, %ecx            # imm = 0x587
xorl %eax, %eax
callq 0xa36c
xorl %r13d, %r13d
jmp 0x6959
xorl %r14d, %r14d
xorl %r13d, %r13d
jmp 0x67b9
leaq 0xc72a(%rip), %rsi      # 0x131f4
leaq 0xc7d0(%rip), %rdx      # 0x132a1
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x5b0, %ecx            # imm = 0x5B0
jmp 0x6b76
callq 0x6edd
testl %eax, %eax
jle 0x6927
movq 0x13731(%rip), %rdx     # 0x1a228
movl 0x13723(%rip), %ecx     # 0x1a220
movq 0x1167c(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8144
movq %rax, 0x20(%rsp)
testl %eax, %eax
je 0x6927
movslq 0x20(%rsp), %rax
leaq 0x2(,%rax,2), %r13
movq %r13, %rdi
callq 0x1180
testq %rax, %rax
je 0x6c9d
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r13, %rdx
callq 0x1170
jmp 0x6b8e
leaq 0xc692(%rip), %rsi      # 0x131f4
leaq 0xc738(%rip), %rdx      # 0x132a1
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x5c6, %ecx            # imm = 0x5C6
xorl %eax, %eax
callq 0xa36c
jmp 0x6740
xorl %r12d, %r12d
movq $0x0, 0x20(%rsp)
movq 0x8(%rsp), %r13
movq %r14, %rax
orq %r12, %rax
je 0x6bd7
movq %r13, 0x8(%rsp)
callq 0x1f69
testq %rax, %rax
je 0x6c56
movq %rax, %r13
xorl %eax, %eax
movq %rax, (%r13)
movq %rax, 0x20(%r13)
movq %r14, 0x8(%r13)
movq 0x8(%rsp), %rax
movl %eax, 0x18(%r13)
movq %r12, 0x10(%r13)
movq 0x20(%rsp), %rax
movl %eax, 0x1c(%r13)
jmp 0x6bda
xorl %r13d, %r13d
movq 0x1159f(%rip), %rdi     # 0x18180
subq $0x8, %rsp
movl 0x1c(%rsp), %esi
movl %ebp, %edx
movq %rbx, %rcx
movq %r13, %r8
movq 0x50(%rsp), %r9
pushq %r15
pushq 0x48(%rsp)
pushq 0x40(%rsp)
pushq 0x38(%rsp)
pushq 0x58(%rsp)
callq 0x20f5
addq $0x30, %rsp
testq %rax, %rax
je 0x6c2b
movl 0x1156c(%rip), %ecx     # 0x18188
movl %ecx, (%rax)
movl %ebp, 0x4(%rax)
movl $0x1, %ebx
jmp 0x6992
movslq 0x11586(%rip), %rax     # 0x181b8
leaq 0x115a7(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x1157c(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xccb6(%rip), %rsi      # 0x13904
xorl %r14d, %r14d
jmp 0x694d
leaq 0xc597(%rip), %rsi      # 0x131f4
leaq 0xc63d(%rip), %rdx      # 0x132a1
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x613, %ecx            # imm = 0x613
xorl %eax, %eax
callq 0xa36c
jmp 0x695c
leaq 0xc570(%rip), %rsi      # 0x131f4
leaq 0xc616(%rip), %rdx      # 0x132a1
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x5f3, %ecx            # imm = 0x5F3
jmp 0x6952
leaq 0xc550(%rip), %rsi      # 0x131f4
leaq 0xc5f6(%rip), %rdx      # 0x132a1
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x608, %ecx            # imm = 0x608
jmp 0x6952