// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/arm_core.c
// Function: subtilis_arm_section_add_call_site
void subtilis_arm_section_add_call_site(subtilis_arm_section_t *s,
					size_t stm_site, size_t ldm_site,
					size_t stf_site, size_t ldf_site,
					size_t int_args, size_t real_args,
					size_t op, size_t *int_arg_ops,
					size_t *real_arg_ops,
					subtilis_error_t *err)
/* clang-format on */

{
	size_t new_max;
	subtilis_arm_call_site_t *site;
	subtilis_arm_call_site_t *new_call_sites;
	size_t i;

	if (s->call_site_count == s->max_call_site_count) {
		new_max = s->call_site_count + SUBTILIS_CONFIG_PROC_GRAN;
		new_call_sites =
		    realloc(s->call_sites, new_max * sizeof(*new_call_sites));
		if (!new_call_sites) {
			subtilis_error_set_oom(err);
			return;
		}
		s->call_sites = new_call_sites;
		s->max_call_site_count = new_max;
	}
	site = &s->call_sites[s->call_site_count++];
	site->stm_site = stm_site;
	site->ldm_site = ldm_site;
	site->stf_site = stf_site;
	site->ldf_site = ldf_site;
	site->int_args = int_args;
	site->real_args = real_args;
	site->call_site = op;

	if (int_args > 4)
		for (i = 0; i < int_args - 4; i++)
			site->int_arg_ops[i] = int_arg_ops[i];

	if (real_args > 4)
		for (i = 0; i < real_args - 4; i++)
			site->real_arg_ops[i] = real_arg_ops[i];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
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 -0x8(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jne 0x7023d
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
addq $0x40, %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rdi
imulq $0xf8, -0x38(%rbp), %rsi
callq 0x121e0
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x70225
movq 0x30(%rbp), %rdi
movl $0x1, %esi
leaq 0x3c93a(%rip), %rdx     # 0xacb50
movl $0xd3, %ecx
callq 0x158e0
jmp 0x7034e
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x38(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq -0x8(%rbp), %rdx
movq 0x40(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x40(%rdx)
imulq $0xf8, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x28(%rax)
movq 0x18(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x30(%rax)
cmpq $0x4, -0x30(%rbp)
jbe 0x70302
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x30(%rbp), %rcx
subq $0x4, %rcx
cmpq %rcx, %rax
jae 0x70300
movq 0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x40(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rdx, 0x38(%rax,%rcx,8)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x702c8
jmp 0x70302
cmpq $0x4, 0x10(%rbp)
jbe 0x7034e
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq 0x10(%rbp), %rcx
subq $0x4, %rcx
cmpq %rcx, %rax
jae 0x7034c
movq 0x28(%rbp), %rax
movq -0x50(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x40(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rdx, 0x98(%rax,%rcx,8)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x70311
jmp 0x7034e
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)