// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/6/isel.c
// Function: retrievearg
static void
retrievearg(Isel *s, Node *argn, int vararg, size_t *nfloats, size_t *nints, size_t *argoff)
{
	Loc *l;

	if (stacknode(argn)) {
		htput(s->stkoff, argn, itop(-(*argoff + 2*Ptrsz)));
		*argoff += size(argn);
	} else if (!vararg && isfloatmode(mode(argn)) && *nfloats < Nfloatregargs) {
		l = loc(s, argn);
		movearg(s, l, PassInSSE, forcefltmode(mode(argn)), nfloats, nints, argoff);
		htput(s->reglocs, argn, l);
	} else if (!vararg && isintmode(mode(argn)) && *nints < Nintregargs) {
		l = loc(s, argn);
		movearg(s, l, PassInInt, forceintmode(mode(argn)), nfloats, nints, argoff);
		htput(s->reglocs, argn, l);
	} else if (tybase(decltype(argn))->type != Tyvoid) {
		/* varargs go on the stack */
		htput(s->stkoff, argn, itop(-(*argoff + 2*Ptrsz)));
		*argoff += size(argn);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x167b0
cmpl $0x0, %eax
je 0xde86
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
addq $0x10, %rax
xorl %ecx, %ecx
movl %ecx, %edi
subq %rax, %rdi
callq 0xfd20
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq %rax, %rdx
callq 0x49100
movq -0x10(%rbp), %rdi
callq 0x1c480
movq %rax, %rcx
movq -0x30(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0xe020
cmpl $0x0, -0x14(%rbp)
jne 0xdf1e
movq -0x10(%rbp), %rdi
callq 0xc110
movl %eax, %edi
callq 0xfd70
cmpl $0x0, %eax
je 0xdf1e
movq -0x20(%rbp), %rax
cmpq $0x8, (%rax)
jae 0xdf1e
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xd570
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0xc110
movl %eax, %edi
callq 0xfc30
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movl %eax, %ecx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x30(%rbp), %rax
movl $0x1, %edx
movq %rax, (%rsp)
callq 0xe030
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
callq 0x49100
jmp 0xe01e
cmpl $0x0, -0x14(%rbp)
jne 0xdfb3
movq -0x10(%rbp), %rdi
callq 0xc110
movl %eax, %edi
callq 0xfd30
cmpl $0x0, %eax
je 0xdfb3
movq -0x28(%rbp), %rax
cmpq $0x6, (%rax)
jae 0xdfb3
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xd570
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
callq 0xc110
movl %eax, %edi
callq 0xfca0
movq -0x68(%rbp), %rdi
movq -0x60(%rbp), %rsi
movl %eax, %ecx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x30(%rbp), %rax
movl $0x2, %edx
movq %rax, (%rsp)
callq 0xe030
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
callq 0x49100
jmp 0xe01c
movq -0x10(%rbp), %rdi
callq 0x30260
movq %rax, %rdi
callq 0x36a30
cmpl $0x1, (%rax)
je 0xe01a
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
addq $0x10, %rax
xorl %ecx, %ecx
movl %ecx, %edi
subq %rax, %rdi
callq 0xfd20
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rsi
movq %rax, %rdx
callq 0x49100
movq -0x10(%rbp), %rdi
callq 0x1c480
movq %rax, %rcx
movq -0x30(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0xe01c
jmp 0xe01e
jmp 0xe020
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)