// File: /workspace/github_c_makefile_star2_O2/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_c99_C99DataStructRepr_emitzestructzedefzx
static void mw_mirth_c99_C99DataStructRepr_emitzestructzedefzx (struct mirth_mirth_zaMirth* in_zaMirth_1, struct mirth_c99_zaC99* in_zaC99_2, struct mirth_c99_C99DataStructRepr* in_C99DataStructRepr_3, struct mirth_mirth_zaMirth* *out_zaMirth_4, struct mirth_c99_zaC99* *out_zaC99_5) {
	struct mirth_mirth_zaMirth* v6;
	struct mirth_c99_zaC99* v7;
	mw_mirth_c99_zaC99_indent(in_zaMirth_1, in_zaC99_2, &v6, &v7);
	STR* v8;
	STRLIT(v8, "struct ", 7);
	struct mirth_mirth_zaMirth* v9;
	struct mirth_c99_zaC99* v10;
	mw_mirth_c99_zaC99_put(v6, v7, v8, &v9, &v10);
	incref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	STR* v11 = in_C99DataStructRepr_3->mcname;
	incref(MKSTR(v11));
	decref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	struct mirth_mirth_zaMirth* v12;
	struct mirth_c99_zaC99* v13;
	mw_mirth_c99_zaC99_put(v9, v10, v11, &v12, &v13);
	STR* v14;
	STRLIT(v14, " {", 2);
	struct mirth_mirth_zaMirth* v15;
	struct mirth_c99_zaC99* v16;
	mw_mirth_c99_zaC99_put(v12, v13, v14, &v15, &v16);
	struct mirth_mirth_zaMirth* v17;
	struct mirth_c99_zaC99* v18;
	mw_mirth_c99_zaC99_line(v15, v16, &v17, &v18);
	INT v19 = v18->mdepth;
	incref(MKNAT(v19));
	INT v20 = WRAP_I63(1LL);
	INT v21 = v19;
	INT v22 = v20;
	INT v23 = int_add(v21, v22);
	INT v24 = v23;
	INT v25 = v18->mdepth;
	decref(MKNAT(v25));
	v18->mdepth = v24;
	incref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	struct mirth_mirth_zaMirth* v26;
	bool v27 = mw_mirth_c99_C99DataStructRepr_needszerefcountingzy(v17, in_C99DataStructRepr_3, &v26);
	struct mirth_c99_zaC99* branch_zaC99_28;
	struct mirth_mirth_zaMirth* branch_zaMirth_29;
	if (v27) {
		struct mirth_mirth_zaMirth* v30;
		struct mirth_c99_zaC99* v31;
		mw_mirth_c99_zaC99_indent(v26, v18, &v30, &v31);
		STR* v32;
		STRLIT(v32, "REFS refs;", 10);
		struct mirth_mirth_zaMirth* v33;
		struct mirth_c99_zaC99* v34;
		mw_mirth_c99_zaC99_put(v30, v31, v32, &v33, &v34);
		struct mirth_mirth_zaMirth* v35;
		struct mirth_c99_zaC99* v36;
		mw_mirth_c99_zaC99_line(v33, v34, &v35, &v36);
		branch_zaMirth_29 = v35;
		branch_zaC99_28 = v36;
	} else {
		branch_zaMirth_29 = v26;
		branch_zaC99_28 = v18;
	}
	incref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	struct std_list_List_1 v37 = in_C99DataStructRepr_3->mfields;
	incref(MK_std_list_List_1(v37));
	decref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	bool v38 = true;
	struct mirth_c99_zaC99* r39 = branch_zaC99_28;
	struct mirth_mirth_zaMirth* r40 = branch_zaMirth_29;
	struct std_list_List_1 v41 = v37;
	bool v42 = v38;
	bool v43 = v38;
	while (v43) {
		struct mirth_c99_zaC99* r44 = r39;
		struct mirth_mirth_zaMirth* r45 = r40;
		struct std_list_List_1 v46 = v41;
		bool v47 = v42;
		struct mirth_c99_zaC99* branch_zaC99_48;
		struct mirth_mirth_zaMirth* branch_zaMirth_49;
		struct std_list_List_1 branch_List_50;
		bool branch_Bool_51;
		switch ((v46).tag) {
			case std_list_List_1_Cons: {
				struct std_list_List_1 v52;
				VAL v53 = mtp_std_list_List_1_Cons(v46, &v52);
				incref(v53);
				struct mirth_mirth_zaMirth* v54;
				bool v55 = mw_mirth_c99_C99DataStructField_iszephysicalzy(r45, V_mirth_c99_C99DataStructField(v53), &v54);
				struct mirth_c99_C99DataStructField* branch_C99DataStructField_56;
				struct mirth_c99_zaC99* branch_zaC99_57;
				struct mirth_mirth_zaMirth* branch_zaMirth_58;
				if (v55) {
					struct mirth_mirth_zaMirth* v59;
					struct mirth_c99_zaC99* v60;
					mw_mirth_c99_zaC99_indent(v54, r44, &v59, &v60);
					incref(v53);
					struct mirth_c99_C99ReprType v61 = V_mirth_c99_C99DataStructField(v53)->mc99zerepr;
					incref(MK_mirth_c99_C99ReprType(v61));
					decref(MK_mirth_c99_C99DataStructField(V_mirth_c99_C99DataStructField(v53)));
					struct mirth_mirth_zaMirth* v62;
					STR* v63 = mw_mirth_c99_C99ReprType_underlyingzec99zetype(v59, v61, &v62);
					struct mirth_mirth_zaMirth* v64;
					struct mirth_c99_zaC99* v65;
					mw_mirth_c99_zaC99_put(v62, v60, v63, &v64, &v65);
					STR* v66;
					STRLIT(v66, " ", 1);
					struct mirth_mirth_zaMirth* v67;
					struct mirth_c99_zaC99* v68;
					mw_mirth_c99_zaC99_put(v64, v65, v66, &v67, &v68);
					incref(v53);
					STR* v69 = V_mirth_c99_C99DataStructField(v53)->mcname;
					incref(MKSTR(v69));
					decref(MK_mirth_c99_C99DataStructField(V_mirth_c99_C99DataStructField(v53)));
					struct mirth_mirth_zaMirth* v70;
					struct mirth_c99_zaC99* v71;
					mw_mirth_c99_zaC99_put(v67, v68, v69, &v70, &v71);
					STR* v72;
					STRLIT(v72, ";", 1);
					struct mirth_mirth_zaMirth* v73;
					struct mirth_c99_zaC99* v74;
					mw_mirth_c99_zaC99_put(v70, v71, v72, &v73, &v74);
					struct mirth_mirth_zaMirth* v75;
					struct mirth_c99_zaC99* v76;
					mw_mirth_c99_zaC99_line(v73, v74, &v75, &v76);
					branch_zaMirth_58 = v75;
					branch_zaC99_57 = v76;
					branch_C99DataStructField_56 = V_mirth_c99_C99DataStructField(v53);
				} else {
					branch_zaMirth_58 = v54;
					branch_zaC99_57 = r44;
					branch_C99DataStructField_56 = V_mirth_c99_C99DataStructField(v53);
				}
				decref(MK_mirth_c99_C99DataStructField(branch_C99DataStructField_56));
				bool v77 = true;
				branch_Bool_51 = v77;
				branch_List_50 = v52;
				branch_zaMirth_49 = branch_zaMirth_58;
				branch_zaC99_48 = branch_zaC99_57;
			} break;
			case std_list_List_1_Nil: {
				struct std_list_List_1 v78 = { .tag=std_list_List_1_Nil };
				bool v79 = false;
				branch_Bool_51 = v79;
				branch_List_50 = v78;
				branch_zaMirth_49 = r45;
				branch_zaC99_48 = r44;
			} break;
			default: {
				do_panic(str_make("unexpected fallthrough in match\n", 32));
			}
		}
		v43 = branch_Bool_51;
		v42 = branch_Bool_51;
		v41 = branch_List_50;
		r40 = branch_zaMirth_49;
		r39 = branch_zaC99_48;
	}
	decref(MK_std_list_List_1(v41));
	INT v80 = r39->mdepth;
	incref(MKNAT(v80));
	INT v81 = WRAP_I63(1LL);
	INT v82 = v80;
	INT v83 = v81;
	INT v84 = int_sub(v82, v83);
	incref(MKINT(v84));
	INT v85 = WRAP_I63(0LL);
	INT v86 = v85;
	bool v87 = int_le(v86, v84);
	INT branch_Nat_88;
	if (v87) {
		INT v89 = v84;
		branch_Nat_88 = v89;
	} else {
		decref(MKINT(v84));
		INT v90 = WRAP_I63(0LL);
		branch_Nat_88 = v90;
	}
	INT v91 = r39->mdepth;
	decref(MKNAT(v91));
	r39->mdepth = branch_Nat_88;
	struct mirth_mirth_zaMirth* v92;
	struct mirth_c99_zaC99* v93;
	mw_mirth_c99_zaC99_c99zeline_1_sp130(r40, r39, &v92, &v93);
	decref(MK_mirth_c99_C99DataStructRepr(in_C99DataStructRepr_3));
	*out_zaC99_5 = v93;
	*out_zaMirth_4 = v92;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %r8, -0xa8(%rbp)
movq %rcx, -0xa0(%rbp)
movq %rdx, %r15
leaq -0x128(%rbp), %rdx
leaq -0x120(%rbp), %rcx
callq 0x8bc28
movq 0x1072b5d(%rip), %rdx   # 0x110e488
testq %rdx, %rdx
jne 0x9b949
leaq 0x51c2f(%rip), %rdi     # 0xed566
pushq $0x7
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x1072b3f(%rip)   # 0x110e488
movabsq $0xfffffffffffc, %r12   # imm = 0xFFFFFFFFFFFC
movq %rdx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dl
setne %sil
orb %cl, %sil
jne 0x9b96a
incl (%rax)
movq -0x128(%rbp), %rdi
movq -0x120(%rbp), %rsi
leaq -0x118(%rbp), %rcx
leaq -0x110(%rbp), %r8
callq 0x8a8a9
movq %r15, %r13
andq %r12, %r13
setne %al
testb $0x3, %r15b
sete %cl
andb %al, %cl
movb %cl, -0x29(%rbp)
cmpb $0x1, %cl
jne 0x9b9a9
incl (%r13)
movq 0x10(%r15), %rbx
movq %rbx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %bl
setne %dl
orb %cl, %dl
jne 0x9b9c2
incl (%rax)
cmpb $0x0, -0x29(%rbp)
je 0x9b9dd
decl (%r13)
jne 0x9b9dd
movq %r15, %rdi
leaq 0x6e4c1(%rip), %rsi     # 0x109e99
callq 0xce94
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rsi
leaq -0x108(%rbp), %rcx
leaq -0x100(%rbp), %r8
movq %rbx, %rdx
callq 0x8a8a9
movq 0x1072a88(%rip), %rdx   # 0x110e490
testq %rdx, %rdx
jne 0x9ba26
leaq 0x5281c(%rip), %rdi     # 0xee230
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x1072a6a(%rip)   # 0x110e490
movq %rdx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dl
setne %sil
orb %cl, %sil
jne 0x9ba3d
incl (%rax)
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
leaq -0x140(%rbp), %rbx
leaq -0x138(%rbp), %r14
movq %rbx, %rcx
movq %r14, %r8
callq 0x8a8a9
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0xf8(%rbp), %rdx
leaq -0x130(%rbp), %rbx
movq %rbx, %rcx
callq 0x8a92c
movq (%rbx), %rax
movq %rax, -0x38(%rbp)
movq 0x8(%rax), %rdi
movq %rdi, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dil
setne %dl
orb %cl, %dl
jne 0x9baa1
incl (%rax)
leaq 0x6c669(%rip), %r14     # 0x108111
pushq $0x3
popq %rsi
callq 0xdd03
movq %rax, %rbx
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
movq %rdi, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dil
setne %dl
orb %cl, %dl
jne 0x9badb
decl (%rax)
jne 0x9badb
movq %r14, %rsi
callq 0xce94
movq -0x38(%rbp), %rax
movq %rbx, 0x8(%rax)
cmpb $0x0, -0x29(%rbp)
je 0x9baed
incl (%r13)
movq -0xf8(%rbp), %rdi
leaq -0x88(%rbp), %rdx
movq %r15, %rsi
callq 0x97e41
testb %al, %al
je 0x9bba3
movq -0x88(%rbp), %rdi
leaq -0x60(%rbp), %rdx
leaq -0x48(%rbp), %rcx
movq -0x38(%rbp), %rsi
callq 0x8bc28
movq 0x107296e(%rip), %rdx   # 0x110e498
testq %rdx, %rdx
jne 0x9bb48
leaq 0x51dda(%rip), %rdi     # 0xed910
pushq $0xa
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x1072950(%rip)   # 0x110e498
movq %rdx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dl
setne %sil
orb %cl, %sil
jne 0x9bb5f
incl (%rax)
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq -0x80(%rbp), %rbx
leaq -0x78(%rbp), %r14
movq %rbx, %rcx
movq %r14, %r8
callq 0x8a8a9
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0x70(%rbp), %rbx
leaq -0x68(%rbp), %r14
movq %rbx, %rdx
movq %r14, %rcx
callq 0x8a92c
movq (%rbx), %rax
movq %rax, -0x40(%rbp)
movq (%r14), %rax
movq %rax, -0x38(%rbp)
jmp 0x9bbae
movq -0x88(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpb $0x0, -0x29(%rbp)
je 0x9bbb8
incl (%r13)
movl 0x18(%r15), %r14d
movq 0x20(%r15), %rbx
movq %rbx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %bl
setne %dl
orb %cl, %dl
jne 0x9bbd5
incl (%rax)
cmpb $0x0, -0x29(%rbp)
je 0x9bbf0
decl (%r13)
jne 0x9bbf0
movq %r15, %rdi
leaq 0x6e2ae(%rip), %rsi     # 0x109e99
callq 0xce94
leaq -0x60(%rbp), %rsi
movq %r15, -0x90(%rbp)
movq %r13, -0x98(%rbp)
movb $0x1, %al
movq %rbx, %rdi
testb $0x1, %al
je 0x9bec3
xorl %eax, %eax
movl $0x0, %ebx
testl %r14d, %r14d
je 0x9bc04
cmpl $0x1, %r14d
jne 0x9c00b
callq 0xce01
movq %rax, %r15
movq %rdx, %rbx
movq %rax, %r14
testb $0x1, %bl
je 0x9bc4e
movq %r15, %rax
andq %r12, %rax
sete %cl
testb $0x3, %r14b
setne %dl
orb %cl, %dl
jne 0x9bc4e
incl (%rax)
movq -0x40(%rbp), %rdi
movq %r14, %rsi
leaq -0x48(%rbp), %rdx
callq 0x9c72e
testb %al, %al
je 0x9be76
movq -0x48(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0x80(%rbp), %rdx
leaq -0x78(%rbp), %rcx
callq 0x8bc28
testb $0x1, %bl
je 0x9bc96
movq %r15, %rax
andq %r12, %rax
sete %cl
testb $0x3, %r14b
setne %dl
orb %cl, %dl
jne 0x9bc96
incl (%rax)
movl 0x18(%r14), %esi
movq 0x20(%r14), %r13
movq %r13, %rax
andq %r12, %rax
sete %cl
testb $0x3, %r13b
setne %dl
orb %cl, %dl
jne 0x9bcb4
incl (%rax)
movq %r14, -0x50(%rbp)
movq %r15, %r14
andq %r12, %r14
sete %al
andq $0x3, %r15
setne %cl
orb %al, %cl
movb %cl, -0x38(%rbp)
jne 0x9bcea
decl (%r14)
jne 0x9bcea
movq -0x50(%rbp), %rdi
movl %esi, -0x40(%rbp)
leaq 0x6e28f(%rip), %rsi     # 0x109f71
callq 0xce94
movl -0x40(%rbp), %esi
movq -0x80(%rbp), %rdi
movq %r13, %rdx
leaq -0x70(%rbp), %rcx
callq 0x9c7be
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq %rax, %rdx
leaq -0x68(%rbp), %rcx
leaq -0xf0(%rbp), %r8
callq 0x8a8a9
movq 0x1072784(%rip), %rdx   # 0x110e4a0
testq %rdx, %rdx
jne 0x9bd3a
leaq 0x3a0df(%rip), %rdi     # 0xd5e07
pushq $0x1
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x1072766(%rip)   # 0x110e4a0
movq %rdx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dl
setne %sil
orb %cl, %sil
jne 0x9bd51
incl (%rax)
testb $0x1, %bl
sete %bl
movq -0x68(%rbp), %rdi
movq -0xf0(%rbp), %rsi
leaq -0xe8(%rbp), %rcx
leaq -0xe0(%rbp), %r8
callq 0x8a8a9
movb -0x38(%rbp), %sil
orb %sil, %bl
jne 0x9bd81
incl (%r14)
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rbx
movq %rbx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %bl
setne %dl
orb %cl, %dl
jne 0x9bd9e
incl (%rax)
testb %sil, %sil
jne 0x9bdb8
decl (%r14)
jne 0x9bdb8
movq -0x50(%rbp), %rdi
leaq 0x6e1be(%rip), %rsi     # 0x109f71
callq 0xce94
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq %rbx, %rdx
leaq -0xd8(%rbp), %rcx
leaq -0xd0(%rbp), %r8
callq 0x8a8a9
movq 0x10726c5(%rip), %rdx   # 0x110e4a8
testq %rdx, %rdx
jne 0x9be01
leaq 0x5231e(%rip), %rdi     # 0xee10d
pushq $0x1
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x10726a7(%rip)   # 0x110e4a8
movq %rdx, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dl
setne %sil
orb %cl, %sil
jne 0x9be18
incl (%rax)
movq -0xd8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
leaq -0xc8(%rbp), %rcx
leaq -0xc0(%rbp), %r8
callq 0x8a8a9
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
leaq -0xb0(%rbp), %rcx
callq 0x8a92c
movq -0xb8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x50(%rbp), %rdi
jmp 0x9be91
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, %rax
andq %r12, %rax
movl %r14d, %r15d
andl $0x3, %r15d
movq %r14, %rdi
movq %rax, %r14
testq %r14, %r14
sete %al
testq %r15, %r15
setne %cl
orb %al, %cl
jne 0x9beb2
decl (%r14)
jne 0x9beb2
leaq 0x6e0c4(%rip), %rsi     # 0x109f71
callq 0xce94
movl -0x60(%rbp), %r14d
movq -0x58(%rbp), %rbx
leaq -0x60(%rbp), %rsi
jmp 0x9bc02
movq %rdi, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dil
setne %dl
orb %cl, %dl
jne 0x9bef1
decl (%rax)
jne 0x9bef1
shlq $0x30, %r14
orq %rdi, %r14
movq %r14, %rdi
leaq 0x6c38d(%rip), %rsi     # 0x108279
callq 0xce94
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
movq %rdi, %rax
andq %r12, %rax
sete %cl
testb $0x3, %dil
setne %dl
orb %cl, %dl
jne 0x9bf0f
incl (%rax)
pushq $0x3
popq %rsi
callq 0xe191
movq %rax, %r14
movq %rax, %r15
andq %r12, %r15
sete %al
testb $0x3, %r14b
setne %r12b
orb %al, %r12b
jne 0x9bf33
incl (%r15)
pushq $0x1
popq %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0xdfd4
orb %al, %r12b
testb %al, %al
movq %r14, %rbx
cmoveq %r13, %rbx
testb %r12b, %r12b
movq -0xa0(%rbp), %r12
jne 0x9bf71
decl (%r15)
jne 0x9bf6e
leaq 0x6c4c3(%rip), %rsi     # 0x108429
movq %r14, %rdi
callq 0xce94
pushq $0x1
popq %rbx
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
movabsq $0xfffffffffffc, %r13   # imm = 0xFFFFFFFFFFFC
andq %rdi, %r13
sete %al
testb $0x3, %dil
setne %cl
orb %al, %cl
jne 0x9bfa6
decl (%r13)
jne 0x9bfa6
leaq 0x6c170(%rip), %rsi     # 0x108111
callq 0xce94
movq -0x38(%rbp), %rsi
movq %rbx, 0x8(%rsi)
leaq -0x60(%rbp), %rdx
leaq -0x48(%rbp), %rcx
movq -0x40(%rbp), %rdi
callq 0x97345
cmpb $0x0, -0x29(%rbp)
movq -0x98(%rbp), %rax
je 0x9bfe3
decl (%rax)
jne 0x9bfe3
movq -0x90(%rbp), %rdi
leaq 0x6debb(%rip), %rsi     # 0x109e99
callq 0xce94
movq -0x48(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq %rax, (%rcx)
movq -0x60(%rbp), %rax
movq %rax, (%r12)
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x387fb(%rip), %rdi     # 0xd480d
pushq $0x20
popq %rsi
callq 0x8a21
movq %rax, %rdi
callq 0x8cc6