// File: /workspace/github_c_makefile_star2_O0/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_c99_C99ReprType_needszerefcountingzy
static bool mw_mirth_c99_C99ReprType_needszerefcountingzy (struct mirth_mirth_zaMirth* in_zaMirth_1, struct mirth_c99_C99ReprType in_C99ReprType_2, struct mirth_mirth_zaMirth* *out_zaMirth_3) {
	struct mirth_mirth_zaMirth* branch_zaMirth_5;
	bool branch_Bool_6;
	switch ((in_C99ReprType_2).tag) {
		case mirth_c99_C99ReprType_VAL: {
			bool v7 = true;
			branch_Bool_6 = v7;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_STR: {
			bool v8 = true;
			branch_Bool_6 = v8;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_ARR: {
			bool v9 = true;
			branch_Bool_6 = v9;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_TUP: {
			bool v10 = true;
			branch_Bool_6 = v10;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Int: {
			bool v11 = true;
			branch_Bool_6 = v11;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Nat: {
			bool v12 = true;
			branch_Bool_6 = v12;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Table: {
			uint64_t v13 = mtp_mirth_c99_C99ReprType_Table(in_C99ReprType_2);
			bool v14 = false;
			branch_Bool_6 = v14;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Data: {
			uint64_t v15 = mtp_mirth_c99_C99ReprType_Data(in_C99ReprType_2);
			struct mirth_mirth_zaMirth* v16;
			struct mirth_c99_C99DataRepr v17 = mw_mirth_data_Data_c99zerepr(in_zaMirth_1, v15, &v16);
			struct mirth_mirth_zaMirth* v18;
			bool v19 = mw_mirth_c99_C99DataRepr_needzerefcountingzy(v16, v17, &v18);
			branch_Bool_6 = v19;
			branch_zaMirth_5 = v18;
		} break;
		case mirth_c99_C99ReprType_Void: {
			bool v20 = false;
			branch_Bool_6 = v20;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I64: {
			bool v21 = false;
			branch_Bool_6 = v21;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I32: {
			bool v22 = false;
			branch_Bool_6 = v22;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I16: {
			bool v23 = false;
			branch_Bool_6 = v23;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I8: {
			bool v24 = false;
			branch_Bool_6 = v24;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U64: {
			bool v25 = false;
			branch_Bool_6 = v25;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U32: {
			bool v26 = false;
			branch_Bool_6 = v26;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U16: {
			bool v27 = false;
			branch_Bool_6 = v27;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U8: {
			bool v28 = false;
			branch_Bool_6 = v28;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_F64: {
			bool v29 = false;
			branch_Bool_6 = v29;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_F32: {
			bool v30 = false;
			branch_Bool_6 = v30;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Bool: {
			bool v31 = false;
			branch_Bool_6 = v31;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_PTR: {
			bool v32 = false;
			branch_Bool_6 = v32;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_FNPTR: {
			bool v33 = false;
			branch_Bool_6 = v33;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		default: {
			do_panic(str_make("unexpected fallthrough in match\n", 32));
		}
	}
	*out_zaMirth_3 = branch_zaMirth_5;
	return branch_Bool_6;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl %esi, -0x10(%rbp)
movq %rdx, -0x8(%rbp)
movq %rdi, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl -0x10(%rbp), %eax
movq %rax, -0x80(%rbp)
subq $0x15, %rax
ja 0x24cc93
movq -0x80(%rbp), %rax
leaq 0x1067fe(%rip), %rcx    # 0x353224
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x1, -0x2a(%rbp)
movb -0x2a(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x1, -0x2b(%rbp)
movb -0x2b(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x1, -0x2c(%rbp)
movb -0x2c(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x1, -0x2d(%rbp)
movb -0x2d(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x1, -0x2e(%rbp)
movb -0x2e(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x1, -0x2f(%rbp)
movb -0x2f(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movl -0x10(%rbp), %edi
movq -0x8(%rbp), %rsi
callq 0x24ccd0
movq %rax, -0x38(%rbp)
movb $0x0, -0x39(%rbp)
movb -0x39(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movl -0x10(%rbp), %edi
movq -0x8(%rbp), %rsi
callq 0x24cd20
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x22e4f0
movl %eax, -0x60(%rbp)
movq %rdx, -0x58(%rbp)
movq -0x50(%rbp), %rdi
movl -0x60(%rbp), %esi
movq -0x58(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0x24cd70
andb $0x1, %al
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6a(%rbp)
movb -0x6a(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6b(%rbp)
movb -0x6b(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6c(%rbp)
movb -0x6c(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6d(%rbp)
movb -0x6d(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6e(%rbp)
movb -0x6e(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x6f(%rbp)
movb -0x6f(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x70(%rbp)
movb -0x70(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x71(%rbp)
movb -0x71(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x72(%rbp)
movb -0x72(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x73(%rbp)
movb -0x73(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x74(%rbp)
movb -0x74(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x75(%rbp)
movb -0x75(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x76(%rbp)
movb -0x76(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
movb $0x0, -0x77(%rbp)
movb -0x77(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x24ccac
leaq 0x1071e7(%rip), %rdi    # 0x353e81
movl $0x20, %esi
callq 0xb6c0
movq %rax, %rdi
callq 0xc620
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movb -0x29(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)