// File: /workspace/github_c_makefile_star2_O3/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_c99_exposezestackzetypezx
static void mw_mirth_c99_exposezestackzetypezx (struct mirth_mirth_zaMirth* in_zaMirth_1, struct mirth_c99_zaC99Branch* in_zaC99Branch_2, struct mirth_type_StackType in_StackType_3, struct mirth_mirth_zaMirth* *out_zaMirth_4, struct mirth_c99_zaC99Branch* *out_zaC99Branch_5) {
	struct mirth_mirth_zaMirth* v6;
	struct mirth_type_StackType v7 = mw_mirth_type_StackType_expand(in_zaMirth_1, in_StackType_3, &v6);
	struct mirth_mirth_zaMirth* branch_zaMirth_8;
	struct mirth_c99_zaC99Branch* branch_zaC99Branch_9;
	switch ((v7).tag) {
		case mirth_type_StackType_Cons: {
			struct mirth_type_Type v10;
			struct mirth_type_StackType v11 = mtp_mirth_type_StackType_Cons(v7, &v10);
			struct mirth_mirth_zaMirth* v12;
			struct mirth_c99_zaC99Branch* v13;
			struct mirth_c99_C99ReprType v14 = mw_mirth_c99_zaC99Branch_typezetozec99zerepr(v6, in_zaC99Branch_2, v10, &v12, &v13);
			struct mirth_mirth_zaMirth* v15;
			struct mirth_c99_zaC99Branch* v16;
			struct mirth_c99_zaC99Value* v17;
			mw_mirth_c99_zaC99Branch_popzevaluezx(v12, v13, v14, &v15, &v16, &v17);
			struct mirth_mirth_zaMirth* v18;
			struct mirth_c99_zaC99Branch* v19;
			mw_mirth_c99_exposezestackzetypezx(v15, v16, v11, &v18, &v19);
			struct mirth_mirth_zaMirth* v20;
			struct mirth_c99_zaC99Branch* v21;
			mw_mirth_c99_zaC99Value_pushzevaluezx(v18, v19, v17, &v20, &v21);
			branch_zaC99Branch_9 = v21;
			branch_zaMirth_8 = v20;
		} break;
		case mirth_type_StackType_With: {
			struct mirth_type_Type v22;
			struct mirth_type_StackType v23 = mtp_mirth_type_StackType_With(v7, &v22);
			struct mirth_mirth_zaMirth* v24;
			struct mirth_c99_zaC99Branch* v25;
			struct mirth_c99_C99ReprType v26 = mw_mirth_c99_zaC99Branch_resourcezetozec99zerepr(v6, in_zaC99Branch_2, v22, &v24, &v25);
			struct mirth_mirth_zaMirth* v27;
			struct mirth_c99_zaC99Branch* v28;
			struct mirth_c99_zaC99Resource* v29;
			mw_mirth_c99_zaC99Branch_popzeresourcezx(v24, v25, v26, &v27, &v28, &v29);
			struct mirth_mirth_zaMirth* v30;
			struct mirth_c99_zaC99Branch* v31;
			mw_mirth_c99_exposezestackzetypezx(v27, v28, v23, &v30, &v31);
			struct mirth_mirth_zaMirth* v32;
			struct mirth_c99_zaC99Branch* v33;
			mw_mirth_c99_zaC99Resource_pushzeresourcezx(v30, v31, v29, &v32, &v33);
			branch_zaC99Branch_9 = v33;
			branch_zaMirth_8 = v32;
		} break;
		case mirth_type_StackType_ConsLabel: {
			struct mirth_type_Type v34;
			uint64_t v35;
			struct mirth_type_StackType v36 = mtp_mirth_type_StackType_ConsLabel(v7, &v34, &v35);
			struct mirth_mirth_zaMirth* v37;
			struct mirth_c99_zaC99Branch* v38;
			struct mirth_c99_C99ReprType v39 = mw_mirth_c99_zaC99Branch_typezetozec99zerepr(v6, in_zaC99Branch_2, v34, &v37, &v38);
			struct mirth_mirth_zaMirth* v40;
			struct mirth_c99_zaC99Branch* v41;
			struct mirth_c99_zaC99Value* v42;
			mw_mirth_c99_zaC99Branch_popzevaluezelabelzx(v37, v38, v39, v35, &v40, &v41, &v42);
			struct mirth_mirth_zaMirth* v43;
			struct mirth_c99_zaC99Branch* v44;
			mw_mirth_c99_exposezestackzetypezx(v40, v41, v36, &v43, &v44);
			struct mirth_mirth_zaMirth* v45;
			struct mirth_c99_zaC99Branch* v46;
			mw_mirth_c99_pushzevaluezelabelzx(v43, v44, v35, v42, &v45, &v46);
			branch_zaC99Branch_9 = v46;
			branch_zaMirth_8 = v45;
		} break;
		case mirth_type_StackType_WithLabel: {
			struct mirth_type_Type v47;
			uint64_t v48;
			struct mirth_type_StackType v49 = mtp_mirth_type_StackType_WithLabel(v7, &v47, &v48);
			struct mirth_mirth_zaMirth* v50;
			struct mirth_c99_zaC99Branch* v51;
			struct mirth_c99_C99ReprType v52 = mw_mirth_c99_zaC99Branch_resourcezetozec99zerepr(v6, in_zaC99Branch_2, v47, &v50, &v51);
			struct mirth_mirth_zaMirth* v53;
			struct mirth_c99_zaC99Branch* v54;
			struct mirth_c99_zaC99Resource* v55;
			mw_mirth_c99_zaC99Branch_popzeresourcezelabelzx(v50, v51, v52, v48, &v53, &v54, &v55);
			struct mirth_mirth_zaMirth* v56;
			struct mirth_c99_zaC99Branch* v57;
			mw_mirth_c99_exposezestackzetypezx(v53, v54, v49, &v56, &v57);
			struct mirth_mirth_zaMirth* v58;
			struct mirth_c99_zaC99Branch* v59;
			mw_mirth_c99_pushzeresourcezelabelzx(v56, v57, v48, v55, &v58, &v59);
			branch_zaC99Branch_9 = v59;
			branch_zaMirth_8 = v58;
		} break;
		default: {
			decref(MK_mirth_type_StackType(v7));
			branch_zaC99Branch_9 = in_zaC99Branch_2;
			branch_zaMirth_8 = v6;
		} break;
	}
	*out_zaC99Branch_5 = branch_zaC99Branch_9;
	*out_zaMirth_4 = branch_zaMirth_8;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %r9, %r14
movq %r8, %rbx
movq %rsi, %r15
leaq -0x48(%rbp), %rax
movl %edx, %esi
movq %rcx, %rdx
movq %rax, %rcx
callq 0x37fe3
leal -0x5(%rax), %ecx
cmpl $0x3, %ecx
ja 0xdd39f
movq %r14, -0x50(%rbp)
movq %rbx, -0x58(%rbp)
leaq 0x34b4(%rip), %rax      # 0xe0590
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq -0x90(%rbp), %rbx
movq %rdx, %rdi
movq %rbx, %rsi
callq 0x38125
movl %eax, %r12d
movq %rdx, %r13
movq -0x48(%rbp), %rdi
movl (%rbx), %esi
movq 0x8(%rbx), %rdx
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0x9beab
movq %rdx, %rcx
movq (%rbx), %rdi
subq $0x8, %rsp
leaq -0x38(%rbp), %r10
leaq -0x40(%rbp), %rbx
leaq -0x68(%rbp), %r14
movq %r15, %rsi
movl %eax, %edx
movq %rbx, %r8
movq %r14, %r9
pushq %r10
callq 0xaff57
addq $0x10, %rsp
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0x30(%rbp), %rbx
leaq -0x60(%rbp), %r14
movl %r12d, %edx
movq %r13, %rcx
movq %rbx, %r8
movq %r14, %r9
callq 0xdd096
movq (%rbx), %r12
movq (%r14), %r15
leaq -0x38(%rbp), %rax
movq (%rax), %rdx
movl 0x8(%r15), %edi
movq 0x10(%r15), %rsi
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0xae64a
jmp 0xdd37a
leaq -0x90(%rbp), %rbx
movq %rdx, %rdi
movq %rbx, %rsi
callq 0x381ac
movl %eax, %r12d
movq %rdx, %r13
movq -0x48(%rbp), %rdi
movl (%rbx), %esi
movq 0x8(%rbx), %rdx
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0x9beab
movq %rdx, %rcx
movq (%rbx), %rdi
subq $0x8, %rsp
leaq -0x38(%rbp), %r10
leaq -0x40(%rbp), %rbx
leaq -0x68(%rbp), %r14
movq %r15, %rsi
movl %eax, %edx
movq %rbx, %r8
movq %r14, %r9
pushq %r10
callq 0xb0549
addq $0x10, %rsp
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0x30(%rbp), %rbx
leaq -0x60(%rbp), %r14
movl %r12d, %edx
movq %r13, %rcx
movq %rbx, %r8
movq %r14, %r9
callq 0xdd096
movq (%rbx), %r12
movq (%r14), %r15
leaq -0x38(%rbp), %rax
movq (%rax), %rdx
movl 0x8(%r15), %edi
movq 0x10(%r15), %rsi
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0xae79d
jmp 0xdd37a
leaq -0x90(%rbp), %rbx
leaq -0x40(%rbp), %rax
movq %rdx, %rdi
movq %rbx, %rsi
movq %rax, %rdx
movq %rax, %r14
callq 0x382d7
movl %eax, %r13d
movq %rdx, %r12
movq -0x48(%rbp), %rdi
movl (%rbx), %esi
movq 0x8(%rbx), %rdx
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0x9beab
movq %rdx, %rcx
movq (%rbx), %rdi
movq (%r14), %r8
leaq -0x30(%rbp), %r10
leaq -0x38(%rbp), %r14
leaq -0x68(%rbp), %rbx
movq %r15, %rsi
movl %eax, %edx
movq %rbx, %r9
pushq %r10
pushq %r14
callq 0xafaf2
addq $0x10, %rsp
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0x60(%rbp), %rbx
leaq -0x80(%rbp), %r14
movl %r13d, %edx
movq %r12, %rcx
movq %rbx, %r8
movq %r14, %r9
callq 0xdd096
movq (%rbx), %r12
movq (%r14), %r15
leaq -0x40(%rbp), %rax
movq (%rax), %rcx
leaq -0x30(%rbp), %rax
movq (%rax), %rdx
movl 0x8(%r15), %edi
movq 0x10(%r15), %rsi
leaq -0x78(%rbp), %rbx
movq %rbx, %r8
callq 0xae80b
jmp 0xdd37a
leaq -0x90(%rbp), %rbx
leaq -0x40(%rbp), %rax
movq %rdx, %rdi
movq %rbx, %rsi
movq %rax, %rdx
movq %rax, %r14
callq 0x38233
movl %eax, %r13d
movq %rdx, %r12
movq -0x48(%rbp), %rdi
movl (%rbx), %esi
movq 0x8(%rbx), %rdx
leaq -0x78(%rbp), %rbx
movq %rbx, %rcx
callq 0x9beab
movq %rdx, %rcx
movq (%rbx), %rdi
movq (%r14), %r8
leaq -0x30(%rbp), %r10
leaq -0x38(%rbp), %r14
leaq -0x68(%rbp), %rbx
movq %r15, %rsi
movl %eax, %edx
movq %rbx, %r9
pushq %r10
pushq %r14
callq 0xaf68d
addq $0x10, %rsp
movq (%rbx), %rdi
movq (%r14), %rsi
leaq -0x60(%rbp), %rbx
leaq -0x80(%rbp), %r14
movl %r13d, %edx
movq %r12, %rcx
movq %rbx, %r8
movq %r14, %r9
callq 0xdd096
movq (%rbx), %r12
movq (%r14), %r15
leaq -0x40(%rbp), %rax
movq (%rax), %rcx
leaq -0x30(%rbp), %rax
movq (%rax), %rdx
movl 0x8(%r15), %edi
movq 0x10(%r15), %rsi
leaq -0x78(%rbp), %rbx
movq %rbx, %r8
callq 0xae6b8
movups (%rbx), %xmm0
movups %xmm0, 0x8(%r15)
movq -0x58(%rbp), %rbx
movq -0x50(%rbp), %r14
movq %r15, (%r14)
movq %r12, (%rbx)
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rdx, %rcx
sete %sil
testb $0x3, %dl
setne %dil
orb %sil, %dil
jne 0xdd3d6
decl (%rcx)
jne 0xdd3d6
shlq $0x30, %rax
orq %rdx, %rax
leaq 0x347f3(%rip), %rsi     # 0x111bc1
movq %rax, %rdi
callq 0xd13d
movq -0x48(%rbp), %r12
jmp 0xdd38a