// File: /workspace/github_c_makefile_star2_O2/MikeGray-APH[P]LibLouisAPH/source/languages/generic-backward.c
// Function: convert_indicators_mode
static int convert_indicators_mode(struct translate *translate, const struct mode *mode, const unichar delimiter)
{
	int cnt;

	cnt = 0;
	translate->input_crs =
	translate->output_len = 0;
	while(translate->input_crs < translate->input_len)
	{
		if(translate_copy_marked_indicators_or_modifiers(translate) > 0)
			continue;

		if(translate_is_equal(translate, mode->begin, mode->begin_len))
		{
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			if(!translate_copy_to_output(translate, mode->begin_len, 1))
				return -1;
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			cnt++;
		}
		else if(translate_is_equal(translate, mode->end, mode->end_len))
		{
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			if(!translate_copy_to_output(translate, mode->end_len, 1))
				return -1;
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			cnt++;
		}
		else if(translate_is_equal(translate, mode->word, mode->word_len))
		{
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			if(!translate_copy_to_output(translate, mode->word_len, 1))
				return -1;
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			cnt++;
		}
		else if(translate_is_equal(translate, mode->term, mode->term_len))
		{
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			if(!translate_copy_to_output(translate, mode->term_len, 1))
				return -1;
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			cnt++;
		}
		else if(translate_is_equal(translate, mode->symbol, mode->symbol_len))
		{
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			if(!translate_copy_to_output(translate, mode->symbol_len, 1))
				return -1;
			if(!translate_insert_dot(translate, delimiter))
				return -1;
			cnt++;
		}
		else if(!translate_copy_to_output(translate, 1, 1))
			return -1;
	}

	return cnt;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movq %rdi, %r15
andl $0x0, 0x68(%rdi)
andl $0x0, 0x40(%rdi)
leaq 0xc(%rsi), %r12
leaq 0x1a(%rsi), %r13
leaq 0x28(%rsi), %rbp
leaq 0x36(%rsi), %rax
movq %rax, 0x10(%rsp)
leaq 0x44(%rsi), %rax
movq %rax, 0x8(%rsp)
xorl %ebx, %ebx
movzwl %dx, %eax
movl %eax, 0x4(%rsp)
movl 0x40(%r15), %eax
cmpl 0x44(%r15), %eax
jge 0xdc59
movq %r15, %rdi
callq 0x6cc5
testl %eax, %eax
jg 0xdb30
movl 0x54(%r14), %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0xdc6a
testl %eax, %eax
jne 0xdbc7
movl 0x58(%r14), %edx
movq %r15, %rdi
movq %r13, %rsi
callq 0xdc6a
testl %eax, %eax
jne 0xdbdd
movl 0x5c(%r14), %edx
movq %r15, %rdi
movq %rbp, %rsi
callq 0xdc6a
testl %eax, %eax
jne 0xdbf3
movl 0x60(%r14), %edx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0xdc6a
testl %eax, %eax
jne 0xdc09
movl 0x64(%r14), %edx
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0xdc6a
movq %r15, %rdi
testl %eax, %eax
jne 0xdc1f
pushq $0x1
popq %rdx
movl %edx, %esi
callq 0x6b0c
testl %eax, %eax
jne 0xdb30
jmp 0xdc56
movq %r15, %rdi
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
movl 0x54(%r14), %esi
jmp 0xdc30
movq %r15, %rdi
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
movl 0x58(%r14), %esi
jmp 0xdc30
movq %r15, %rdi
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
movl 0x5c(%r14), %esi
jmp 0xdc30
movq %r15, %rdi
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
movl 0x60(%r14), %esi
jmp 0xdc30
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
movl 0x64(%r14), %esi
movq %r15, %rdi
pushq $0x1
popq %rdx
callq 0x6b0c
testl %eax, %eax
je 0xdc56
movq %r15, %rdi
movl 0x4(%rsp), %esi
callq 0xdcb4
testl %eax, %eax
je 0xdc56
incl %ebx
jmp 0xdb30
pushq $-0x1
popq %rbx
movl %ebx, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq