// File: /workspace/github_c_makefile_star2_O3/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_type_StackType_forcezeconszyzx
static struct std_maybe_Maybe_1 mw_mirth_type_StackType_forcezeconszyzx (struct mirth_mirth_zaMirth* in_zaMirth_1, struct mirth_type_StackType in_StackType_2, struct mirth_mirth_zaMirth* *out_zaMirth_3) {
	struct mirth_mirth_zaMirth* v5;
	struct mirth_type_StackType v6 = mw_mirth_type_StackType_expand(in_zaMirth_1, in_StackType_2, &v5);
	struct mirth_mirth_zaMirth* branch_zaMirth_7;
	struct std_maybe_Maybe_1 branch_Maybe_8;
	switch ((v6).tag) {
		case mirth_type_StackType_Error: {
			struct mirth_type_StackType v9 = { .tag=mirth_type_StackType_Error };
			struct mirth_type_Type v10 = { .tag=mirth_type_Type_Error };
			PTUP r11 = PTRMK(0,tup_new(2),0);
			((TUP*)PTRPTR(r11))->size = 2;
			((TUP*)PTRPTR(r11))->cells[1] = MK_mirth_type_Type(v10);
			((TUP*)PTRPTR(r11))->cells[0] = MK_mirth_type_StackType(v9);
			struct std_maybe_Maybe_1 v12 = mtw_std_maybe_Maybe_1_Some(MKTUP(r11));
			branch_Maybe_8 = v12;
			branch_zaMirth_7 = v5;
		} break;
		case mirth_type_StackType_Ignore: {
			struct mirth_type_StackType v13 = { .tag=mirth_type_StackType_Ignore };
			struct mirth_type_Type v14 = { .tag=mirth_type_Type_Ignore };
			PTUP r15 = PTRMK(0,tup_new(2),0);
			((TUP*)PTRPTR(r15))->size = 2;
			((TUP*)PTRPTR(r15))->cells[1] = MK_mirth_type_Type(v14);
			((TUP*)PTRPTR(r15))->cells[0] = MK_mirth_type_StackType(v13);
			struct std_maybe_Maybe_1 v16 = mtw_std_maybe_Maybe_1_Some(MKTUP(r15));
			branch_Maybe_8 = v16;
			branch_zaMirth_7 = v5;
		} break;
		case mirth_type_StackType_Unit: {
			struct std_maybe_Maybe_1 v17 = { .tag=std_maybe_Maybe_1_None };
			branch_Maybe_8 = v17;
			branch_zaMirth_7 = v5;
		} break;
		case mirth_type_StackType_Var: {
			uint64_t v18 = mtp_mirth_type_StackType_Var(v6);
			struct std_maybe_Maybe_1 v19 = { .tag=std_maybe_Maybe_1_None };
			branch_Maybe_8 = v19;
			branch_zaMirth_7 = v5;
		} break;
		case mirth_type_StackType_Cons: {
			struct mirth_type_Type v20;
			struct mirth_type_StackType v21 = mtp_mirth_type_StackType_Cons(v6, &v20);
			PTUP r22 = PTRMK(0,tup_new(2),0);
			((TUP*)PTRPTR(r22))->size = 2;
			((TUP*)PTRPTR(r22))->cells[1] = MK_mirth_type_Type(v20);
			((TUP*)PTRPTR(r22))->cells[0] = MK_mirth_type_StackType(v21);
			struct std_maybe_Maybe_1 v23 = mtw_std_maybe_Maybe_1_Some(MKTUP(r22));
			branch_Maybe_8 = v23;
			branch_zaMirth_7 = v5;
		} break;
		case mirth_type_StackType_With: {
			struct mirth_type_Type v24;
			struct mirth_type_StackType v25 = mtp_mirth_type_StackType_With(v6, &v24);
			struct mirth_mirth_zaMirth* v26;
			struct std_maybe_Maybe_1 v27 = mw_mirth_type_StackType_forcezeconszyzx(v5, v25, &v26);
			struct std_maybe_Maybe_1 v28;
			struct mirth_type_Type v29 = mw_std_maybe_Maybe_1_map_1_sp12(v24, v27, &v28);
			decref(MK_mirth_type_Type(v29));
			branch_Maybe_8 = v28;
			branch_zaMirth_7 = v26;
		} break;
		case mirth_type_StackType_ConsLabel: {
			struct mirth_type_Type v30;
			uint64_t v31;
			struct mirth_type_StackType v32 = mtp_mirth_type_StackType_ConsLabel(v6, &v30, &v31);
			struct mirth_mirth_zaMirth* v33;
			struct std_maybe_Maybe_1 v34 = mw_mirth_type_StackType_forcezeconszyzx(v5, v32, &v33);
			struct mirth_mirth_zaMirth* branch_zaMirth_35;
			struct std_maybe_Maybe_1 branch_Maybe_36;
			switch ((v34).tag) {
				case std_maybe_Maybe_1_Some: {
					VAL v37 = mtp_std_maybe_Maybe_1_Some(v34);
					VAL v38 = ((TUP*)PTRPTR(value_tup(v37)))->cells[0];
					VAL v39 = ((TUP*)PTRPTR(value_tup(v37)))->cells[1];
					tup_decref_outer(value_tup(v37));
					struct mirth_type_StackType v40 = mtw_mirth_type_StackType_ConsLabel(V_mirth_type_StackType(v38), v30, v31);
					PTUP r41 = PTRMK(0,tup_new(2),0);
					((TUP*)PTRPTR(r41))->size = 2;
					((TUP*)PTRPTR(r41))->cells[1] = v39;
					((TUP*)PTRPTR(r41))->cells[0] = MK_mirth_type_StackType(v40);
					struct std_maybe_Maybe_1 v42 = mtw_std_maybe_Maybe_1_Some(MKTUP(r41));
					branch_Maybe_36 = v42;
					branch_zaMirth_35 = v33;
				} break;
				case std_maybe_Maybe_1_None: {
					decref(MK_mirth_type_Type(v30));
					struct std_maybe_Maybe_1 v43 = { .tag=std_maybe_Maybe_1_None };
					branch_Maybe_36 = v43;
					branch_zaMirth_35 = v33;
				} break;
				default: {
					do_panic(str_make("unexpected fallthrough in match\n", 32));
				}
			}
			branch_Maybe_8 = branch_Maybe_36;
			branch_zaMirth_7 = branch_zaMirth_35;
		} break;
		case mirth_type_StackType_WithLabel: {
			struct mirth_type_Type v44;
			uint64_t v45;
			struct mirth_type_StackType v46 = mtp_mirth_type_StackType_WithLabel(v6, &v44, &v45);
			struct mirth_mirth_zaMirth* v47;
			struct std_maybe_Maybe_1 v48 = mw_mirth_type_StackType_forcezeconszyzx(v5, v46, &v47);
			struct mirth_mirth_zaMirth* branch_zaMirth_49;
			struct std_maybe_Maybe_1 branch_Maybe_50;
			switch ((v48).tag) {
				case std_maybe_Maybe_1_Some: {
					VAL v51 = mtp_std_maybe_Maybe_1_Some(v48);
					VAL v52 = ((TUP*)PTRPTR(value_tup(v51)))->cells[0];
					VAL v53 = ((TUP*)PTRPTR(value_tup(v51)))->cells[1];
					tup_decref_outer(value_tup(v51));
					struct mirth_type_StackType v54 = mtw_mirth_type_StackType_WithLabel(V_mirth_type_StackType(v52), v44, v45);
					PTUP r55 = PTRMK(0,tup_new(2),0);
					((TUP*)PTRPTR(r55))->size = 2;
					((TUP*)PTRPTR(r55))->cells[1] = v53;
					((TUP*)PTRPTR(r55))->cells[0] = MK_mirth_type_StackType(v54);
					struct std_maybe_Maybe_1 v56 = mtw_std_maybe_Maybe_1_Some(MKTUP(r55));
					branch_Maybe_50 = v56;
					branch_zaMirth_49 = v47;
				} break;
				case std_maybe_Maybe_1_None: {
					decref(MK_mirth_type_Type(v44));
					struct std_maybe_Maybe_1 v57 = { .tag=std_maybe_Maybe_1_None };
					branch_Maybe_50 = v57;
					branch_zaMirth_49 = v47;
				} break;
				default: {
					do_panic(str_make("unexpected fallthrough in match\n", 32));
				}
			}
			branch_Maybe_8 = branch_Maybe_50;
			branch_zaMirth_7 = branch_zaMirth_49;
		} break;
		case mirth_type_StackType_Meta: {
			uint64_t v58 = mtp_mirth_type_StackType_Meta(v6);
			struct mirth_mirth_zaMirth* v59;
			struct mirth_type_StackType v60 = mw_mirth_type_StackType_Freshzx(v5, &v59);
			struct mirth_mirth_zaMirth* v61;
			struct mirth_type_Type v62 = mw_mirth_type_Type_Freshzx(v59, &v61);
			incref(MK_mirth_type_StackType(v60));
			incref(MK_mirth_type_Type(v62));
			struct mirth_type_StackType v63 = mtw_mirth_type_StackType_Cons(v60, v62);
			struct mirth_type_Type v64 = mw_mirth_type_StackType_zgType(v63);
			struct std_maybe_Maybe_1 v65 = mtw_std_maybe_Maybe_1_Some(MK_mirth_type_Type(v64));
			struct mirth_mirth_zaMirth* v66;
			mw_mirth_type_MetaVar_typezyzx(v61, v65, v58, &v66);
			PTUP r67 = PTRMK(0,tup_new(2),0);
			((TUP*)PTRPTR(r67))->size = 2;
			((TUP*)PTRPTR(r67))->cells[1] = MK_mirth_type_Type(v62);
			((TUP*)PTRPTR(r67))->cells[0] = MK_mirth_type_StackType(v60);
			struct std_maybe_Maybe_1 v68 = mtw_std_maybe_Maybe_1_Some(MKTUP(r67));
			branch_Maybe_8 = v68;
			branch_zaMirth_7 = v66;
		} break;
		default: {
			do_panic(str_make("unexpected fallthrough in match\n", 32));
		}
	}
	*out_zaMirth_3 = branch_zaMirth_7;
	return branch_Maybe_8;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rcx, %rbx
leaq -0x30(%rbp), %rcx
callq 0x37fe3
cmpl $0x8, %eax
ja 0x3c30f
movl %eax, %eax
leaq 0xa2d0a(%rip), %rcx     # 0xdeae4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x2, %edi
callq 0xe0e7
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rax, %rcx
movw $0x2, 0x6(%rcx)
leaq 0xd5ce2(%rip), %rdx     # 0x111ae9
xorl %esi, %esi
movq %rsi, 0x18(%rcx)
movq %rdx, 0x20(%rcx)
leaq 0xd5da9(%rip), %rdx     # 0x111bc1
movq %rsi, 0x8(%rcx)
movq %rdx, 0x10(%rcx)
jmp 0x3c035
movq 0x8(%rdx), %rax
movq %rax, -0x38(%rbp)
decl (%rdx)
jne 0x3be39
movq %rdx, %rdi
callq 0x5030
movq %rbx, -0x50(%rbp)
movabsq $0xfffffffffffc, %r13   # imm = 0xFFFFFFFFFFFC
movq -0x30(%rbp), %rdi
leaq -0x48(%rbp), %r15
movq %r15, %rsi
callq 0x3d862
movq %rax, %r12
movq (%r15), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3d8ce
movq %r12, %rcx
andq %r13, %rcx
sete %dl
testb $0x3, %r12b
setne %sil
orb %dl, %sil
jne 0x3be7e
incl (%rcx)
movq %r12, %r14
btsq $0x32, %r14
movabsq $0x3000000000000, %rbx  # imm = 0x3000000000000
orq %rax, %rbx
leaq 0xd5c4f(%rip), %r15     # 0x111ae9
movq %rax, %rcx
andq %r13, %rcx
sete %dl
testb $0x3, %al
setne %sil
orb %dl, %sil
jne 0x3beb0
incl (%rcx)
movl $0x4, %edi
movq %r12, %rsi
movl $0x3, %edx
movq %rax, %rcx
callq 0x205af
movl $0x5, %edi
movq %rdx, %rsi
callq 0x3d699
movabsq $0x9000000000000, %rdi  # imm = 0x9000000000000
orq %rax, %rdi
movq %r15, %rsi
callq 0x9353
movq %rdx, %r12
movq -0x70(%rbp), %r15
leaq 0x10d9533(%rip), %rdi   # 0x1115428
movq -0x38(%rbp), %rsi
callq 0x13c85
leaq 0x4(%r13), %rdi
orq %r12, %rdi
leaq 0xd53b5(%rip), %rsi     # 0x1112c1
movq %rax, %rdx
callq 0x14766
movl $0x2, %edi
callq 0xe0e7
andq %rax, %r13
movw $0x2, 0x6(%r13)
movq %rbx, 0x18(%r13)
leaq 0xd5bb6(%rip), %rcx     # 0x111ae9
movq %rcx, 0x20(%r13)
movq %r14, 0x8(%r13)
leaq 0xd5c7f(%rip), %rcx     # 0x111bc1
movq %rcx, 0x10(%r13)
leaq 0xd544c(%rip), %rsi     # 0x111399
movq %rax, %rdi
callq 0x9353
movl $0x1, %r14d
jmp 0x3c2b5
decl (%rdx)
jne 0x3bf6c
movq %rdx, %rdi
callq 0x5030
xorl %r14d, %r14d
movq -0x30(%rbp), %r15
jmp 0x3c2f8
leaq -0x48(%rbp), %r14
movq %rdx, %rdi
movq %r14, %rsi
callq 0x381ac
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rcx
movl %eax, %esi
callq 0x3bdab
movq %rdx, %rcx
movl (%r14), %edi
movq 0x8(%r14), %rsi
leaq -0x70(%rbp), %r8
movl %eax, %edx
callq 0x3d6f2
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rdx, %rcx
sete %sil
testb $0x3, %dl
setne %dil
orb %sil, %dil
jne 0x3bfe2
decl (%rcx)
jne 0x3bfe2
shlq $0x30, %rax
orq %rdx, %rax
leaq 0xd5b0f(%rip), %rsi     # 0x111ae9
movq %rax, %rdi
callq 0xd13d
movl -0x70(%rbp), %r14d
movq -0x68(%rbp), %rdx
movq -0x60(%rbp), %r15
jmp 0x3c2fa
movl $0x2, %edi
callq 0xe0e7
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
movq %rax, %rdx
andq %rcx, %rdx
movw $0x2, 0x6(%rdx)
leaq 0xd5acf(%rip), %rsi     # 0x111ae9
addq $0x4, %rcx
movq %rcx, 0x18(%rdx)
movq %rsi, 0x20(%rdx)
leaq 0xd5b94(%rip), %rsi     # 0x111bc1
movq %rcx, 0x8(%rdx)
movq %rsi, 0x10(%rdx)
leaq 0xd535d(%rip), %rsi     # 0x111399
movq %rax, %rdi
callq 0x9353
movl $0x1, %r14d
movq -0x30(%rbp), %r15
jmp 0x3c2fa
leaq -0x48(%rbp), %r14
movq %rdx, %rdi
movq %r14, %rsi
callq 0x38125
movl %eax, %r15d
movq %rdx, %r12
movl $0x2, %edi
callq 0xe0e7
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rax, %rcx
movw $0x2, 0x6(%rcx)
movl (%r14), %edx
shlq $0x30, %rdx
orq 0x8(%r14), %rdx
leaq 0xd5a52(%rip), %rsi     # 0x111ae9
movq %rdx, 0x18(%rcx)
movq %rsi, 0x20(%rcx)
shlq $0x30, %r15
orq %r12, %r15
leaq 0xd5b14(%rip), %rdx     # 0x111bc1
movq %r15, 0x8(%rcx)
movq %rdx, 0x10(%rcx)
leaq 0xd52dd(%rip), %rsi     # 0x111399
movq %rax, %rdi
callq 0x9353
movq -0x30(%rbp), %r15
movl $0x1, %r14d
jmp 0x3c2fa
leaq -0x48(%rbp), %rsi
leaq -0x60(%rbp), %rax
movq %rdx, %rdi
movq %rax, %rdx
callq 0x38233
movq -0x30(%rbp), %rdi
leaq -0x58(%rbp), %rcx
movl %eax, %esi
callq 0x3bdab
movl %eax, %r14d
testl %eax, %eax
je 0x3c2bb
movq %rbx, -0x50(%rbp)
cmpl $0x1, %r14d
jne 0x3c30f
movq %rdx, %rdi
callq 0xd745
movq %rax, %r12
movq %rdx, -0x38(%rbp)
movq %rax, %rdi
movq %rdx, %rsi
callq 0x90ba
movabsq $0xfffffffffffc, %rbx   # imm = 0xFFFFFFFFFFFC
movq %r12, %r15
andq %rbx, %r15
movq 0x8(%r15), %r13
movq %r12, %rdi
movq -0x38(%rbp), %rsi
callq 0x90ba
movups 0x18(%r15), %xmm0
movaps %xmm0, -0x70(%rbp)
movq %r12, %rdi
movq -0x38(%rbp), %rsi
callq 0x90ba
movq %r12, %rdi
callq 0x910b
movq %r13, %rdi
shrq $0x30, %rdi
andq %rbx, %r13
movq -0x60(%rbp), %r8
movl -0x48(%rbp), %edx
movq -0x40(%rbp), %rcx
movq %r13, %rsi
callq 0x3c8d3
movq %rdx, %r15
movl $0x2, %edi
callq 0xe0e7
andq %rax, %rbx
movw $0x2, 0x6(%rbx)
movaps -0x70(%rbp), %xmm0
movups %xmm0, 0x18(%rbx)
movabsq $0x6000000000000, %rcx  # imm = 0x6000000000000
orq %r15, %rcx
leaq 0xd5a0d(%rip), %rdx     # 0x111bc1
movq %rcx, 0x8(%rbx)
movq %rdx, 0x10(%rbx)
jmp 0x3c2a2
leaq -0x48(%rbp), %rsi
leaq -0x60(%rbp), %rax
movq %rdx, %rdi
movq %rax, %rdx
callq 0x382d7
movq -0x30(%rbp), %rdi
leaq -0x58(%rbp), %rcx
movl %eax, %esi
callq 0x3bdab
movl %eax, %r14d
testl %eax, %eax
je 0x3c2bb
movq %rbx, -0x50(%rbp)
cmpl $0x1, %r14d
jne 0x3c30f
movq %rdx, %rdi
callq 0xd745
movq %rax, %r12
movq %rdx, -0x38(%rbp)
movq %rax, %rdi
movq %rdx, %rsi
callq 0x90ba
movabsq $0xfffffffffffc, %rbx   # imm = 0xFFFFFFFFFFFC
movq %r12, %r15
andq %rbx, %r15
movq 0x8(%r15), %r13
movq %r12, %rdi
movq -0x38(%rbp), %rsi
callq 0x90ba
movups 0x18(%r15), %xmm0
movaps %xmm0, -0x70(%rbp)
movq %r12, %rdi
movq -0x38(%rbp), %rsi
callq 0x90ba
movq %r12, %rdi
callq 0x910b
movq %r13, %rdi
shrq $0x30, %rdi
andq %rbx, %r13
movq -0x60(%rbp), %r8
movl -0x48(%rbp), %edx
movq -0x40(%rbp), %rcx
movq %r13, %rsi
callq 0x3cfb6
movq %rdx, %r15
movl $0x2, %edi
callq 0xe0e7
andq %rax, %rbx
movw $0x2, 0x6(%rbx)
movaps -0x70(%rbp), %xmm0
movups %xmm0, 0x18(%rbx)
btsq $0x33, %r15
leaq 0xd5927(%rip), %rcx     # 0x111bc1
movq %r15, 0x8(%rbx)
movq %rcx, 0x10(%rbx)
leaq 0xd50f0(%rip), %rsi     # 0x111399
movq %rax, %rdi
callq 0x9353
movq -0x58(%rbp), %r15
movq -0x50(%rbp), %rbx
jmp 0x3c2fa
movq -0x40(%rbp), %rax
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rax, %rcx
sete %dl
testb $0x3, %al
setne %sil
orb %dl, %sil
jne 0x3c2f4
movl -0x48(%rbp), %edi
decl (%rcx)
jne 0x3c2f4
shlq $0x30, %rdi
orq %rax, %rdi
leaq 0xd57fa(%rip), %rsi     # 0x111ae9
callq 0xd13d
movq -0x58(%rbp), %r15
xorl %edx, %edx
movq %r15, (%rbx)
movl %r14d, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x20, %edi
callq 0xf5e4
movq $0x20, 0x10(%rax)
movups 0xa43a5(%rip), %xmm0    # 0xe06cd
movups %xmm0, 0x18(%rax)
movups 0xa43aa(%rip), %xmm0    # 0xe06dd
movups %xmm0, 0x28(%rax)
movq %rax, %rdi
callq 0x9302