// File: /workspace/github_c_makefile_star2_O0/Oric4ever[P]lcc65/6502/build/../src/init.c
// Function: initstruct
static int initstruct(int len, Type ty, int lev) {
	int a, n = 0;
	Field p = ty->u.sym->u.s.flist;

	do {
		if (p->offset > n) {
			genspace(p->offset - n, current);
			n += p->offset - n;
		}
		if (p->to) {
			Field q = p;
			while (q->link && q->link->offset == p->offset)
				q = q->link;
			n += initfields(p, q->link);
			p = q;
		} else {
			initializer(p->type, lev);
			n += p->type->size;
		}
		if (p->link) {
			p = p->link;
			a = p->type->align;
		} else
			a = ty->align;
		if (a && n%a) {
			genspace(a - n%a, current);
			n = roundup(n, a);
		}
		if ((len > 0 && n >= len) || t != ',')
			break;
		t = gettok();
	} while (t != '}');
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl $0x0, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x58(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
cmpl -0x1c(%rbp), %eax
jle 0x13a9b
movq -0x28(%rbp), %rax
movl 0x10(%rax), %edi
subl -0x1c(%rbp), %edi
movq 0x27fc2(%rip), %rsi     # 0x3ba48
callq 0x13f70
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
subl -0x1c(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x28(%rbp), %rax
cmpw $0x0, 0x16(%rax)
je 0x13b0e
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x31(%rbp)
je 0x13ad6
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x10(%rax), %eax
movq -0x28(%rbp), %rcx
cmpl 0x10(%rcx), %eax
sete %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x13adf
jmp 0x13aed
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x13aae
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x14220
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x13b2f
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x14(%rbp), %esi
callq 0x12fe0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x13b57
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movswl 0x4(%rax), %eax
movl %eax, -0x18(%rbp)
jmp 0x13b62
movq -0x10(%rbp), %rax
movswl 0x4(%rax), %eax
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x18(%rbp)
je 0x13ba5
movl -0x1c(%rbp), %eax
cltd
idivl -0x18(%rbp)
cmpl $0x0, %edx
je 0x13ba5
movl -0x18(%rbp), %edi
movl -0x1c(%rbp), %eax
cltd
idivl -0x18(%rbp)
subl %edx, %edi
movq 0x27ec1(%rip), %rsi     # 0x3ba48
callq 0x13f70
movl -0x1c(%rbp), %eax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
addl %ecx, %eax
movl -0x18(%rbp), %ecx
subl $0x1, %ecx
xorl $-0x1, %ecx
andl %ecx, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x4(%rbp)
jle 0x13bb3
movl -0x1c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x13bbf
leaq 0x29fc6(%rip), %rax     # 0x3db80
cmpl $0x2c, (%rax)
je 0x13bc1
jmp 0x13be1
callq 0x15170
movl %eax, %ecx
leaq 0x29fb1(%rip), %rax     # 0x3db80
movl %ecx, (%rax)
leaq 0x29fa8(%rip), %rax     # 0x3db80
cmpl $0x7d, (%rax)
jne 0x13a69
movl -0x1c(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)