// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/assembler.c
// Function: prv_parser_main_loop
static void prv_parser_main_loop(subtilis_arm_ass_context_t *c,
				 subtilis_error_t *err)
{
	const char *tbuf;

	subtilis_lexer_get(c->l, c->t, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	tbuf = subtilis_token_get_text(c->t);
	while ((c->t->type != SUBTILIS_TOKEN_OPERATOR) && (strcmp(tbuf, "]"))) {
		switch (c->t->type) {
		case SUBTILIS_TOKEN_KEYWORD:
			prv_parse_keyword(c, tbuf, &c->t->tok.keyword, err);
			break;
		case SUBTILIS_TOKEN_IDENTIFIER:
			prv_parse_identifier(c, err);
			break;
		default:
			subtilis_error_set_expected(
			    err, "keyword or identifier", tbuf,
			    c->l->stream->name, c->l->line);
			return;
		}

		if (err->type != SUBTILIS_ERROR_OK)
			return;

		tbuf = subtilis_token_get_text(c->t);
	}

	if (!(c->t->type == SUBTILIS_TOKEN_OPERATOR && !strcmp(tbuf, "]"))) {
		subtilis_error_set_expected(err, "label or keyword", tbuf,
					    c->l->stream->name, c->l->line);
		return;
	}

	if (c->num_blocks != 0)
		subtilis_error_set_compund_not_term(err, c->l->stream->name,
						    c->l->line);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x10(%rbp), %rdx
callq 0x133f0
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
je 0x91307
jmp 0x914ad
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x12d70
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, (%rcx)
movb %al, -0x19(%rbp)
je 0x91343
movq -0x18(%rbp), %rdi
leaq 0x1cf16(%rip), %rsi     # 0xae24b
callq 0x12140
cmpl $0x0, %eax
setne %al
movb %al, -0x19(%rbp)
movb -0x19(%rbp), %al
testb $0x1, %al
jne 0x9134f
jmp 0x91408
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %eax
movl %eax, -0x20(%rbp)
subl $0x1, %eax
je 0x9136d
jmp 0x91363
movl -0x20(%rbp), %eax
subl $0x6, %eax
je 0x9138c
jmp 0x9139b
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
addq $0x8, %rdx
movq -0x10(%rbp), %rcx
callq 0x915e0
jmp 0x913e4
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x91740
jmp 0x913e4
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x30(%rax), %r8
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x38(%rax), %r9d
movl $0x1d, %esi
leaq 0x1cd70(%rip), %rdx     # 0xae137
leaq 0x1cd52(%rip), %rax     # 0xae120
movq %rax, (%rsp)
movl $0x10b6, 0x8(%rsp)      # imm = 0x10B6
callq 0x156d0
jmp 0x914ad
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
je 0x913f2
jmp 0x914ad
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x12d70
movq %rax, -0x18(%rbp)
jmp 0x91318
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x2, (%rax)
jne 0x9142a
movq -0x18(%rbp), %rdi
leaq 0x1ce2b(%rip), %rsi     # 0xae24b
callq 0x12140
cmpl $0x0, %eax
je 0x91470
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x30(%rax), %r8
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x38(%rax), %r9d
movl $0x1d, %esi
leaq 0x1ccf7(%rip), %rdx     # 0xae14d
leaq 0x1ccc3(%rip), %rax     # 0xae120
movq %rax, (%rsp)
movl $0x10c2, 0x8(%rsp)      # imm = 0x10C2
callq 0x156d0
jmp 0x914ad
movq -0x8(%rbp), %rax
cmpq $0x0, 0x70(%rax)
je 0x914ad
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x30(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x38(%rax), %ecx
movl $0x1e, %esi
leaq 0x1cc7e(%rip), %r8      # 0xae120
movl $0x10c8, %r9d           # imm = 0x10C8
callq 0x15930
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)