// File: /workspace/github_c_makefile_star2_O0/MikeGray-APH[P]LibLouisAPH/source/compile.c
// Function: mode_compile
static int mode_compile(struct mode *mode)
{
	int i;

	if(!token_parse())
		goto return_missing;

	memset(mode, 0, sizeof(struct mode));

	/*   begin   */
	token_convert_to_dots();
	if(token_len >= INDICATOR_MAX - 1)
		goto return_too_long;
	if(token_len < 0)
		goto return_invalid_uchar;
	if(!(token_crs[0] == u'-' && token_len == 1))
	{
		for(i = 0; i < token_len; i++)
			mode->begin[i] = token_crs[i];
		mode->begin[token_len] = 0;
		mode->begin_len = token_len;
	}

	if(!token_parse())
		goto return_missing;

	/*   end   */
	token_convert_to_dots();
	if(token_len >= INDICATOR_MAX - 1)
		goto return_too_long;
	if(token_len < 0)
		goto return_invalid_uchar;
	if(!(token_crs[0] == u'-' && token_len == 1))
	{
		for(i = 0; i < token_len; i++)
			mode->end[i] = token_crs[i];
		mode->end[token_len] = 0;
		mode->end_len = token_len;
	}

	/*   short form   */
	if(!token_parse())
		return 1;

	/*   word   */
	token_convert_to_dots();
	if(token_len >= INDICATOR_MAX - 1)
		goto return_too_long;
	if(token_len < 0)
		goto return_invalid_uchar;
	if(!(token_crs[0] == u'-' && token_len == 1))
	{
		for(i = 0; i < token_len; i++)
			mode->word[i] = token_crs[i];
		mode->word[token_len] = 0;
		mode->word_len = token_len;
	}

	if(!token_parse())
		goto return_missing;

	/*   term   */
	token_convert_to_dots();
	if(token_len >= INDICATOR_MAX - 1)
		goto return_too_long;
	if(token_len < 0)
		goto return_invalid_uchar;
	if(!(token_crs[0] == u'-' && token_len == 1))
	{
		for(i = 0; i < token_len; i++)
			mode->term[i] = token_crs[i];
		mode->term[token_len] = 0;
		mode->term_len = token_len;
	}

	if(!token_parse())
		goto return_missing;

	/*   symbol   */
	token_convert_to_dots();
	if(token_len >= INDICATOR_MAX - 1)
		goto return_too_long;
	if(token_len < 0)
		goto return_invalid_uchar;
	if(!(token_crs[0] == u'-' && token_len == 1))
	{
		for(i = 0; i < token_len; i++)
			mode->symbol[i] = token_crs[i];
		mode->symbol[token_len] = 0;
		mode->symbol_len = token_len;
	}

	/*   passage length   */
	if(token_parse())
	if(token_convert_to_int())
		mode->passage_len = token_int;
	else
		return 0;

	return 1;

	return_missing:
	log_message(LOG_ERROR, "%s:%d  missing indicators", table_file_names[include_depth], table_file_lines[include_depth]);
	return 0;

	return_invalid_uchar:
	log_message(LOG_ERROR, "%s:%d  invalid dot character", table_file_names[include_depth], table_file_lines[include_depth]);
	return 0;

	return_too_long:
	log_message(LOG_ERROR, "%s:%d  indicator too long", table_file_names[include_depth], table_file_lines[include_depth]);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
callq 0x6190
cmpl $0x0, %eax
jne 0x9a1b
jmp 0x9d80
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x80, %edx
callq 0x1100
callq 0x9ed0
cmpl $0x6, 0x1c7c9(%rip)     # 0x26200
jl 0x9a3e
jmp 0x9dfe
cmpl $0x0, 0x1c7bb(%rip)     # 0x26200
jge 0x9a4c
jmp 0x9dbf
movq 0x1c7b5(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9a64
cmpl $0x1, 0x1c79e(%rip)     # 0x26200
je 0x9abc
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x1c78c(%rip), %eax     # 0x26200
jge 0x9a9d
movq 0x1c78b(%rip), %rax     # 0x26208
movslq -0x14(%rbp), %rcx
movw (%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movw %dx, 0xc(%rax,%rcx,2)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9a6b
movq -0x10(%rbp), %rax
movslq 0x1c758(%rip), %rcx     # 0x26200
movw $0x0, 0xc(%rax,%rcx,2)
movl 0x1c74b(%rip), %ecx     # 0x26200
movq -0x10(%rbp), %rax
movl %ecx, 0x54(%rax)
callq 0x6190
cmpl $0x0, %eax
jne 0x9acb
jmp 0x9d80
callq 0x9ed0
cmpl $0x6, 0x1c729(%rip)     # 0x26200
jl 0x9ade
jmp 0x9dfe
cmpl $0x0, 0x1c71b(%rip)     # 0x26200
jge 0x9aec
jmp 0x9dbf
movq 0x1c715(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9b04
cmpl $0x1, 0x1c6fe(%rip)     # 0x26200
je 0x9b5c
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x1c6ec(%rip), %eax     # 0x26200
jge 0x9b3d
movq 0x1c6eb(%rip), %rax     # 0x26208
movslq -0x14(%rbp), %rcx
movw (%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movw %dx, 0x1a(%rax,%rcx,2)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9b0b
movq -0x10(%rbp), %rax
movslq 0x1c6b8(%rip), %rcx     # 0x26200
movw $0x0, 0x1a(%rax,%rcx,2)
movl 0x1c6ab(%rip), %ecx     # 0x26200
movq -0x10(%rbp), %rax
movl %ecx, 0x58(%rax)
callq 0x6190
cmpl $0x0, %eax
jne 0x9b72
movl $0x1, -0x4(%rbp)
jmp 0x9e3b
callq 0x9ed0
cmpl $0x6, 0x1c682(%rip)     # 0x26200
jl 0x9b85
jmp 0x9dfe
cmpl $0x0, 0x1c674(%rip)     # 0x26200
jge 0x9b93
jmp 0x9dbf
movq 0x1c66e(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9bab
cmpl $0x1, 0x1c657(%rip)     # 0x26200
je 0x9c03
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x1c645(%rip), %eax     # 0x26200
jge 0x9be4
movq 0x1c644(%rip), %rax     # 0x26208
movslq -0x14(%rbp), %rcx
movw (%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movw %dx, 0x28(%rax,%rcx,2)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9bb2
movq -0x10(%rbp), %rax
movslq 0x1c611(%rip), %rcx     # 0x26200
movw $0x0, 0x28(%rax,%rcx,2)
movl 0x1c604(%rip), %ecx     # 0x26200
movq -0x10(%rbp), %rax
movl %ecx, 0x5c(%rax)
callq 0x6190
cmpl $0x0, %eax
jne 0x9c12
jmp 0x9d80
callq 0x9ed0
cmpl $0x6, 0x1c5e2(%rip)     # 0x26200
jl 0x9c25
jmp 0x9dfe
cmpl $0x0, 0x1c5d4(%rip)     # 0x26200
jge 0x9c33
jmp 0x9dbf
movq 0x1c5ce(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9c4b
cmpl $0x1, 0x1c5b7(%rip)     # 0x26200
je 0x9ca3
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x1c5a5(%rip), %eax     # 0x26200
jge 0x9c84
movq 0x1c5a4(%rip), %rax     # 0x26208
movslq -0x14(%rbp), %rcx
movw (%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movw %dx, 0x36(%rax,%rcx,2)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9c52
movq -0x10(%rbp), %rax
movslq 0x1c571(%rip), %rcx     # 0x26200
movw $0x0, 0x36(%rax,%rcx,2)
movl 0x1c564(%rip), %ecx     # 0x26200
movq -0x10(%rbp), %rax
movl %ecx, 0x60(%rax)
callq 0x6190
cmpl $0x0, %eax
jne 0x9cb2
jmp 0x9d80
callq 0x9ed0
cmpl $0x6, 0x1c542(%rip)     # 0x26200
jl 0x9cc5
jmp 0x9dfe
cmpl $0x0, 0x1c534(%rip)     # 0x26200
jge 0x9cd3
jmp 0x9dbf
movq 0x1c52e(%rip), %rax     # 0x26208
movzwl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9ceb
cmpl $0x1, 0x1c517(%rip)     # 0x26200
je 0x9d43
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0x1c505(%rip), %eax     # 0x26200
jge 0x9d24
movq 0x1c504(%rip), %rax     # 0x26208
movslq -0x14(%rbp), %rcx
movw (%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movw %dx, 0x44(%rax,%rcx,2)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9cf2
movq -0x10(%rbp), %rax
movslq 0x1c4d1(%rip), %rcx     # 0x26200
movw $0x0, 0x44(%rax,%rcx,2)
movl 0x1c4c4(%rip), %ecx     # 0x26200
movq -0x10(%rbp), %rax
movl %ecx, 0x64(%rax)
callq 0x6190
cmpl $0x0, %eax
je 0x9d74
callq 0x96b0
cmpl $0x0, %eax
je 0x9d66
movl 0x1c4bb(%rip), %ecx     # 0x26218
movq -0x10(%rbp), %rax
movl %ecx, 0x68(%rax)
jmp 0x9d72
movl $0x0, -0x4(%rbp)
jmp 0x9e3b
jmp 0x9d74
movl $0x1, -0x4(%rbp)
jmp 0x9e3b
movslq 0x1a411(%rip), %rcx     # 0x24198
leaq 0x1a432(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1a3ff(%rip), %rcx     # 0x24198
leaq 0x1a400(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x14948(%rip), %rsi     # 0x1e6f7
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x9e3b
movslq 0x1a3d2(%rip), %rcx     # 0x24198
leaq 0x1a3f3(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1a3c0(%rip), %rcx     # 0x24198
leaq 0x1a3c1(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x14923(%rip), %rsi     # 0x1e711
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
jmp 0x9e3b
movslq 0x1a393(%rip), %rcx     # 0x24198
leaq 0x1a3b4(%rip), %rax     # 0x241c0
movq (%rax,%rcx,8), %rdx
movslq 0x1a381(%rip), %rcx     # 0x24198
leaq 0x1a382(%rip), %rax     # 0x241a0
movl (%rax,%rcx,4), %ecx
movl $0x6, %edi
leaq 0x14901(%rip), %rsi     # 0x1e72e
movb $0x0, %al
callq 0xf610
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)