// File: /workspace/github_c_makefile_star2_O0/michaelforney[P]cproc/decl.c
// Function: tagspec
static struct type *
tagspec(struct scope *s)
{
	static struct type *const inttypes[][2] = {
		{&typeuint, &typeint},
		{&typeulong, &typelong},
		{&typeullong, &typellong},
	};
	struct type *t, *et;
	char *tag, *name;
	enum typekind kind;
	struct decl *d, *enumconsts;
	struct expr *e;
	struct attr a;
	enum attrkind allowedattr;
	struct structbuilder b;
	unsigned long long value, max, min;
	bool sign;
	int i;

	allowedattr = 0;
	switch (tok.kind) {
	case TSTRUCT: kind = TYPESTRUCT, allowedattr |= ATTRPACKED; break;
	case TUNION:  kind = TYPEUNION; break;
	case TENUM:   kind = TYPEENUM; break;
	default: fatal("internal error: unknown tag kind");
	}
	next();
	a.kind = 0;
	attr(&a, allowedattr);
	gnuattr(&a, allowedattr);
	tag = NULL;
	t = NULL;
	et = NULL;
	if (tok.kind == TIDENT) {
		tag = tok.lit;
		next();
	}
	if (kind == TYPEENUM && consume(TCOLON)) {
		et = declspecs(s, NULL, NULL, NULL).type;
		if (!et)
			error(&tok.loc, "no type in enum type specifier");
	}
	if (tag)
		t = scopegettag(s, tag, tok.kind != TLBRACE && tok.kind != TSEMICOLON);
	if (t) {
		if (t->kind != kind)
			error(&tok.loc, "redeclaration of tag '%s' with different kind", tag);
	} else {
		if (kind == TYPEENUM) {
			t = mktype(kind, PROPSCALAR|PROPARITH|PROPREAL|PROPINT);
			t->base = et;
		} else {
			t = mktype(kind, 0);
			t->size = 0;
			t->align = 0;
			t->u.structunion.tag = tag;
			t->u.structunion.members = NULL;
		}
		t->incomplete = true;
		if (tag)
			scopeputtag(s, tag, t);
	}
	if (tok.kind != TLBRACE)
		return t;
	if (!t->incomplete)
		error(&tok.loc, "redefinition of tag '%s'", tag);
	next();
	switch (t->kind) {
	case TYPESTRUCT:
	case TYPEUNION:
		b.type = t;
		b.last = &t->u.structunion.members;
		b.bits = 0;
		b.pack = a.kind & ATTRPACKED;
		do structdecl(s, &b);
		while (tok.kind != TRBRACE);
		if (!t->u.structunion.members)
			error(&tok.loc, "struct/union has no members");
		next();
		if (!b.pack)
			t->size = ALIGNUP(t->size, t->align);
		break;
	case TYPEENUM:
		enumconsts = NULL;
		if (et) {
			t->size = t->base->size;
			t->align = t->base->align;
			t->u.basic.issigned = t->base->u.basic.issigned;
			t->incomplete = false;
			et = t;
		} else {
			et = &typeint;
		}
		max = 0;
		min = 0;
		for (value = 0; tok.kind == TIDENT; ++value) {
			name = tok.lit;
			next();
			attr(NULL, 0);
			if (consume(TASSIGN)) {
				e = eval(condexpr(s));
				if (e->kind != EXPRCONST || !(e->type->prop & PROPINT))
					error(&tok.loc, "expected integer constant expression");
				value = e->u.constant.u;
				if (!t->base)
					et = typehasint(&typeint, value, e->type->u.basic.issigned) ? &typeint : e->type;
				else if (!typehasint(et, value, e->type->u.basic.issigned))
					goto invalid;
			} else if (value == 0 && !et->u.basic.issigned || value == 1ull << 63 && et->u.basic.issigned) {
				error(&tok.loc, "no %ssigned integer type can represent enumerator value", et->u.basic.issigned ? "" : "un");
			} else if (!typehasint(et, value, et->u.basic.issigned)) {
				if (t->base) {
				invalid:
					/* fixed underlying type */
					error(&tok.loc, "enumerator '%s' value cannot be represented in underlying type", name);
				}
				sign = et->u.basic.issigned;
				for (i = 0; i < LEN(inttypes); ++i) {
					et = inttypes[i][sign];
					if (typehasint(et, value, sign))
						break;
				}
				assert(i < LEN(inttypes));
			}
			d = mkdecl(name, DECLCONST, et, QUALNONE, LINKNONE);
			d->u.enumconst = value;
			d->value = mkintconst(value);
			d->next = enumconsts;
			enumconsts = d;
			if (et->u.basic.issigned && value >= 1ull << 63) {
				if (-value > min)
					min = -value;
			} else if (value > max) {
				max = value;
			}
			scopeputdecl(s, d);
			if (!consume(TCOMMA))
				break;
		}
		expect(TRBRACE, "to close enum specifier");
		if (!t->base) {
			if (min <= 0x80000000 && max <= 0x7fffffff) {
				t->base = min ? &typeint : &typeuint;
			} else {
				sign = min > 0;
				for (i = 0; i < LEN(inttypes); ++i) {
					et = inttypes[i][sign];
					if (typehasint(et, max, false) && typehasint(et, -min, true))
						break;
				}
				if (i == LEN(inttypes))
					error(&tok.loc, "no integer type can represent all enumerator values");
				t->base = et;
				for (d = enumconsts; d; d = d->next)
					d->type = t;
			}
			t->size = t->base->size;
			t->align = t->base->align;
			t->u.basic.issigned = t->base->u.basic.issigned;
		}
	}
	t->incomplete = false;

	return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x5c(%rbp)
leaq 0x1c96b(%rip), %rax     # 0x221a8
movl (%rax), %eax
movl %eax, -0xb4(%rbp)
subl $0x16, %eax
je 0x5881
jmp 0x584c
movl -0xb4(%rbp), %eax
subl $0x29, %eax
je 0x5866
jmp 0x5859
movl -0xb4(%rbp), %eax
subl $0x30, %eax
je 0x5878
jmp 0x588a
movl $0xf, -0x34(%rbp)
movl -0x5c(%rbp), %eax
orl $0x8, %eax
movl %eax, -0x5c(%rbp)
jmp 0x5898
movl $0x10, -0x34(%rbp)
jmp 0x5898
movl $0x6, -0x34(%rbp)
jmp 0x5898
leaq 0x1308b(%rip), %rdi     # 0x1891c
movb $0x0, %al
callq 0x12650
callq 0xd540
movl $0x0, -0x58(%rbp)
movl -0x5c(%rbp), %esi
leaq -0x58(%rbp), %rdi
callq 0x3360
movl -0x5c(%rbp), %esi
leaq -0x58(%rbp), %rdi
callq 0x3450
movq $0x0, -0x28(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
leaq 0x1c8cd(%rip), %rax     # 0x221a8
cmpl $0x4, (%rax)
jne 0x58f4
leaq 0x1c8c1(%rip), %rax     # 0x221a8
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
callq 0xd540
cmpl $0x6, -0x34(%rbp)
jne 0x5952
movl $0x5f, %edi
callq 0xd910
testb $0x1, %al
jne 0x590a
jmp 0x5952
movq -0x10(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movq %r8, %rdx
movq %r8, %rcx
callq 0x3a30
movq -0xb0(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x5950
leaq 0x1c86a(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12ff4(%rip), %rsi     # 0x1893d
movb $0x0, %al
callq 0x11190
jmp 0x5952
cmpq $0x0, -0x28(%rbp)
je 0x59b9
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0xc0(%rbp)
xorl %eax, %eax
leaq 0x1c830(%rip), %rcx     # 0x221a8
cmpl $0x44, (%rcx)
movb %al, -0xb5(%rbp)
je 0x5996
leaq 0x1c81e(%rip), %rax     # 0x221a8
cmpl $0x61, (%rax)
setne %al
movb %al, -0xb5(%rbp)
movq -0xc0(%rbp), %rsi
movq -0xc8(%rbp), %rdi
movb -0xb5(%rbp), %al
movzbl %al, %edx
andl $0x1, %edx
callq 0xffa0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x59ed
movq -0x18(%rbp), %rax
movl (%rax), %eax
cmpl -0x34(%rbp), %eax
je 0x59e8
movq -0x28(%rbp), %rdx
leaq 0x1c7d2(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12f7b(%rip), %rsi     # 0x1895c
movb $0x0, %al
callq 0x11190
jmp 0x5a71
cmpl $0x6, -0x34(%rbp)
jne 0x5a12
movl -0x34(%rbp), %edi
movl $0x1e, %esi
callq 0x11700
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x5a4f
movl -0x34(%rbp), %edi
xorl %esi, %esi
callq 0x11700
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x48(%rax)
movq -0x18(%rbp), %rax
movb $0x1, 0x3c(%rax)
cmpq $0x0, -0x28(%rbp)
je 0x5a6f
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x10040
jmp 0x5a71
leaq 0x1c730(%rip), %rax     # 0x221a8
cmpl $0x44, (%rax)
je 0x5a8a
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x611b
movq -0x18(%rbp), %rax
testb $0x1, 0x3c(%rax)
jne 0x5ab1
movq -0x28(%rbp), %rdx
leaq 0x1c709(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12ee0(%rip), %rsi     # 0x1898a
movb $0x0, %al
callq 0x11190
callq 0xd540
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xcc(%rbp)
subl $0x6, %eax
je 0x5b8b
jmp 0x5acd
movl -0xcc(%rbp), %eax
addl $-0xf, %eax
subl $0x1, %eax
ja 0x610b
jmp 0x5ae1
movq -0x18(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rax
addq $0x40, %rax
addq $0x8, %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x58(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x64(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x6130
leaq 0x1c683(%rip), %rax     # 0x221a8
cmpl $0x45, (%rax)
jne 0x5b11
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x5b4e
leaq 0x1c66c(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12e5c(%rip), %rsi     # 0x189a3
movb $0x0, %al
callq 0x11190
callq 0xd540
testb $0x1, -0x64(%rbp)
jne 0x5b86
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x18(%rbp), %rax
movslq 0x8(%rax), %rax
addq %rax, %rcx
subq $0x1, %rcx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
subl 0x8(%rdx), %eax
cltq
andq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x610b
movq $0x0, -0x48(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x5be7
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x10(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movl 0x8(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movb 0x40(%rax), %cl
movq -0x18(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x40(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x3c(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x5bf2
leaq 0x1c0b2(%rip), %rax     # 0x21ca0
movq %rax, -0x20(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x90(%rbp)
movq $0x0, -0x80(%rbp)
leaq 0x1c591(%rip), %rax     # 0x221a8
cmpl $0x4, (%rax)
jne 0x5f6a
leaq 0x1c581(%rip), %rax     # 0x221a8
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
callq 0xd540
xorl %eax, %eax
movl %eax, %edi
xorl %esi, %esi
callq 0x3360
movl $0x63, %edi
callq 0xd910
testb $0x1, %al
jne 0x5c52
jmp 0x5d32
movq -0x10(%rbp), %rdi
callq 0x8b40
movq %rax, %rdi
callq 0x7010
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x5c83
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x4(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x5c9c
leaq 0x1c51e(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12d2a(%rip), %rsi     # 0x189bf
movb $0x0, %al
callq 0x11190
movq -0x50(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x5d05
movq -0x80(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movb 0x40(%rax), %al
leaq 0x1bfd7(%rip), %rdi     # 0x21ca0
andb $0x1, %al
movzbl %al, %edx
callq 0x12070
testb $0x1, %al
jne 0x5cd9
jmp 0x5ce9
leaq 0x1bfc0(%rip), %rax     # 0x21ca0
movq %rax, -0xd8(%rbp)
jmp 0x5cf8
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x5d2d
movq -0x20(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x12070
testb $0x1, %al
jne 0x5d2b
jmp 0x5dc5
jmp 0x5d2d
jmp 0x5e98
cmpq $0x0, -0x80(%rbp)
jne 0x5d43
movq -0x20(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x5d5d
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
cmpq %rax, -0x80(%rbp)
jne 0x5d97
movq -0x20(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x5d97
movq -0x20(%rbp), %rax
movb 0x40(%rax), %cl
leaq 0x12cb1(%rip), %rdx     # 0x18a1c
leaq 0x14d81(%rip), %rax     # 0x1aaf3
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1c428(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12c59(%rip), %rsi     # 0x189e4
movb $0x0, %al
callq 0x11190
jmp 0x5e96
movq -0x20(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x20(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x12070
testb $0x1, %al
jne 0x5e94
movq -0x18(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x5de2
jmp 0x5dc5
movq -0x30(%rbp), %rdx
leaq 0x1c3d8(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12c44(%rip), %rsi     # 0x18a1f
movb $0x0, %al
callq 0x11190
movq -0x20(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movb %al, -0x91(%rbp)
movl $0x0, -0x98(%rbp)
movslq -0x98(%rbp), %rax
cmpq $0x3, %rax
jae 0x5e64
movslq -0x98(%rbp), %rcx
leaq 0x1a80a(%rip), %rax     # 0x20620
shlq $0x4, %rcx
addq %rcx, %rax
movb -0x91(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x80(%rbp), %rsi
movb -0x91(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x12070
testb $0x1, %al
jne 0x5e4f
jmp 0x5e51
jmp 0x5e64
jmp 0x5e53
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x5dfb
movslq -0x98(%rbp), %rax
cmpq $0x3, %rax
jae 0x5e73
jmp 0x5e92
leaq 0x12be4(%rip), %rdi     # 0x18a5e
leaq 0x127d6(%rip), %rsi     # 0x18657
movl $0x112, %edx            # imm = 0x112
leaq 0x12be3(%rip), %rcx     # 0x18a70
callq 0x30f0
jmp 0x5e94
jmp 0x5e96
jmp 0x5e98
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rdx
movl $0x3, %esi
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x38c0
movq %rax, -0x40(%rbp)
movq -0x80(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x80(%rbp), %rdi
callq 0x12cc0
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x40(%rax)
je 0x5f20
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
cmpq %rax, -0x80(%rbp)
jb 0x5f20
xorl %eax, %eax
subq -0x80(%rbp), %rax
cmpq -0x90(%rbp), %rax
jbe 0x5f1e
xorl %eax, %eax
subq -0x80(%rbp), %rax
movq %rax, -0x90(%rbp)
jmp 0x5f3a
movq -0x80(%rbp), %rax
cmpq -0x88(%rbp), %rax
jbe 0x5f38
movq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x5f3a
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0xfd90
movl $0x6e, %edi
callq 0xd910
testb $0x1, %al
jne 0x5f57
jmp 0x5f6a
jmp 0x5f59
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x5c10
movl $0x45, %edi
leaq 0x12b1f(%rip), %rsi     # 0x18a95
callq 0xd8d0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x6109
movl $0x80000000, %eax       # imm = 0x80000000
cmpq %rax, -0x90(%rbp)
ja 0x5fcf
cmpq $0x7fffffff, -0x88(%rbp) # imm = 0x7FFFFFFF
ja 0x5fcf
movq -0x90(%rbp), %rdx
leaq 0x1bd45(%rip), %rcx     # 0x21cf8
leaq 0x1bce6(%rip), %rax     # 0x21ca0
cmpq $0x0, %rdx
cmovneq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x60ce
cmpq $0x0, -0x90(%rbp)
seta %al
andb $0x1, %al
movb %al, -0x91(%rbp)
movl $0x0, -0x98(%rbp)
movslq -0x98(%rbp), %rax
cmpq $0x3, %rax
jae 0x6071
movslq -0x98(%rbp), %rcx
leaq 0x1a619(%rip), %rax     # 0x20620
shlq $0x4, %rcx
addq %rcx, %rax
movb -0x91(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
xorl %edx, %edx
callq 0x12070
testb $0x1, %al
jne 0x603a
jmp 0x605b
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0x90(%rbp), %rsi
movl $0x1, %edx
callq 0x12070
testb $0x1, %al
jne 0x6059
jmp 0x605b
jmp 0x6071
jmp 0x605d
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x5fec
movslq -0x98(%rbp), %rax
cmpq $0x3, %rax
jne 0x6097
leaq 0x1c123(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0x12a1d(%rip), %rsi     # 0x18aad
movb $0x0, %al
callq 0x11190
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x60cc
movq -0x18(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x60ab
jmp 0x60ce
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x10(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movl 0x8(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movb 0x40(%rax), %cl
movq -0x18(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x40(%rax)
jmp 0x610b
movq -0x18(%rbp), %rax
movb $0x0, 0x3c(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
nopl (%rax,%rax)