// File: /workspace/github_c_makefile_star2_O0/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_external_elabzeexternalzedefzx
static uint64_t mw_mirth_external_elabzeexternalzedefzx (struct mirth_mirth_zaMirth* in_zaMirth_1, struct std_maybe_Maybe_1 in_Maybe_2, uint64_t in_Token_3, struct std_maybe_Maybe_1 in_Maybe_4, uint64_t in_Token_5, struct mirth_mirth_zaMirth* *out_zaMirth_6) {
	struct mirth_mirth_zaMirth* v8;
	uint64_t v9;
	uint64_t v10;
	INT v11;
	struct mirth_mirth_PropState_1 v12;
	mw_mirth_elab_elabzedefzehead(in_zaMirth_1, in_Token_3, &v8, &v9, &v10, &v11, &v12);
	struct mirth_mirth_zaMirth* branch_zaMirth_13;
	struct std_maybe_Maybe_1 branch_Maybe_14;
	switch ((in_Maybe_4).tag) {
		case std_maybe_Maybe_1_Some: {
			VAL v15 = mtp_std_maybe_Maybe_1_Some(in_Maybe_4);
			struct mirth_mirth_zaMirth* v16;
			struct std_maybe_Maybe_1 v17 = mw_mirth_token_Token_namezy(v8, V_mirth_token_Token(v15), &v16);
			branch_Maybe_14 = v17;
			branch_zaMirth_13 = v16;
		} break;
		case std_maybe_Maybe_1_None: {
			struct std_maybe_Maybe_1 v18 = { .tag=std_maybe_Maybe_1_None };
			branch_Maybe_14 = v18;
			branch_zaMirth_13 = v8;
		} break;
		default: {
			do_panic(str_make("unexpected fallthrough in match\n", 32));
		}
	}
	VAL branch_zux1_19;
	VAL branch_zux1_20;
	switch ((branch_Maybe_14).tag) {
		case std_maybe_Maybe_1_Some: {
			VAL v21 = mtp_std_maybe_Maybe_1_Some(branch_Maybe_14);
			branch_zux1_20 = v21;
			branch_zux1_19 = MK_mirth_name_Name(v10);
		} break;
		case std_maybe_Maybe_1_None: {
			branch_zux1_20 = MK_mirth_name_Name(v10);
			branch_zux1_19 = MK_mirth_name_Name(v10);
		} break;
		default: {
			do_panic(str_make("unexpected fallthrough in match\n", 32));
		}
	}
	struct mirth_mirth_zaMirth* v22;
	STR* v23 = mw_mirth_name_Name_zgStr(branch_zaMirth_13, V_mirth_name_Name(branch_zux1_20), &v22);
	INT v24 = v11;
	struct mirth_mirth_zaMirth* v25;
	uint64_t v26 = mw_mirth_external_External_Makezx(v22, in_Maybe_2, V_mirth_name_Name(branch_zux1_19), v24, v23, v9, in_Token_5, &v25);
	struct mirth_mirth_PropLabel v27 = mtw_mirth_mirth_PropLabel_ExternalQName(v26);
	struct mirth_mirth_Prop_1* v28 = mtw_mirth_mirth_Prop_1_Prop(v27, v12);
	void* v29 = field_mut(&mfld_mirth_external_External_ztqname, v26);
	mut_set(MK_mirth_mirth_Prop_1(v28), v29);
	struct mirth_mirth_PropLabel v30 = mtw_mirth_mirth_PropLabel_ExternalType(v26);
	struct mirth_mirth_LexicalState* v31 = v25->mlexicalzestate;
	incref(MK_mirth_mirth_LexicalState(v31));
	FNPTR v32 = &mb_mirth_mirth_PropLabel_prop_1_sp47_0;
	struct mirth_mirth_PropState_1 v33 = mtw_mirth_mirth_PropState_1_Delay(v31, MK_mirth_external_External(v26), MKFNPTR(v32));
	struct mirth_mirth_Prop_1* v34 = mtw_mirth_mirth_Prop_1_Prop(v30, v33);
	void* v35 = field_mut(&mfld_mirth_external_External_ztctxzetype, v26);
	mut_set(MK_mirth_mirth_Prop_1(v34), v35);
	struct mirth_mirth_PropLabel v36 = mtw_mirth_mirth_PropLabel_ExternalCType(v26);
	struct mirth_mirth_LexicalState* v37 = v25->mlexicalzestate;
	incref(MK_mirth_mirth_LexicalState(v37));
	FNPTR v38 = &mb_mirth_mirth_PropLabel_prop_1_sp48_0;
	struct mirth_mirth_PropState_1 v39 = mtw_mirth_mirth_PropState_1_Delay(v37, MK_mirth_external_External(v26), MKFNPTR(v38));
	struct mirth_mirth_Prop_1* v40 = mtw_mirth_mirth_Prop_1_Prop(v36, v39);
	void* v41 = field_mut(&mfld_mirth_external_External_ztctype, v26);
	mut_set(MK_mirth_mirth_Prop_1(v40), v41);
	struct mirth_def_Def v42 = mtw_mirth_def_Def_External(v26);
	struct mirth_mirth_zaMirth* v43;
	mw_mirth_def_Def_register(v25, v42, &v43);
	*out_zaMirth_6 = v43;
	return v26;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x300, %rsp            # imm = 0x300
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movl %esi, -0x10(%rbp)
movq %rdx, -0x8(%rbp)
movl %r8d, -0x20(%rbp)
movq %r9, -0x18(%rbp)
movq %rdi, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq %rsp, %rax
leaq -0x60(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x38(%rbp), %rdx
leaq -0x40(%rbp), %rcx
leaq -0x48(%rbp), %r8
leaq -0x50(%rbp), %r9
callq 0xa1770
movl -0x20(%rbp), %eax
movl %eax, -0x2e4(%rbp)
testl %eax, %eax
je 0x162ddf
jmp 0x162d70
movl -0x2e4(%rbp), %eax
subl $0x1, %eax
jne 0x162e12
jmp 0x162d81
movl -0x20(%rbp), %edi
movq -0x18(%rbp), %rsi
callq 0x174a0
movq %rax, -0x88(%rbp)
movq %rdx, -0x80(%rbp)
movq -0x38(%rbp), %rdi
movq -0x88(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0x9fc80
movl %eax, -0xa0(%rbp)
movq %rdx, -0x98(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0x162e2b
leaq -0xb0(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x5080
movq -0xb0(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0x162e2b
leaq 0x1f1068(%rip), %rdi    # 0x353e81
movl $0x20, %esi
callq 0xb6c0
movq %rax, %rdi
callq 0xc620
movl -0x78(%rbp), %eax
movl %eax, -0x2e8(%rbp)
testl %eax, %eax
je 0x162ebf
jmp 0x162e3e
movl -0x2e8(%rbp), %eax
subl $0x1, %eax
jne 0x162f2b
jmp 0x162e4f
movl -0x78(%rbp), %edi
movq -0x70(%rbp), %rsi
callq 0x174a0
movq %rax, -0xe0(%rbp)
movq %rdx, -0xd8(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0xf0(%rbp)
leaq 0x22e8f1(%rip), %rax    # 0x391788
movq %rax, -0xe8(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x162f44
movq -0x48(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq 0x22e8b7(%rip), %rax    # 0x391788
movq %rax, -0xf8(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq 0x22e882(%rip), %rax    # 0x391788
movq %rax, -0x108(%rbp)
movq -0x110(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x162f44
leaq 0x1f0f4f(%rip), %rdi    # 0x353e81
movl $0x20, %esi
callq 0xb6c0
movq %rax, %rdi
callq 0xc620
movq -0x68(%rbp), %rdi
movq -0xd0(%rbp), %rsi
leaq -0x118(%rbp), %rdx
callq 0x6e5d0
movq %rax, -0x120(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x118(%rbp), %rdi
movq -0xc0(%rbp), %rcx
movq -0x120(%rbp), %r9
movq -0x40(%rbp), %r11
movq 0x10(%rbp), %r10
movl -0x10(%rbp), %esi
movq -0x8(%rbp), %rdx
movq -0x128(%rbp), %r8
leaq -0x130(%rbp), %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x163520
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0x163710
movl %eax, -0x148(%rbp)
movq %rdx, -0x140(%rbp)
movl -0x148(%rbp), %edi
movq -0x140(%rbp), %rsi
movl -0x60(%rbp), %edx
movq -0x58(%rbp), %rcx
callq 0x70ac0
movq %rax, -0x150(%rbp)
movq -0x138(%rbp), %rsi
leaq 0x1231cf0(%rip), %rdi   # 0x1394cf0
callq 0x40d30
movq %rax, -0x158(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq 0x22e83f(%rip), %rax    # 0x391860
orq $0x1, %rax
movq %rax, -0x160(%rbp)
movq -0x158(%rbp), %rdx
movq -0x168(%rbp), %rdi
movq -0x160(%rbp), %rsi
callq 0x431a0
movq -0x138(%rbp), %rdi
callq 0x1637a0
movl %eax, -0x178(%rbp)
movq %rdx, -0x170(%rbp)
movq -0x130(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rax
movq %rax, -0x190(%rbp)
leaq 0x22e86a(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x163146
movq -0x180(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq 0x22e835(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x198(%rbp)
movabsq $0xfffffffffffc, %rax   # imm = 0xFFFFFFFFFFFC
andq -0x1a0(%rbp), %rax
cmpq $0x0, %rax
je 0x163146
movq -0x180(%rbp), %rax
movq %rax, -0x1b0(%rbp)
leaq 0x22e7fe(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x1a8(%rbp)
movq -0x1b0(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
jne 0x163146
movq -0x180(%rbp), %rax
movq %rax, -0x1c0(%rbp)
leaq 0x22e7cd(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x1b8(%rbp)
movabsq $0xfffffffffffc, %rax   # imm = 0xFFFFFFFFFFFC
andq -0x1c0(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x163148
leaq 0x6e1(%rip), %rax       # 0x163830
movq %rax, -0x1c8(%rbp)
movq -0x180(%rbp), %rdi
movq -0x138(%rbp), %rax
movq %rax, -0x1e8(%rbp)
leaq 0x22f10e(%rip), %rax    # 0x392280
movq %rax, -0x1e0(%rbp)
movq -0x1c8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
leaq 0x22e05a(%rip), %rax    # 0x3911e8
movq %rax, -0x1f0(%rbp)
movq -0x1e8(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
movq -0x1f8(%rbp), %rcx
movq -0x1f0(%rbp), %r8
callq 0x788b0
movl %eax, -0x1d8(%rbp)
movq %rdx, -0x1d0(%rbp)
movl -0x178(%rbp), %edi
movq -0x170(%rbp), %rsi
movl -0x1d8(%rbp), %edx
movq -0x1d0(%rbp), %rcx
callq 0x70ac0
movq %rax, -0x200(%rbp)
movq -0x138(%rbp), %rsi
leaq 0x1232c71(%rip), %rdi   # 0x1395e68
callq 0x40d30
movq %rax, -0x208(%rbp)
movq -0x200(%rbp), %rax
movq %rax, -0x218(%rbp)
leaq 0x22e648(%rip), %rax    # 0x391860
orq $0x1, %rax
movq %rax, -0x210(%rbp)
movq -0x208(%rbp), %rdx
movq -0x218(%rbp), %rdi
movq -0x210(%rbp), %rsi
callq 0x431a0
movq -0x138(%rbp), %rdi
callq 0x163ac0
movl %eax, -0x228(%rbp)
movq %rdx, -0x220(%rbp)
movq -0x130(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq 0x22e673(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x16333d
movq -0x230(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq 0x22e63e(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x248(%rbp)
movabsq $0xfffffffffffc, %rax   # imm = 0xFFFFFFFFFFFC
andq -0x250(%rbp), %rax
cmpq $0x0, %rax
je 0x16333d
movq -0x230(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq 0x22e607(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x258(%rbp)
movq -0x260(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
jne 0x16333d
movq -0x230(%rbp), %rax
movq %rax, -0x270(%rbp)
leaq 0x22e5d6(%rip), %rax    # 0x3918f0
orq $0x1, %rax
movq %rax, -0x268(%rbp)
movabsq $0xfffffffffffc, %rax   # imm = 0xFFFFFFFFFFFC
andq -0x270(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x16333f
leaq 0x80a(%rip), %rax       # 0x163b50
movq %rax, -0x278(%rbp)
movq -0x230(%rbp), %rdi
movq -0x138(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq 0x22ef17(%rip), %rax    # 0x392280
movq %rax, -0x290(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0x2a8(%rbp)
leaq 0x22de63(%rip), %rax    # 0x3911e8
movq %rax, -0x2a0(%rbp)
movq -0x298(%rbp), %rsi
movq -0x290(%rbp), %rdx
movq -0x2a8(%rbp), %rcx
movq -0x2a0(%rbp), %r8
callq 0x788b0
movl %eax, -0x288(%rbp)
movq %rdx, -0x280(%rbp)
movl -0x228(%rbp), %edi
movq -0x220(%rbp), %rsi
movl -0x288(%rbp), %edx
movq -0x280(%rbp), %rcx
callq 0x70ac0
movq %rax, -0x2b0(%rbp)
movq -0x138(%rbp), %rsi
leaq 0x1232b6a(%rip), %rdi   # 0x1395f58
callq 0x40d30
movq %rax, -0x2b8(%rbp)
movq -0x2b0(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq 0x22e451(%rip), %rax    # 0x391860
orq $0x1, %rax
movq %rax, -0x2c0(%rbp)
movq -0x2b8(%rbp), %rdx
movq -0x2c8(%rbp), %rdi
movq -0x2c0(%rbp), %rsi
callq 0x431a0
movq -0x138(%rbp), %rdi
callq 0x163bf0
movl %eax, -0x2d8(%rbp)
movq %rdx, -0x2d0(%rbp)
movq -0x130(%rbp), %rdi
movl -0x2d8(%rbp), %esi
movq -0x2d0(%rbp), %rdx
leaq -0x2e0(%rbp), %rcx
callq 0x3f300
movq -0x2e0(%rbp), %rcx
movq 0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x138(%rbp), %rax
addq $0x300, %rsp            # imm = 0x300
popq %rbp
retq
nopl (%rax,%rax)