// File: /workspace/github_c_makefile_star2_O2/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 0x51da
xorl %ebx, %ebx
testl %eax, %eax
je 0x5afb
leaq 0xbfd9(%rip), %r15      # 0x11852
pushq $0x8
popq %rbp
pushq $0x1
popq %r12
xorl %ebx, %ebx
movq $0x0, 0x28(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x1399d(%rip), %r14     # 0x19238
cmpw $0x2d, (%r14)
jne 0x5909
movq %r15, %rdi
movl %ebp, %esi
callq 0x36a1
testl %eax, %eax
je 0x58b5
movl %r12d, %r13d
jmp 0x58f3
leaq 0xbf9f(%rip), %rdi      # 0x1185b
pushq $0x9
popq %rsi
callq 0x36a1
pushq $-0x1
popq %r13
testl %eax, %eax
jne 0x58f3
leaq 0xbf92(%rip), %rdi      # 0x11865
pushq $0x6
popq %rsi
callq 0x36a1
movl %ebx, %r13d
movl %r12d, %ecx
movq %rcx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
testl %eax, %eax
je 0x5b69
callq 0x51da
movl %r13d, %ebx
testl %eax, %eax
jne 0x5894
xorl %r14d, %r14d
xorl %ebx, %ebx
jmp 0x5afe
leaq 0xbf7b(%rip), %rdi      # 0x1188b
pushq $0x4
popq %r12
movl %r12d, %esi
callq 0x36a1
testl %eax, %eax
je 0x5924
pushq $0x1
jmp 0x5956
leaq 0xbf65(%rip), %rdi      # 0x11890
pushq $0x7
popq %rbp
movl %ebp, %esi
callq 0x36a1
testl %eax, %eax
je 0x593d
pushq $0x2
jmp 0x5956
leaq 0xbf54(%rip), %rdi      # 0x11898
pushq $0x8
popq %rsi
callq 0x36a1
testl %eax, %eax
je 0x5c15
pushq $0x3
popq %r12
xorl %r15d, %r15d
callq 0x51da
xorl %ebp, %ebp
testl %eax, %eax
je 0x5af9
movq 0x138c7(%rip), %rax     # 0x19238
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x138af(%rip), %ecx     # 0x19230
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x5a17
xorl %r14d, %r14d
callq 0x51da
testl %eax, %eax
je 0x5902
callq 0x64b0
testl %eax, %eax
jle 0x5902
movl %eax, %r13d
movq 0x13880(%rip), %rax     # 0x19238
movq %rax, 0x48(%rsp)
callq 0x51da
testl %eax, %eax
je 0x5902
movq %r13, 0x40(%rsp)
movq 0x13862(%rip), %rax     # 0x19238
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x1384a(%rip), %ecx     # 0x19230
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x5baf
movl %r12d, 0xc(%rsp)
movq $0x0, (%rsp)
movl $0x0, %r12d
testq %r14, %r14
jne 0x5d01
jmp 0x5d2e
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x5a7b
movq 0x11777(%rip), %rax     # 0x171a8
movq 0x8(%rax), %r13
testq %r13, %r13
je 0x5ba5
movl %r12d, 0xc(%rsp)
movslq 0x18(%rax), %rbp
leaq 0x2(,%rbp,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x5c6d
movq %rax, %r14
movq %rax, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1180
movl 0xc(%rsp), %r12d
jmp 0x5994
callq 0x64b0
testl %eax, %eax
jle 0x5af9
movq 0x137ad(%rip), %rdx     # 0x19238
movl 0x1379f(%rip), %ecx     # 0x19230
movq 0x116f8(%rip), %r8      # 0x17190
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x7490
testl %eax, %eax
je 0x5af9
movl %eax, %ebp
movl %r12d, %r13d
leaq 0x50(%rsp), %rdi
callq 0x7904
movslq %ebp, %rax
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x5d68
movq %rax, %r14
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0x1180
movl %r13d, %r12d
jmp 0x5994
xorl %ebx, %ebx
xorl %r14d, %r14d
movslq 0x116c3(%rip), %rax     # 0x171c8
leaq 0x116e4(%rip), %rcx     # 0x171f0
movq (%rcx,%rax,8), %rdx
leaq 0x116b9(%rip), %rcx     # 0x171d0
movl (%rcx,%rax,4), %ecx
leaq 0xbe41(%rip), %rsi      # 0x11962
xorl %r15d, %r15d
pushq $0x6
popq %rdi
xorl %eax, %eax
callq 0x9174
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x1040
movq %r12, %rdi
callq 0x1040
movq %rbx, %rdi
callq 0x1040
movq %r15, %rdi
callq 0x1040
xorl %r15d, %r15d
movl %r15d, %eax
addq $0x4a98, %rsp           # imm = 0x4A98
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movslq 0x11658(%rip), %rax     # 0x171c8
leaq 0x11679(%rip), %rcx     # 0x171f0
movq (%rcx,%rax,8), %rdx
leaq 0x1164e(%rip), %rcx     # 0x171d0
movl (%rcx,%rax,4), %ecx
movl 0x136a4(%rip), %r9d     # 0x19230
leaq 0xbd71(%rip), %rsi      # 0x11904
xorl %r15d, %r15d
pushq $0x6
popq %rdi
movq %r14, %r8
xorl %eax, %eax
callq 0x9174
jmp 0x5b54
xorl %r14d, %r14d
xorl %ebp, %ebp
jmp 0x5994
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x5c8a
movq 0x115db(%rip), %rax     # 0x171a8
movq 0x10(%rax), %r13
testq %r13, %r13
je 0x59f6
movl %r12d, 0xc(%rsp)
movslq 0x1c(%rax), %rax
movq %rax, (%rsp)
leaq 0x2(,%rax,2), %rdi
movq %rdi, 0x18(%rsp)
callq 0x1190
testq %rax, %rax
je 0x5e85
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movq 0x18(%rsp), %rdx
jmp 0x5cfc
leaq 0xbc85(%rip), %rdi      # 0x118a1
pushq $0x8
popq %rsi
callq 0x36a1
testl %eax, %eax
jne 0x5958
leaq 0xbc71(%rip), %rdi      # 0x118a4
pushq $0x5
popq %r12
movl %r12d, %esi
callq 0x36a1
movb $0x1, %r15b
testl %eax, %eax
jne 0x595b
leaq 0xbc59(%rip), %rdi      # 0x118aa
pushq $0x9
popq %rsi
callq 0x36a1
testl %eax, %eax
je 0x5fd8
xorl %r15d, %r15d
pushq $0x6
popq %r12
jmp 0x595b
leaq 0xb5c8(%rip), %rsi      # 0x1123c
leaq 0xb666(%rip), %rdx      # 0x112e1
xorl %ebx, %ebx
pushq $0x7
popq %rdi
movl $0x53c, %ecx            # imm = 0x53C
jmp 0x5d80
callq 0x64b0
testl %eax, %eax
jle 0x5902
movq 0x1359a(%rip), %rdx     # 0x19238
movl 0x1358c(%rip), %ecx     # 0x19230
movq 0x114e5(%rip), %r8      # 0x17190
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x7490
testl %eax, %eax
je 0x5902
movl %r12d, 0xc(%rsp)
movq %rax, (%rsp)
cltq
leaq 0x2(,%rax,2), %r13
movq %r13, %rdi
callq 0x1190
testq %rax, %rax
je 0x5e9f
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r13, %rdx
callq 0x1180
callq 0x1ef9
testq %rax, %rax
je 0x5d92
andq $0x0, (%rax)
andq $0x0, 0x20(%rax)
movq %r14, 0x8(%rax)
movl %ebp, 0x18(%rax)
movq %r12, 0x10(%rax)
movq (%rsp), %rcx
movl %ecx, 0x1c(%rax)
movq %rax, (%rsp)
callq 0x51da
xorl %ebp, %ebp
testl %eax, %eax
je 0x5e7d
movq 0x134f4(%rip), %rax     # 0x19238
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x134dc(%rip), %ecx     # 0x19230
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
je 0x5db9
xorl %r14d, %r14d
jmp 0x5ecb
leaq 0xb4cd(%rip), %rsi      # 0x1123c
leaq 0xb56b(%rip), %rdx      # 0x112e1
xorl %ebx, %ebx
pushq $0x7
popq %rdi
movl $0x552, %ecx            # imm = 0x552
xorl %eax, %eax
callq 0x9174
xorl %r15d, %r15d
xorl %r14d, %r14d
jmp 0x5b2e
leaq 0xb4a3(%rip), %rsi      # 0x1123c
leaq 0xb541(%rip), %rdx      # 0x112e1
xorl %ebx, %ebx
pushq $0x7
popq %rdi
movl $0x592, %ecx            # imm = 0x592
xorl %eax, %eax
callq 0x9174
xorl %r15d, %r15d
jmp 0x5b31
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x5e08
movq 0x113cd(%rip), %rax     # 0x171a0
movq 0x8(%rax), %r13
testq %r13, %r13
je 0x5ec6
movslq 0x18(%rax), %rbp
leaq 0x2(,%rbp,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x6120
movq %rax, %r14
movq %rax, %rdi
movq %r13, %rsi
jmp 0x5e73
callq 0x64b0
testl %eax, %eax
jle 0x5e7d
movq 0x13420(%rip), %rdx     # 0x19238
movl 0x13412(%rip), %ecx     # 0x19230
movq 0x1136b(%rip), %r8      # 0x17190
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x7490
testl %eax, %eax
je 0x5e7d
movl %eax, %ebp
leaq 0x50(%rsp), %rdi
callq 0x7904
movslq %ebp, %rax
leaq 0x2(,%rax,2), %r12
movq %r12, %rdi
callq 0x1190
testq %rax, %rax
je 0x618b
movq %rax, %r14
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0x1180
jmp 0x5ecb
xorl %r14d, %r14d
jmp 0x5f71
leaq 0xb3b0(%rip), %rsi      # 0x1123c
leaq 0xb44e(%rip), %rdx      # 0x112e1
xorl %ebx, %ebx
pushq $0x7
popq %rdi
movl $0x572, %ecx            # imm = 0x572
jmp 0x5eb7
leaq 0xb396(%rip), %rsi      # 0x1123c
leaq 0xb434(%rip), %rdx      # 0x112e1
xorl %ebx, %ebx
pushq $0x7
popq %rdi
movl $0x587, %ecx            # imm = 0x587
xorl %eax, %eax
callq 0x9174
xorl %r15d, %r15d
jmp 0x5b2e
xorl %r14d, %r14d
xorl %ebp, %ebp
callq 0x51da
testl %eax, %eax
movq 0x40(%rsp), %r13
je 0x5f71
movq %rbp, 0x18(%rsp)
leaq 0xc29f(%rip), %rdi      # 0x12188
pushq $0x1
popq %rbp
movl %ebp, %esi
callq 0x36a1
testl %eax, %eax
je 0x5eff
xorl %r15d, %r15d
xorl %r12d, %r12d
jmp 0x5f20
testb %r15b, %r15b
je 0x5f0b
callq 0x63c5
jmp 0x5f10
callq 0x64b0
movl %eax, %r12d
testl %eax, %eax
jle 0x5f71
movq 0x1331a(%rip), %r15     # 0x19238
movl %ebx, %ebp
callq 0x51da
testl %eax, %eax
je 0x5f71
movq 0x13308(%rip), %rax     # 0x19238
movzwl (%rax), %eax
cmpw $0x2d, %ax
sete %dl
movl 0x132f0(%rip), %ecx     # 0x19230
cmpl $0x1, %ecx
sete %sil
testb %sil, %dl
movq %r15, 0x38(%rsp)
je 0x5f7a
movq %r12, 0x10(%rsp)
xorl %r15d, %r15d
movl $0x0, %r12d
testq %r14, %r14
movq (%rsp), %rbx
jne 0x60a2
jmp 0x60d0
movq (%rsp), %rbx
jmp 0x5afe
cmpl $0x1, %ecx
sete %cl
cmpw $0x3d, %ax
sete %al
andb %cl, %al
cmpb $0x1, %al
jne 0x6024
movq 0x11208(%rip), %rax     # 0x171a0
movq 0x10(%rax), %rbx
testq %rbx, %rbx
je 0x5f51
movq %r12, 0x10(%rsp)
movslq 0x1c(%rax), %r15
leaq 0x2(,%r15,2), %rdi
movq %rdi, 0x30(%rsp)
callq 0x1190
testq %rax, %rax
je 0x61b0
movq %rax, %r12
movq %rax, %rdi
movq %rbx, %rsi
movq 0x30(%rsp), %rdx
jmp 0x6099
leaq 0xb8d5(%rip), %rdi      # 0x118b4
pushq $0x4
popq %rsi
callq 0x36a1
xorl %r15d, %r15d
movl %ebp, %r12d
testl %eax, %eax
jne 0x595b
movslq 0x111cc(%rip), %rax     # 0x171c8
leaq 0x111ed(%rip), %rcx     # 0x171f0
movq (%rcx,%rax,8), %rdx
leaq 0x111c2(%rip), %rcx     # 0x171d0
movl (%rcx,%rax,4), %ecx
movl 0x13218(%rip), %r9d     # 0x19230
leaq 0xb905(%rip), %rsi      # 0x11924
jmp 0x5b96
callq 0x64b0
testl %eax, %eax
movq (%rsp), %rbx
jle 0x5afe
movq 0x131fc(%rip), %rdx     # 0x19238
movl 0x131ee(%rip), %ecx     # 0x19230
movq 0x11147(%rip), %r8      # 0x17190
movq 0x28(%r8), %r9
addq $0x30, %r8
leaq 0x50(%rsp), %rdi
movl $0x2520, %esi           # imm = 0x2520
callq 0x7490
testl %eax, %eax
je 0x5afe
movl %eax, %r15d
movq %r12, 0x10(%rsp)
cltq
leaq 0x2(,%rax,2), %rbx
movq %rbx, %rdi
callq 0x1190
testq %rax, %rax
je 0x61cb
movq %rax, %r12
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x1180
movq (%rsp), %rbx
callq 0x1ef9
testq %rax, %rax
je 0x6166
andq $0x0, (%rax)
andq $0x0, 0x20(%rax)
movq %r14, 0x8(%rax)
movq 0x18(%rsp), %rcx
movl %ecx, 0x18(%rax)
movq %r12, 0x10(%rax)
movl %r15d, 0x1c(%rax)
movq %rax, %r15
movq 0x110b9(%rip), %rdi     # 0x17190
subq $0x8, %rsp
movl 0x14(%rsp), %esi
movl %ebp, %edx
movq %rbx, %rcx
movq %r15, %r8
movq 0x50(%rsp), %r9
pushq 0x28(%rsp)
pushq 0x38(%rsp)
pushq 0x28(%rsp)
pushq 0x58(%rsp)
pushq %r13
callq 0x209d
addq $0x30, %rsp
testq %rax, %rax
je 0x613b
movl 0x11086(%rip), %ecx     # 0x17198
movl %ecx, (%rax)
movl %ebp, 0x4(%rax)
pushq $0x1
popq %r15
jmp 0x5b54
leaq 0xb115(%rip), %rsi      # 0x1123c
leaq 0xb1b3(%rip), %rdx      # 0x112e1
xorl %r15d, %r15d
pushq $0x7
popq %rdi
movl $0x5b0, %ecx            # imm = 0x5B0
jmp 0x61a4
movslq 0x11086(%rip), %rax     # 0x171c8
leaq 0x110a7(%rip), %rcx     # 0x171f0
movq (%rcx,%rax,8), %rdx
leaq 0x1107c(%rip), %rcx     # 0x171d0
movl (%rcx,%rax,4), %ecx
leaq 0xb7e4(%rip), %rsi      # 0x11942
xorl %r14d, %r14d
jmp 0x5b24
leaq 0xb0cf(%rip), %rsi      # 0x1123c
leaq 0xb16d(%rip), %rdx      # 0x112e1
xorl %r15d, %r15d
pushq $0x7
popq %rdi
movl $0x613, %ecx            # imm = 0x613
xorl %eax, %eax
callq 0x9174
jmp 0x5b31
leaq 0xb0aa(%rip), %rsi      # 0x1123c
leaq 0xb148(%rip), %rdx      # 0x112e1
xorl %r15d, %r15d
pushq $0x7
popq %rdi
movl $0x5c6, %ecx            # imm = 0x5C6
xorl %eax, %eax
callq 0x9174
xorl %r14d, %r14d
jmp 0x61eb
leaq 0xb085(%rip), %rsi      # 0x1123c
leaq 0xb123(%rip), %rdx      # 0x112e1
xorl %r15d, %r15d
pushq $0x7
popq %rdi
movl $0x5f3, %ecx            # imm = 0x5F3
jmp 0x61e4
leaq 0xb06a(%rip), %rsi      # 0x1123c
leaq 0xb108(%rip), %rdx      # 0x112e1
xorl %r15d, %r15d
pushq $0x7
popq %rdi
movl $0x608, %ecx            # imm = 0x608
xorl %eax, %eax
callq 0x9174
xorl %r12d, %r12d
movq (%rsp), %rbx
jmp 0x5b31