// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/arm_dump.c
// Function: prv_dump_stran_misc_instr
static void prv_dump_stran_misc_instr(void *user_data, subtilis_arm_op_t *op,
				      subtilis_arm_instr_type_t type,
				      subtilis_arm_stran_misc_instr_t *instr,
				      subtilis_error_t *err)
{
	const char *itype = "";
	const char *sub = instr->subtract ? "-" : "";

	printf("\t%s", instr_desc[type]);
	if (instr->ccode != SUBTILIS_ARM_CCODE_AL)
		printf("%s", ccode_desc[instr->ccode]);
	switch (instr->type) {
	case SUBTILIS_ARM_STRAN_MISC_SB:
		itype = "SB";
		break;
	case SUBTILIS_ARM_STRAN_MISC_SH:
		itype = "SH";
		break;
	case SUBTILIS_ARM_STRAN_MISC_H:
		itype = "H";
		break;
	case SUBTILIS_ARM_STRAN_MISC_D:
		itype = "D";
		break;
	}
	printf("%s R%zu", itype, instr->dest);
	if (instr->pre_indexed) {
		printf(", [R%zu, %s", instr->base, sub);
		if (instr->reg_offset)
			printf("R%zu", instr->offset.reg);
		else
			printf("%d", instr->offset.imm);
		printf("]");
		if (instr->write_back)
			printf("!");
	} else {
		printf(", [R%zu], %s", instr->base, sub);
		if (instr->reg_offset)
			printf("R%zu", instr->offset.reg);
		else
			printf("%d", instr->offset.imm);
	}
	printf("\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
leaq 0x24e34(%rip), %rax     # 0xab276
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movb 0x2a(%rax), %dl
leaq 0x24e22(%rip), %rax     # 0xab276
leaq 0x24081(%rip), %rcx     # 0xaa4dc
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x38(%rbp)
movl -0x14(%rbp), %eax
movl %eax, %ecx
leaq 0x492ee(%rip), %rax     # 0xcf760
movq (%rax,%rcx,8), %rsi
leaq 0x24a19(%rip), %rdi     # 0xaae96
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
cmpl $0xe, 0x4(%rax)
je 0x864b0
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %ecx
leaq 0x49822(%rip), %rax     # 0xcfcc0
movq (%rax,%rcx,8), %rsi
leaq 0x249ee(%rip), %rdi     # 0xaae97
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x40(%rbp)
subq $0x3, %rax
ja 0x86506
movq -0x40(%rbp), %rax
leaq 0x269cd(%rip), %rcx     # 0xace98
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x26d56(%rip), %rax     # 0xad231
movq %rax, -0x30(%rbp)
jmp 0x86506
leaq 0x272c7(%rip), %rax     # 0xad7af
movq %rax, -0x30(%rbp)
jmp 0x86506
leaq 0x272bb(%rip), %rax     # 0xad7b0
movq %rax, -0x30(%rbp)
jmp 0x86506
leaq 0x23c46(%rip), %rax     # 0xaa148
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x27084(%rip), %rdi     # 0xad59d
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
testb $0x1, 0x28(%rax)
je 0x865a4
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x38(%rbp), %rdx
leaq 0x2709e(%rip), %rdi     # 0xad5db
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
testb $0x1, 0x18(%rax)
je 0x86566
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rsi
leaq 0x2725c(%rip), %rdi     # 0xad7b9
movb $0x0, %al
callq 0x120f0
jmp 0x8657c
movq -0x20(%rbp), %rax
movsbl 0x20(%rax), %esi
leaq 0x240e6(%rip), %rdi     # 0xaa65b
movb $0x0, %al
callq 0x120f0
leaq 0x27cc8(%rip), %rdi     # 0xae24b
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
testb $0x1, 0x29(%rax)
je 0x865a2
leaq 0x23f50(%rip), %rdi     # 0xaa4eb
movb $0x0, %al
callq 0x120f0
jmp 0x865f8
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x38(%rbp), %rdx
leaq 0x27030(%rip), %rdi     # 0xad5e7
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
testb $0x1, 0x18(%rax)
je 0x865e0
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rsi
leaq 0x271e2(%rip), %rdi     # 0xad7b9
movb $0x0, %al
callq 0x120f0
jmp 0x865f6
movq -0x20(%rbp), %rax
movsbl 0x20(%rax), %esi
leaq 0x2406c(%rip), %rdi     # 0xaa65b
movb $0x0, %al
callq 0x120f0
jmp 0x865f8
leaq 0x24874(%rip), %rdi     # 0xaae73
movb $0x0, %al
callq 0x120f0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)