// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/arch/arm32/arm_dump.c
// Function: prv_dump_vfp_tran_instr
static void prv_dump_vfp_tran_instr(void *user_data, subtilis_arm_op_t *op,
				    subtilis_arm_instr_type_t type,
				    subtilis_vfp_tran_instr_t *instr,
				    subtilis_error_t *err)
{
	const char *dest_reg_type = "S";
	const char *src_reg_type = "S";
	subtilis_arm_reg_t src_reg = instr->src;
	subtilis_arm_reg_t dest_reg = instr->dest;

	switch (type) {
	case SUBTILIS_VFP_INSTR_FTOSIS:
	case SUBTILIS_VFP_INSTR_FTOUIS:
	case SUBTILIS_VFP_INSTR_FTOUIZS:
	case SUBTILIS_VFP_INSTR_FTOSIZS:
	case SUBTILIS_VFP_INSTR_FSITOS:
	case SUBTILIS_VFP_INSTR_FUITOS:
		break;
	case SUBTILIS_VFP_INSTR_FSITOD:
	case SUBTILIS_VFP_INSTR_FUITOD:
		dest_reg_type = "D";
		if (instr->use_dregs)
			src_reg *= 2;
		break;
	case SUBTILIS_VFP_INSTR_FTOSID:
	case SUBTILIS_VFP_INSTR_FTOUID:
	case SUBTILIS_VFP_INSTR_FTOSIZD:
	case SUBTILIS_VFP_INSTR_FTOUIZD:
		src_reg_type = "D";
		if (instr->use_dregs)
			dest_reg *= 2;
		break;
	default:
		subtilis_error_set_assertion_failed(err);
		return;
	}

	printf("\t%s", instr_desc[type]);
	if (instr->ccode != SUBTILIS_ARM_CCODE_AL)
		printf("%s", ccode_desc[instr->ccode]);
	printf(" %s%zu, %s%zu\n", dest_reg_type, dest_reg, src_reg_type,
	       src_reg);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
leaq 0x24438(%rip), %rax     # 0xa9f6a
movq %rax, -0x30(%rbp)
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x4c(%rbp)
subl $0x51, %eax
je 0x85bc8
jmp 0x85b5f
movl -0x4c(%rbp), %eax
addl $-0x52, %eax
subl $0x2, %eax
jb 0x85bc6
jmp 0x85b6c
movl -0x4c(%rbp), %eax
subl $0x54, %eax
je 0x85bea
jmp 0x85b76
movl -0x4c(%rbp), %eax
subl $0x55, %eax
je 0x85bc6
jmp 0x85b80
movl -0x4c(%rbp), %eax
subl $0x56, %eax
je 0x85bea
jmp 0x85b8a
movl -0x4c(%rbp), %eax
subl $0x57, %eax
je 0x85bc6
jmp 0x85b94
movl -0x4c(%rbp), %eax
subl $0x58, %eax
je 0x85bea
jmp 0x85b9e
movl -0x4c(%rbp), %eax
subl $0x59, %eax
je 0x85bc6
jmp 0x85ba8
movl -0x4c(%rbp), %eax
subl $0x5a, %eax
je 0x85bea
jmp 0x85bb2
movl -0x4c(%rbp), %eax
subl $0x5b, %eax
je 0x85bc8
jmp 0x85bbc
movl -0x4c(%rbp), %eax
subl $0x5c, %eax
jne 0x85c0c
jmp 0x85bc6
jmp 0x85c28
leaq 0x24579(%rip), %rax     # 0xaa148
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x4(%rax)
je 0x85be8
movq -0x40(%rbp), %rax
shlq %rax
movq %rax, -0x40(%rbp)
jmp 0x85c28
leaq 0x24557(%rip), %rax     # 0xaa148
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x4(%rax)
je 0x85c0a
movq -0x48(%rbp), %rax
shlq %rax
movq %rax, -0x48(%rbp)
jmp 0x85c28
movq -0x28(%rbp), %rdi
movl $0xf, %esi
leaq 0x275ec(%rip), %rdx     # 0xad208
movl $0x319, %ecx            # imm = 0x319
callq 0x158e0
jmp 0x85c8e
movl -0x14(%rbp), %eax
movl %eax, %ecx
leaq 0x49b2c(%rip), %rax     # 0xcf760
movq (%rax,%rcx,8), %rsi
leaq 0x25257(%rip), %rdi     # 0xaae96
movb $0x0, %al
callq 0x120f0
movq -0x20(%rbp), %rax
cmpl $0xe, (%rax)
je 0x85c70
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0x4a062(%rip), %rax     # 0xcfcc0
movq (%rax,%rcx,8), %rsi
leaq 0x2522e(%rip), %rdi     # 0xaae97
movb $0x0, %al
callq 0x120f0
movq -0x30(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %r8
leaq 0x27adf(%rip), %rdi     # 0xad766
movb $0x0, %al
callq 0x120f0
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)