// File: /workspace/github_c_makefile_star2_O3/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 0x53ae
xorl %r14d, %r14d
testl %eax, %eax
je 0x6458
leaq 0xd882(%rip), %r15      # 0x138b9
leaq 0xd872(%rip), %r12      # 0x138b0
leaq 0xd87e(%rip), %r13      # 0x138c3
xorl %ebx, %ebx
movq $0x0, 0x30(%rsp)
xorl %ebp, %ebp
movq 0x141cf(%rip), %r8      # 0x1a228
cmpw $0x2d, (%r8)
movl 0x141bb(%rip), %r9d     # 0x1a220
jne 0x612d
cmpl $0x9, %r9d
je 0x60c3
cmpl $0x8, %r9d
je 0x60a5
cmpl $0x6, %r9d
jne 0x60f7
xorl %eax, %eax
movsbl (%rax,%r13), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x60f7
incq %rax
cmpq $0x6, %rax
jne 0x607f
movl $0x1, %eax
movq %rax, 0x30(%rsp)
movl $0x1, %ebp
jmp 0x60df
xorl %eax, %eax
movsbl (%rax,%r12), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x60f1
incq %rax
cmpq $0x8, %rax
jne 0x60a7
movl $0x1, %ebx
jmp 0x60df
xorl %eax, %eax
movsbl (%rax,%r15), %ecx
cmpw %cx, (%r8,%rax,2)
jne 0x60f7
incq %rax
cmpq $0x9, %rax
jne 0x60c5
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
callq 0x53ae
testl %eax, %eax
jne 0x6052
jmp 0x6458
movl $0x8, %r9d
movslq 0x120ba(%rip), %rax     # 0x181b8
leaq 0x120db(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x120b0(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xd848(%rip), %rsi      # 0x13962
xorl %ebx, %ebx
movl $0x6, %edi
xorl %eax, %eax
callq 0xa278
jmp 0x64c6
cmpl $0x4, %r9d
jne 0x615b
xorl %eax, %eax
leaq 0xd7ad(%rip), %rcx      # 0x138e9
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x615b
incq %rax
cmpq $0x4, %rax
jne 0x613c
movl $0x1, %r12d
jmp 0x6286
leal -0x5(%r9), %eax
cmpl $0x4, %eax
ja 0x6255
leaq 0xd199(%rip), %rcx      # 0x13308
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
leaq 0xd781(%rip), %rcx      # 0x13902
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6255
incq %rax
cmpq $0x5, %rax
jne 0x6181
movl $0x5, %r12d
movb $0x1, %r14b
jmp 0x6289
xorl %eax, %eax
leaq 0xd73e(%rip), %rcx      # 0x138ee
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6255
incq %rax
cmpq $0x7, %rax
jne 0x61b0
movl $0x2, %r12d
jmp 0x6286
xorl %eax, %eax
leaq 0xd71a(%rip), %rcx      # 0x138f6
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x61fb
incq %rax
cmpq $0x8, %rax
jne 0x61dc
movl $0x3, %r12d
jmp 0x6286
xorl %eax, %eax
leaq 0xd6fb(%rip), %rcx      # 0x138ff
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6220
incq %rax
cmpq $0x8, %rax
jne 0x6204
movl $0x4, %r12d
jmp 0x6286
cmpl $0x5, %r9d
je 0x6178
cmpl $0x9, %r9d
jne 0x6255
xorl %eax, %eax
leaq 0xd6cf(%rip), %rcx      # 0x13908
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6255
incq %rax
cmpq $0x9, %rax
jne 0x6239
movl $0x6, %r12d
jmp 0x6286
cmpl $0x4, %r9d
jne 0x6346
xorl %eax, %eax
leaq 0xd6aa(%rip), %rcx      # 0x13912
movsbl (%rax,%rcx), %edx
cmpw %dx, (%r8,%rax,2)
jne 0x6346
incq %rax
cmpq $0x4, %rax
jne 0x6268
movl $0x7, %r12d
xorl %r14d, %r14d
callq 0x53ae
xorl %r13d, %r13d
testl %eax, %eax
je 0x6455
movq 0x13f88(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13f70(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x636e
movl %r14d, 0x18(%rsp)
xorl %r15d, %r15d
callq 0x53ae
testl %eax, %eax
je 0x668a
callq 0x6cea
testl %eax, %eax
jle 0x668a
movl %eax, %r14d
movq 0x13f3c(%rip), %rax     # 0x1a228
movq %rax, 0x48(%rsp)
callq 0x53ae
testl %eax, %eax
je 0x668a
movq 0x13f23(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13f0b(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
movq %r14, 0x40(%rsp)
je 0x64e5
movl %r12d, 0xc(%rsp)
xorl %r14d, %r14d
movl $0x0, %r12d
testq %r15, %r15
jne 0x65e3
jmp 0x660d
movslq 0x11e6b(%rip), %rax     # 0x181b8
leaq 0x11e8c(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11e61(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xd619(%rip), %rsi      # 0x13982
jmp 0x611a
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x63d7
movl %r14d, 0x18(%rsp)
movq 0x11e0b(%rip), %rax     # 0x18198
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x64da
movl %r12d, 0xc(%rsp)
movslq 0x18(%rax), %r13
leaq 0x2(,%r13,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x654a
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x1180
movl 0xc(%rsp), %r12d
jmp 0x62c8
callq 0x6cea
testl %eax, %eax
jle 0x6455
movq 0x13e41(%rip), %rdx     # 0x1a228
movl 0x13e33(%rip), %ecx     # 0x1a220
movq 0x11d8c(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8061
testl %eax, %eax
je 0x6455
movl %eax, %r13d
movl %r14d, 0x18(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x84e0
movslq %r13d, %rax
leaq 0x2(,%rax,2), %r14
movq %r14, %rdi
callq 0x1190
testq %rax, %rax
je 0x6692
movq %rax, %r15
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x1180
jmp 0x62c8
xorl %r14d, %r14d
xorl %r15d, %r15d
movslq 0x11d56(%rip), %rax     # 0x181b8
leaq 0x11d77(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11d4c(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xd542(%rip), %rsi      # 0x139c0
xorl %r12d, %r12d
movl $0x6, %edi
xorl %eax, %eax
callq 0xa278
testq %r15, %r15
je 0x649a
movq %r15, %rdi
callq 0x1040
testq %r12, %r12
je 0x64a7
movq %r12, %rdi
callq 0x1040
xorl %r13d, %r13d
testq %r14, %r14
je 0x64b7
movq %r14, %rdi
callq 0x1040
xorl %ebx, %ebx
testq %r13, %r13
je 0x64c6
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
xorl %r15d, %r15d
xorl %r13d, %r13d
jmp 0x62c8
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x6569
movq 0x11c99(%rip), %rax     # 0x18198
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x632a
movq %rcx, 0x10(%rsp)
movl %r12d, 0xc(%rsp)
movslq 0x1c(%rax), %r14
leaq 0x2(,%r14,2), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1190
testq %rax, %rax
je 0x6849
movq %rax, %r12
movq %rax, %rdi
movq 0x10(%rsp), %rsi
movq 0x28(%rsp), %rdx
jmp 0x65de
leaq 0xcceb(%rip), %rsi      # 0x1323c
leaq 0xcde9(%rip), %rdx      # 0x13341
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x53c, %ecx            # imm = 0x53C
jmp 0x66ac
callq 0x6cea
testl %eax, %eax
jle 0x668a
movq 0x13cab(%rip), %rdx     # 0x1a228
movl 0x13c9d(%rip), %ecx     # 0x1a220
movq 0x11bf6(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8061
testl %eax, %eax
je 0x668a
movl %eax, %r14d
movl %r12d, 0xc(%rsp)
cltq
leaq 0x2(,%rax,2), %rdi
movq %rdi, 0x10(%rsp)
callq 0x1190
testq %rax, %rax
je 0x6866
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq 0x10(%rsp), %rdx
callq 0x1180
callq 0x1faa
testq %rax, %rax
je 0x66b8
xorl %ecx, %ecx
movq %rcx, (%rax)
movq %rcx, 0x20(%rax)
movq %r15, 0x8(%rax)
movl %r13d, 0x18(%rax)
movq %r12, 0x10(%rax)
movl %r14d, 0x1c(%rax)
movq %rax, %r14
callq 0x53ae
xorl %r13d, %r13d
testl %eax, %eax
je 0x6458
movq 0x13c04(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13bec(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x66d8
xorl %r15d, %r15d
callq 0x53ae
testl %eax, %eax
je 0x645b
movq 0x13bcd(%rip), %rdi     # 0x1a228
movl 0x13bbf(%rip), %esi     # 0x1a220
cmpl $0x1, %esi
jne 0x673c
cmpw $0x2d, (%rdi)
jne 0x673c
movq $0x0, 0x18(%rsp)
movl $0x1, %ebx
xorl %r12d, %r12d
jmp 0x67f8
xorl %r14d, %r14d
jmp 0x645b
leaq 0xcba3(%rip), %rsi      # 0x1323c
leaq 0xcca1(%rip), %rdx      # 0x13341
xorl %ebx, %ebx
movl $0x7, %edi
movl $0x552, %ecx            # imm = 0x552
xorl %eax, %eax
callq 0xa278
jmp 0x64c6
leaq 0xcb7d(%rip), %rsi      # 0x1323c
leaq 0xcc7b(%rip), %rdx      # 0x13341
xorl %r14d, %r14d
movl $0x7, %edi
movl $0x592, %ecx            # imm = 0x592
jmp 0x6486
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x675a
movq 0x11a9e(%rip), %rax     # 0x18190
movq 0x8(%rax), %r12
testq %r12, %r12
je 0x68f0
movslq 0x18(%rax), %rax
movq %rax, 0x10(%rsp)
leaq 0x2(,%rax,2), %r13
movq %r13, %rdi
callq 0x1190
testq %rax, %rax
je 0x68fb
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x1180
movq 0x10(%rsp), %r13
jmp 0x6647
cmpb $0x0, 0x18(%rsp)
je 0x67db
callq 0x6c24
movl %eax, %r12d
movl %eax, 0x13acb(%rip)     # 0x1a220
jmp 0x67e3
callq 0x6cea
testl %eax, %eax
jle 0x6458
movq 0x13aba(%rip), %rdx     # 0x1a228
movl 0x13aac(%rip), %ecx     # 0x1a220
movq 0x11a05(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8061
testl %eax, %eax
je 0x6458
movl %eax, %r13d
leaq 0x50(%rsp), %rdi
callq 0x84e0
movslq %r13d, %rax
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x6a55
movq %rax, %r15
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0x1180
jmp 0x6647
callq 0x6cea
movl %eax, %r12d
testl %r12d, %r12d
jle 0x645b
movq 0x13a35(%rip), %rax     # 0x1a228
movq %rax, 0x18(%rsp)
callq 0x53ae
testl %eax, %eax
je 0x645b
movq 0x13a1c(%rip), %rax     # 0x1a228
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x13a04(%rip), %ecx     # 0x1a220
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
movq %r13, 0x10(%rsp)
movq %r12, 0x28(%rsp)
je 0x6890
xorl %r13d, %r13d
movl $0x0, %r12d
testq %r15, %r15
jne 0x6990
jmp 0x69be
leaq 0xc9ec(%rip), %rsi      # 0x1323c
leaq 0xcaea(%rip), %rdx      # 0x13341
xorl %r14d, %r14d
movl $0x7, %edi
movl $0x572, %ecx            # imm = 0x572
jmp 0x6881
leaq 0xc9cf(%rip), %rsi      # 0x1323c
leaq 0xcacd(%rip), %rdx      # 0x13341
xorl %r14d, %r14d
movl $0x7, %edi
movl $0x587, %ecx            # imm = 0x587
xorl %eax, %eax
callq 0xa278
xorl %r12d, %r12d
jmp 0x648d
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x691b
movq 0x118e6(%rip), %rax     # 0x18190
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
testq %rcx, %rcx
je 0x6832
movslq 0x1c(%rax), %r13
leaq 0x2(,%r13,2), %rdi
movq %rdi, 0x38(%rsp)
callq 0x1190
testq %rax, %rax
je 0x6a7c
movq %rax, %r12
movq %rax, %rdi
movq 0x20(%rsp), %rsi
movq 0x38(%rsp), %rdx
jmp 0x698b
xorl %r15d, %r15d
xorl %r13d, %r13d
jmp 0x6647
leaq 0xc93a(%rip), %rsi      # 0x1323c
leaq 0xca38(%rip), %rdx      # 0x13341
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x5b0, %ecx            # imm = 0x5B0
jmp 0x6a70
callq 0x6cea
testl %eax, %eax
jle 0x645b
movq 0x138f9(%rip), %rdx     # 0x1a228
movl 0x138eb(%rip), %ecx     # 0x1a220
movq 0x11844(%rip), %r8      # 0x18180
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x8061
testl %eax, %eax
je 0x645b
movl %eax, %r13d
cltq
leaq 0x2(,%rax,2), %rdi
movq %rdi, 0x20(%rsp)
callq 0x1190
testq %rax, %rax
je 0x6a9c
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq 0x20(%rsp), %rdx
callq 0x1180
callq 0x1faa
testq %rax, %rax
je 0x6a38
xorl %ecx, %ecx
movq %rcx, (%rax)
movq %rcx, 0x20(%rax)
movq %r15, 0x8(%rax)
movq 0x10(%rsp), %rcx
movl %ecx, 0x18(%rax)
movq %r12, 0x10(%rax)
movl %r13d, 0x1c(%rax)
movq %rax, %r13
movq 0x117bb(%rip), %rdi     # 0x18180
subq $0x8, %rsp
movl 0x14(%rsp), %esi
movl %ebx, %edx
movq %r14, %rcx
movq %r13, %r8
movq 0x50(%rsp), %r9
pushq %rbp
pushq 0x40(%rsp)
pushq 0x40(%rsp)
pushq 0x38(%rsp)
pushq 0x68(%rsp)
callq 0x2151
addq $0x30, %rsp
testq %rax, %rax
je 0x6a0e
movl 0x11789(%rip), %ecx     # 0x18188
movl %ecx, (%rax)
movl %ebx, 0x4(%rax)
movl $0x1, %ebx
jmp 0x64c6
movslq 0x117a3(%rip), %rax     # 0x181b8
leaq 0x117c4(%rip), %rcx     # 0x181e0
movq (%rcx,%rax,8), %rdx
leaq 0x11799(%rip), %rcx     # 0x181c0
movl (%rcx,%rax,4), %ecx
leaq 0xcf6f(%rip), %rsi      # 0x139a0
movl $0x6, %edi
jmp 0x6a70
leaq 0xc7fd(%rip), %rsi      # 0x1323c
leaq 0xc8fb(%rip), %rdx      # 0x13341
movl $0x7, %edi
movl $0x613, %ecx            # imm = 0x613
jmp 0x6486
leaq 0xc7e0(%rip), %rsi      # 0x1323c
leaq 0xc8de(%rip), %rdx      # 0x13341
xorl %r13d, %r13d
movl $0x7, %edi
movl $0x5c6, %ecx            # imm = 0x5C6
xorl %eax, %eax
callq 0xa278
jmp 0x64aa
leaq 0xc7b9(%rip), %rsi      # 0x1323c
leaq 0xc8b7(%rip), %rdx      # 0x13341
xorl %r12d, %r12d
movl $0x7, %edi
movl $0x5f3, %ecx            # imm = 0x5F3
jmp 0x6486
leaq 0xc799(%rip), %rsi      # 0x1323c
leaq 0xc897(%rip), %rdx      # 0x13341
xorl %r12d, %r12d
movl $0x7, %edi
movl $0x608, %ecx            # imm = 0x608
jmp 0x6486