// File: /workspace/github_c_makefile_star2_O0/michaelforney[P]cproc/qbe.c
// Function: qbetype
static struct qbetype
qbetype(struct type *t)
{
	static const struct qbetype
		ub = {'w', 'b', ILOADUB, ISTOREB},
		sb = {'w', 'b', ILOADSB, ISTOREB},
		uh = {'w', 'h', ILOADUH, ISTOREH},
		sh = {'w', 'h', ILOADSH, ISTOREH},
		w = {'w', 'w', ILOADW, ISTOREW},
		l = {'l', 'l', ILOADL, ISTOREL},
		s = {'s', 's', ILOADS, ISTORES},
		d = {'d', 'd', ILOADD, ISTORED},
		v = {0};

	if (t == &typevoid)
		return v;
	if (!(t->prop & PROPSCALAR))
		return l;
	switch (t->size) {
	case 1: return t->u.basic.issigned ? sb : ub;
	case 2: return t->u.basic.issigned ? sh : uh;
	case 4: return t->prop & PROPFLOAT ? s : w;
	case 8: return t->prop & PROPFLOAT ? d : l;
	case 16: fatal("long double is not yet supported");
	}
	assert(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x18(%rbp)
leaq 0xc135(%rip), %rax      # 0x21a38
cmpq %rax, -0x18(%rbp)
jne 0x15922
movq 0x6704(%rip), %rax      # 0x1c014
movq %rax, -0xc(%rbp)
movl 0x6702(%rip), %eax      # 0x1c01c
movl %eax, -0x4(%rbp)
jmp 0x15a8c
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
jne 0x1594a
movq 0x66b8(%rip), %rax      # 0x1bff0
movq %rax, -0xc(%rbp)
movl 0x66b6(%rip), %eax      # 0x1bff8
movl %eax, -0x4(%rbp)
jmp 0x15a8c
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
decq %rax
movq %rax, -0x30(%rbp)
subq $0xf, %rax
ja 0x15a6d
movq -0x30(%rbp), %rax
leaq 0x65be(%rip), %rcx      # 0x1bf2c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x15997
movq 0x6638(%rip), %rax      # 0x1bfc0
movq %rax, -0xc(%rbp)
movl 0x6636(%rip), %eax      # 0x1bfc8
movl %eax, -0x4(%rbp)
jmp 0x159ab
movq 0x6616(%rip), %rax      # 0x1bfb4
movq %rax, -0xc(%rbp)
movl 0x6614(%rip), %eax      # 0x1bfbc
movl %eax, -0x4(%rbp)
jmp 0x15a8c
movq -0x18(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x159d0
movq 0x6617(%rip), %rax      # 0x1bfd8
movq %rax, -0xc(%rbp)
movl 0x6615(%rip), %eax      # 0x1bfe0
movl %eax, -0x4(%rbp)
jmp 0x159e4
movq 0x65f5(%rip), %rax      # 0x1bfcc
movq %rax, -0xc(%rbp)
movl 0x65f3(%rip), %eax      # 0x1bfd4
movl %eax, -0x4(%rbp)
jmp 0x15a8c
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x15a0e
movq 0x65fd(%rip), %rax      # 0x1bffc
movq %rax, -0xc(%rbp)
movl 0x65fb(%rip), %eax      # 0x1c004
movl %eax, -0x4(%rbp)
jmp 0x15a22
movq 0x65cf(%rip), %rax      # 0x1bfe4
movq %rax, -0xc(%rbp)
movl 0x65cd(%rip), %eax      # 0x1bfec
movl %eax, -0x4(%rbp)
jmp 0x15a8c
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x15a49
movq 0x65ce(%rip), %rax      # 0x1c008
movq %rax, -0xc(%rbp)
movl 0x65cc(%rip), %eax      # 0x1c010
movl %eax, -0x4(%rbp)
jmp 0x15a5d
movq 0x65a0(%rip), %rax      # 0x1bff0
movq %rax, -0xc(%rbp)
movl 0x659e(%rip), %eax      # 0x1bff8
movl %eax, -0x4(%rbp)
jmp 0x15a8c
leaq 0x6c9c(%rip), %rdi      # 0x1c702
movb $0x0, %al
callq 0x12650
leaq 0x6a7e(%rip), %rdi      # 0x1c4f2
leaq 0x660d(%rip), %rsi      # 0x1c088
movl $0xcb, %edx
leaq 0x6c9c(%rip), %rcx      # 0x1c723
callq 0x30f0
movl -0x4(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0xc(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl -0x20(%rbp), %edx
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)