// File: /workspace/github_c_makefile_star2_O0/MikeGray-APH[P]LibLouisAPH/source/compile.c
// Function: compile_join
static int compile_join(void)
{
	struct character *character0, *character1;
	int index;
	unsigned int attrs0, attrs1;

	if(!token_parse())
	{
		log_message(LOG_ERROR, "%s:%d  missing join index", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}
	if(!token_convert_to_int())
		return 0;
	index = token_int;
	if(index < 0 || index > UNICHAR_JOIN_MAX)
	{
		log_message(LOG_ERROR, "%s:%d  join index out of range", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}

	if(!token_parse())
	{
		log_message(LOG_ERROR, "%s:%d  missing character", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}
	token_convert_escapes();
	if(token_len != 1)
	{
		log_message(LOG_ERROR, "%s:%d  invalid character", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}
	character0 = table_find_or_add_character(table, token_crs[0]);
	if(!character0)
		return 0;

	if(!token_parse())
	{
		log_message(LOG_ERROR, "%s:%d  missing character", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}
	token_convert_escapes();
	if(token_len != 1)
	{
		log_message(LOG_ERROR, "%s:%d  invalid character", table_file_names[include_depth], table_file_lines[include_depth]);
		return 0;
	}

	character1 = table_find_or_add_character(table, token_crs[0]);
	if(!character1)
		return 0;

	attrs0 = 0;
	attrs1 = 0;
	if(token_parse())
	if(token_convert_to_int())
	{
		attrs0 = token_int;

		if(token_parse())
		if(token_convert_to_int())
			attrs1 = token_int;
	}

	character0->attrs |= attrs0;
	character0->joins[index] = character1;
	character1->attrs |= attrs1;
	character1->joins[index] = character0;

	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
callq 0x6190
cmpl $0x0, %eax
jne 0x70f4
movslq 0x1d0df(%rip), %rcx     # 0x24198
leaq 0x1d100(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1d0cd(%rip), %rcx     # 0x24198
leaq 0x1d0ce(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x1769b(%rip), %rsi     # 0x1e77c
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
callq 0x96b0
cmpl $0x0, %eax
jne 0x710a
movl $0x0, -0x4(%rbp)
jmp 0x7384
movl 0x1f108(%rip), %eax     # 0x26218
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
jl 0x711f
cmpl $0x3, -0x1c(%rbp)
jle 0x7161
movslq 0x1d072(%rip), %rcx     # 0x24198
leaq 0x1d093(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1d060(%rip), %rcx     # 0x24198
leaq 0x1d061(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x17648(%rip), %rsi     # 0x1e796
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
callq 0x6190
cmpl $0x0, %eax
jne 0x71ad
movslq 0x1d026(%rip), %rcx     # 0x24198
leaq 0x1d047(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1d014(%rip), %rcx     # 0x24198
leaq 0x1d015(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x1761b(%rip), %rsi     # 0x1e7b5
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
callq 0x9670
cmpl $0x1, 0x1f047(%rip)     # 0x26200
je 0x71fd
movslq 0x1cfd6(%rip), %rcx     # 0x24198
leaq 0x1cff7(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1cfc4(%rip), %rcx     # 0x24198
leaq 0x1cfc5(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x175e4(%rip), %rsi     # 0x1e7ce
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
movq 0x1cf5c(%rip), %rdi     # 0x24160
movq 0x1effd(%rip), %rax     # 0x26208
movzwl (%rax), %esi
callq 0x2990
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x722a
movl $0x0, -0x4(%rbp)
jmp 0x7384
callq 0x6190
cmpl $0x0, %eax
jne 0x7276
movslq 0x1cf5d(%rip), %rcx     # 0x24198
leaq 0x1cf7e(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1cf4b(%rip), %rcx     # 0x24198
leaq 0x1cf4c(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x17552(%rip), %rsi     # 0x1e7b5
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
callq 0x9670
cmpl $0x1, 0x1ef7e(%rip)     # 0x26200
je 0x72c6
movslq 0x1cf0d(%rip), %rcx     # 0x24198
leaq 0x1cf2e(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1cefb(%rip), %rcx     # 0x24198
leaq 0x1cefc(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x1751b(%rip), %rsi     # 0x1e7ce
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x7384
movq 0x1ce93(%rip), %rdi     # 0x24160
movq 0x1ef34(%rip), %rax     # 0x26208
movzwl (%rax), %esi
callq 0x2990
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x72f3
movl $0x0, -0x4(%rbp)
jmp 0x7384
movl $0x0, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
callq 0x6190
cmpl $0x0, %eax
je 0x7341
callq 0x96b0
cmpl $0x0, %eax
je 0x733f
movl 0x1eefd(%rip), %eax     # 0x26218
movl %eax, -0x20(%rbp)
callq 0x6190
cmpl $0x0, %eax
je 0x733d
callq 0x96b0
cmpl $0x0, %eax
je 0x733b
movl 0x1eee0(%rip), %eax     # 0x26218
movl %eax, -0x24(%rbp)
jmp 0x733d
jmp 0x733f
jmp 0x7341
movl -0x20(%rbp), %ecx
movq -0x10(%rbp), %rax
orl 0x24(%rax), %ecx
movl %ecx, 0x24(%rax)
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, 0x8(%rax,%rcx,8)
movl -0x24(%rbp), %ecx
movq -0x18(%rbp), %rax
orl 0x24(%rax), %ecx
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, 0x8(%rax,%rcx,8)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)