// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/common/ir.c
// Function: prv_dump_instr
void prv_dump_instr(subtilis_ir_inst_t *instr)
{
	if (op_desc[instr->type].cls == SUBTILIS_OP_CLASS_NONE) {
		printf("\t%s", op_desc[instr->type].name);
		return;
	}

	printf("\t%s ", op_desc[instr->type].name);
	switch (op_desc[instr->type].cls) {
	case SUBTILIS_OP_CLASS_REG_REG_REG_REG:
		printf("r%zu, r%zu, r%zu, r%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg,
		       instr->operands[3].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_REG_REG:
		printf("r%zu, r%zu, r%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg);
		break;
	case SUBTILIS_OP_CLASS_FREG_FREG_FREG:
		printf("f%zu, f%zu, f%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_REG_I32:
		printf("r%zu, r%zu, #%" PRIi32, instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].integer);
		break;
	case SUBTILIS_OP_CLASS_FREG_REG_I32:
		printf("f%zu, r%zu, #%" PRIi32, instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].integer);
		break;
	case SUBTILIS_OP_CLASS_FREG_FREG_REAL:
		printf("f%zu, f%zu, #%lf", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].real);
		break;
	case SUBTILIS_OP_CLASS_REG_LABEL_LABEL:
		printf("r%zu, label_%zu, label_%zu", instr->operands[0].reg,
		       instr->operands[1].label, instr->operands[2].label);
		break;
	case SUBTILIS_OP_CLASS_REG_FREG_FREG:
		printf("r%zu, f%zu, f%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_FREG_REAL:
		printf("r%zu, f%zu, #%lf", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].real);
		break;
	case SUBTILIS_OP_CLASS_REG_FREG_REG:
		printf("r%zu, f%zu, r%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_REG_FREG:
		printf("r%zu, r%zu, f%zu", instr->operands[0].reg,
		       instr->operands[1].reg, instr->operands[2].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_I32:
		printf("r%zu, #%" PRIi32, instr->operands[0].reg,
		       instr->operands[1].integer);
		break;
	case SUBTILIS_OP_CLASS_FREG_REAL:
		printf("f%zu, #%lf", instr->operands[0].reg,
		       instr->operands[1].real);
		break;
	case SUBTILIS_OP_CLASS_REG_REG:
		printf("r%zu, r%zu", instr->operands[0].reg,
		       instr->operands[1].reg);
		break;
	case SUBTILIS_OP_CLASS_FREG_FREG:
		printf("f%zu, f%zu", instr->operands[0].reg,
		       instr->operands[1].reg);
		break;
	case SUBTILIS_OP_CLASS_REG_FREG:
		printf("r%zu, f%zu", instr->operands[0].reg,
		       instr->operands[1].reg);
		break;
	case SUBTILIS_OP_CLASS_FREG_REG:
		printf("f%zu, r%zu", instr->operands[0].reg,
		       instr->operands[1].reg);
		break;
	case SUBTILIS_OP_CLASS_REG:
		printf("r%zu", instr->operands[0].reg);
		break;
	case SUBTILIS_OP_CLASS_FREG:
		printf("f%zu", instr->operands[0].reg);
		break;
	case SUBTILIS_OP_CLASS_I32:
		printf("%" PRIi32, instr->operands[0].integer);
		break;
	case SUBTILIS_OP_CLASS_REAL:
		printf("%lf", instr->operands[0].real);
		break;
	case SUBTILIS_OP_CLASS_LABEL:
		printf("r%zu", instr->operands[0].reg);
		break;
	case SUBTILIS_OP_CLASS_NONE:
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0x91845(%rip), %rax     # 0xcac90
shlq $0x4, %rcx
addq %rcx, %rax
cmpl $0x16, 0x8(%rax)
jne 0x39484
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0x91829(%rip), %rax     # 0xcac90
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
leaq 0x71a1e(%rip), %rdi     # 0xaae96
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movl (%rax), %eax
shlq $0x4, %rax
leaq 0x917fb(%rip), %rcx     # 0xcac90
movq %rcx, -0x18(%rbp)
movq (%rax,%rcx), %rsi
leaq 0x719f6(%rip), %rdi     # 0xaae9a
xorl %eax, %eax
callq 0x120f0
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movl (%rax), %eax
shlq $0x4, %rax
movl 0x8(%rax,%rcx), %eax
movq %rax, -0x10(%rbp)
subq $0x16, %rax
ja 0x39809
movq -0x10(%rbp), %rax
leaq 0x716ba(%rip), %rcx     # 0xaab90
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x8(%rbp), %rax
movq 0x20(%rax), %r8
leaq 0x71999(%rip), %rdi     # 0xaae9f
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x71974(%rip), %rdi     # 0xaaea5
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x7195a(%rip), %rdi     # 0xaaeb6
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x18(%rax), %ecx
leaq 0x71941(%rip), %rdi     # 0xaaec7
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movl 0x18(%rax), %ecx
leaq 0x71927(%rip), %rdi     # 0xaaed7
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
leaq 0x7190b(%rip), %rdi     # 0xaaee7
movb $0x1, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x718f1(%rip), %rdi     # 0xaaef8
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x718e1(%rip), %rdi     # 0xaaf13
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
leaq 0x718c6(%rip), %rdi     # 0xaaf24
movb $0x1, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x718ac(%rip), %rdi     # 0xaaf35
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x71892(%rip), %rdi     # 0xaaf46
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movl 0x10(%rax), %edx
leaq 0x71807(%rip), %rdi     # 0xaaedd
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq 0x717f3(%rip), %rdi     # 0xaaeed
movb $0x1, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x7178e(%rip), %rdi     # 0xaaeab
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x7177c(%rip), %rdi     # 0xaaebc
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x717e9(%rip), %rdi     # 0xaaf4c
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x717b5(%rip), %rdi     # 0xaaf3b
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x717a3(%rip), %rdi     # 0xaaf41
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x7170c(%rip), %rdi     # 0xaaec2
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x71717(%rip), %rdi     # 0xaaee4
movb $0x0, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq 0x7170e(%rip), %rdi     # 0xaaef4
movb $0x1, %al
callq 0x120f0
jmp 0x39809
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x71743(%rip), %rdi     # 0xaaf41
movb $0x0, %al
callq 0x120f0
jmp 0x39809
jmp 0x39809
addq $0x20, %rsp
popq %rbp
retq
nop