// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/arm_reg_alloc.c
// Function: prv_arm_regs_used_before_from_to
static void prv_arm_regs_used_before_from_to(subtilis_arm_section_t *arm_s,
					     subtilis_arm_op_t *from,
					     subtilis_arm_op_t *op,
					     size_t int_args, size_t real_args,
					     subtilis_regs_used_t *regs_used,
					     subtilis_error_t *err)
{
	size_t i;
	subtilis_arm_reg_ud_t ud;
	size_t int_reg_list = 0;
	size_t real_reg_list = 0;

	prv_init_arm_reg_ud(&ud, arm_s, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	i = int_args;
	if (i > SUBTILIS_ARM_REG_MAX_ARGS)
		i = SUBTILIS_ARM_REG_MAX_ARGS;
	for (; i <= SUBTILIS_ARM_REG_MAX_INT_REGS - 1; i++) {
		if (i < arm_s->stype->int_regs ||
		    prv_is_reg_used_before(&ud, i, &ud.int_regs->used_walker,
					   from, op))
			int_reg_list |= 1 << i;
	}

	i = real_args;
	if (i > SUBTILIS_ARM_REG_MAX_ARGS)
		i = SUBTILIS_ARM_REG_MAX_ARGS;
	for (; i < arm_s->fp_if->max_regs; i++) {
		if (i < arm_s->stype->fp_regs ||
		    prv_is_reg_used_before(&ud, i, &ud.real_regs->used_walker,
					   from, op))
			real_reg_list |= 1 << i;
	}

	regs_used->int_regs = int_reg_list;
	regs_used->real_regs = real_reg_list;

	prv_free_arm_reg_ud(&ud);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq $0x0, -0x90(%rbp)
movq $0x0, -0x98(%rbp)
movq -0x8(%rbp), %rsi
movq 0x10(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x77d80
movq 0x10(%rbp), %rax
cmpl $0x0, (%rax)
je 0x798cf
jmp 0x79a24
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x4, -0x38(%rbp)
jbe 0x798e6
movq $0x4, -0x38(%rbp)
jmp 0x798e8
cmpq $0xa, -0x38(%rbp)
ja 0x7995d
movq -0x38(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0xa0(%rcx), %rcx
cmpq 0x158(%rcx), %rax
jb 0x79930
movq -0x38(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq $0x1b8, %rdx            # imm = 0x1B8
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
leaq -0x88(%rbp), %rdi
callq 0x79770
testb $0x1, %al
jne 0x79930
jmp 0x7994d
movq -0x38(%rbp), %rax
movl %eax, %ecx
movl $0x1, %eax
shll %cl, %eax
cltq
orq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
jmp 0x7994f
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x798e8
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x4, -0x38(%rbp)
jbe 0x79974
movq $0x4, -0x38(%rbp)
jmp 0x79976
movq -0x38(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0xc0(%rcx), %rcx
cmpq (%rcx), %rax
jae 0x799fb
movq -0x38(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0xa0(%rcx), %rcx
cmpq 0x160(%rcx), %rax
jb 0x799cb
movq -0x38(%rbp), %rsi
movq -0x78(%rbp), %rdx
addq $0x1b8, %rdx            # imm = 0x1B8
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
leaq -0x88(%rbp), %rdi
callq 0x79770
testb $0x1, %al
jne 0x799cb
jmp 0x799e8
movq -0x38(%rbp), %rax
movl %eax, %ecx
movl $0x1, %eax
shll %cl, %eax
cltq
orq -0x98(%rbp), %rax
movq %rax, -0x98(%rbp)
jmp 0x799ea
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x79976
movq -0x90(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x98(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
leaq -0x88(%rbp), %rdi
callq 0x795d0
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax)