// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/arm_encode.c
// Function: prv_arm_encode
static void prv_arm_encode(subtilis_arm_section_t *arm_s,
			   subtilis_arm_encode_ud_t *ud, subtilis_error_t *err)
{
	subtlis_arm_walker_t walker;
	subtilis_arm_op_t align_op;

	walker.user_data = ud;
	walker.label_fn = prv_encode_label;
	walker.directive_fn = prv_encode_directive;
	walker.data_fn = prv_encode_data_instr;
	walker.mul_fn = prv_encode_mul_instr;
	walker.cmp_fn = prv_encode_cmp_instr;
	walker.mov_fn = prv_encode_mov_instr;
	walker.stran_fn = prv_encode_stran_instr;
	walker.mtran_fn = prv_encode_mtran_instr;
	walker.br_fn = prv_encode_br_instr;
	walker.swi_fn = prv_encode_swi_instr;
	walker.ldrc_fn = prv_encode_ldrc_instr;
	walker.ldrp_fn = prv_encode_ldrp_instr;
	walker.adr_fn = prv_encode_adr_instr;
	walker.cmov_fn = prv_encode_cmov_instr;
	walker.flags_fn = prv_encode_flags_instr;
	walker.fpa_data_monadic_fn = prv_encode_fpa_data_monadic_instr;
	walker.fpa_data_dyadic_fn = prv_encode_fpa_data_dyadic_instr;
	walker.fpa_stran_fn = prv_encode_fpa_stran_instr;
	walker.fpa_tran_fn = prv_encode_fpa_tran_instr;
	walker.fpa_cmp_fn = prv_encode_fpa_cmp_instr;
	walker.fpa_ldrc_fn = prv_encode_fpa_ldrc_instr;
	walker.fpa_cptran_fn = prv_encode_fpa_cptran_instr;
	walker.vfp_stran_fn = prv_encode_vfp_stran_instr;
	walker.vfp_copy_fn = prv_encode_vfp_copy_instr;
	walker.vfp_ldrc_fn = prv_encode_vfp_ldrc_instr;
	walker.vfp_tran_fn = prv_encode_vfp_tran_instr;
	walker.vfp_tran_dbl_fn = prv_encode_vfp_tran_dbl_instr;
	walker.vfp_cptran_fn = prv_encode_vfp_cptran_instr;
	walker.vfp_data_fn = prv_encode_vfp_data_instr;
	walker.vfp_cmp_fn = prv_encode_vfp_cmp_instr;
	walker.vfp_sqrt_fn = prv_encode_vfp_sqrt_instr;
	walker.vfp_sysreg_fn = prv_encode_vfp_sysreg_instr;
	walker.vfp_cvt_fn = prv_encode_vfp_cvt_instr;
	walker.stran_misc_fn = prv_encode_stran_misc_instr;
	walker.simd_fn = prv_encode_simd_instr;
	walker.signx_fn = prv_encode_signx_instr;

	subtilis_arm_walk(arm_s, &walker, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

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

	prv_apply_back_patches(ud, err);

	/*
	 * Forcibly align the end of each section to a 4 byte boundary.
	 */

	align_op.type = SUBTILIS_ARM_OP_ALIGN;
	align_op.op.alignment = 4;
	prv_encode_directive(ud, &align_op, err);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1b0, %rsp            # imm = 0x1B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq 0x4d7(%rip), %rax       # 0x7e3e0
movq %rax, -0x130(%rbp)
leaq 0x5b9(%rip), %rax       # 0x7e4d0
movq %rax, -0x138(%rbp)
leaq 0x91b(%rip), %rax       # 0x7e840
movq %rax, -0x128(%rbp)
leaq 0xa3d(%rip), %rax       # 0x7e970
movq %rax, -0x120(%rbp)
leaq 0xb6f(%rip), %rax       # 0x7eab0
movq %rax, -0x118(%rbp)
leaq 0xbc1(%rip), %rax       # 0x7eb10
movq %rax, -0x110(%rbp)
leaq 0xc13(%rip), %rax       # 0x7eb70
movq %rax, -0x108(%rbp)
leaq 0xd85(%rip), %rax       # 0x7ecf0
movq %rax, -0x100(%rbp)
leaq 0xf77(%rip), %rax       # 0x7eef0
movq %rax, -0xf8(%rbp)
leaq 0x10b9(%rip), %rax      # 0x7f040
movq %rax, -0xf0(%rbp)
leaq 0x115b(%rip), %rax      # 0x7f0f0
movq %rax, -0xe8(%rbp)
leaq 0x125d(%rip), %rax      # 0x7f200
movq %rax, -0xe0(%rbp)
leaq 0x136f(%rip), %rax      # 0x7f320
movq %rax, -0xd8(%rbp)
leaq 0x1401(%rip), %rax      # 0x7f3c0
movq %rax, -0xc8(%rbp)
leaq 0x1573(%rip), %rax      # 0x7f540
movq %rax, -0xd0(%rbp)
leaq 0x1675(%rip), %rax      # 0x7f650
movq %rax, -0xc0(%rbp)
leaq 0x16c7(%rip), %rax      # 0x7f6b0
movq %rax, -0xb8(%rbp)
leaq 0x1719(%rip), %rax      # 0x7f710
movq %rax, -0xb0(%rbp)
leaq 0x185b(%rip), %rax      # 0x7f860
movq %rax, -0xa8(%rbp)
leaq 0x19dd(%rip), %rax      # 0x7f9f0
movq %rax, -0xa0(%rbp)
leaq 0x1b4f(%rip), %rax      # 0x7fb70
movq %rax, -0x98(%rbp)
leaq 0x1c41(%rip), %rax      # 0x7fc70
movq %rax, -0x90(%rbp)
leaq 0x1d03(%rip), %rax      # 0x7fd40
movq %rax, -0x88(%rbp)
leaq 0x1e55(%rip), %rax      # 0x7fea0
movq %rax, -0x80(%rbp)
leaq 0x1f7a(%rip), %rax      # 0x7ffd0
movq %rax, -0x78(%rbp)
leaq 0x205f(%rip), %rax      # 0x800c0
movq %rax, -0x70(%rbp)
leaq 0x2284(%rip), %rax      # 0x802f0
movq %rax, -0x68(%rbp)
leaq 0x2529(%rip), %rax      # 0x805a0
movq %rax, -0x60(%rbp)
leaq 0x267e(%rip), %rax      # 0x80700
movq %rax, -0x58(%rbp)
leaq 0x2963(%rip), %rax      # 0x809f0
movq %rax, -0x50(%rbp)
leaq 0x2b68(%rip), %rax      # 0x80c00
movq %rax, -0x48(%rbp)
leaq 0x2c8d(%rip), %rax      # 0x80d30
movq %rax, -0x40(%rbp)
leaq 0x2d72(%rip), %rax      # 0x80e20
movq %rax, -0x38(%rbp)
leaq 0x2e87(%rip), %rax      # 0x80f40
movq %rax, -0x30(%rbp)
leaq 0x309c(%rip), %rax      # 0x81160
movq %rax, -0x28(%rbp)
leaq 0x31c1(%rip), %rax      # 0x81290
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x140(%rbp), %rsi
callq 0x75fe0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x7e0f2
jmp 0x7e13f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x81410
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x7e10a
jmp 0x7e13f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x817f0
movl $0x9, -0x1a8(%rbp)
movl $0x4, -0x1a0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x1a8(%rbp), %rsi
callq 0x7e4d0
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbp
retq
nopl (%rax,%rax)