// File: /workspace/github_c_makefile_star2_O2/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_c99_C99ReprType_getzedatazetag
static STR* mw_mirth_c99_C99ReprType_getzedatazetag (struct mirth_mirth_zaMirth* in_zaMirth_1, STR* in_Str_2, struct mirth_c99_C99ReprType in_C99ReprType_3, struct mirth_mirth_zaMirth* *out_zaMirth_4) {
	struct mirth_mirth_zaMirth* branch_zaMirth_6;
	STR* branch_Str_7;
	switch ((in_C99ReprType_3).tag) {
		case mirth_c99_C99ReprType_I64: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I32: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I16: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I8: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U64: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U32: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U16: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U8: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Bool: {
			branch_Str_7 = in_Str_2;
			branch_zaMirth_6 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Data: {
			uint64_t v8 = mtp_mirth_c99_C99ReprType_Data(in_C99ReprType_3);
			struct mirth_mirth_zaMirth* v9;
			struct mirth_c99_C99DataRepr v10 = mw_mirth_data_Data_c99zerepr(in_zaMirth_1, v8, &v9);
			struct mirth_mirth_zaMirth* v11;
			STR* v12 = mw_mirth_c99_C99DataRepr_getzedatazetag(v9, in_Str_2, v10, &v11);
			branch_Str_7 = v12;
			branch_zaMirth_6 = v11;
		} break;
		case mirth_c99_C99ReprType_Nat: {
			STR* v13;
			STRLIT(v13, "get-data-tag on Nat", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v13);
		} break;
		case mirth_c99_C99ReprType_Int: {
			STR* v15;
			STRLIT(v15, "get-data-tag on Int", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v15);
		} break;
		case mirth_c99_C99ReprType_Table: {
			uint64_t v17 = mtp_mirth_c99_C99ReprType_Table(in_C99ReprType_3);
			STR* v18;
			STRLIT(v18, "get-data-tag on Table", 21);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v18);
		} break;
		case mirth_c99_C99ReprType_Void: {
			STR* v20;
			STRLIT(v20, "get-data-tag on Void", 20);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v20);
		} break;
		case mirth_c99_C99ReprType_VAL: {
			STR* v22;
			STRLIT(v22, "get-data-tag on VAL", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v22);
		} break;
		case mirth_c99_C99ReprType_STR: {
			STR* v24;
			STRLIT(v24, "get-data-tag on STR", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v24);
		} break;
		case mirth_c99_C99ReprType_ARR: {
			STR* v26;
			STRLIT(v26, "get-data-tag on ARR", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v26);
		} break;
		case mirth_c99_C99ReprType_TUP: {
			STR* v28;
			STRLIT(v28, "get-data-tag on TUP", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v28);
		} break;
		case mirth_c99_C99ReprType_PTR: {
			STR* v30;
			STRLIT(v30, "get-data-tag on PTR", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v30);
		} break;
		case mirth_c99_C99ReprType_FNPTR: {
			STR* v32;
			STRLIT(v32, "get-data-tag on FNPTR", 21);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v32);
		} break;
		case mirth_c99_C99ReprType_F64: {
			STR* v34;
			STRLIT(v34, "get-data-tag on F64", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v34);
		} break;
		case mirth_c99_C99ReprType_F32: {
			STR* v36;
			STRLIT(v36, "get-data-tag on F32", 19);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v36);
		} break;
		default: {
			STR* v38;
			STRLIT(v38, "get-data-tag on unknown repr", 28);
			mw_mirth_mirth_zaMirth_fatalzeerrorzx(in_zaMirth_1, v38);
		} break;
	}
	*out_zaMirth_4 = branch_zaMirth_6;
	return branch_Str_7;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
cmpl $0x15, %edx
ja 0xcfd2c
movq %r8, %r14
movq %rsi, %r15
movl %edx, %eax
leaq 0x4e2f(%rip), %rdx      # 0xd4580
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movq %rbx, (%r14)
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rcx, %rdi
callq 0x97e24
leaq -0x38(%rbp), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8cba8
cmpl $0x4, %eax
ja 0xcfd76
movq -0x38(%rbp), %rbx
movl %eax, %eax
leaq 0x4e3c(%rip), %rcx      # 0xd45d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movabsq $0xfffffffffffc, %r12   # imm = 0xFFFFFFFFFFFC
movq %rdx, %rdi
callq 0x94a52
movq %r12, %rsi
movq %rax, %r13
movq %rax, %r12
movq %r15, %rax
andq %rsi, %rax
sete %cl
testb $0x3, %r15b
setne %dl
orb %cl, %dl
jne 0xcf7f1
decl (%rax)
jne 0xcf7f1
leaq 0x3897a(%rip), %rsi     # 0x108159
movq %r15, %rdi
callq 0xce94
movabsq $0xfffffffffffc, %rsi   # imm = 0xFFFFFFFFFFFC
movq 0x8(%r12), %r15
andq %rsi, %r13
sete %al
testb $0x3, %r12b
setne %cl
orb %al, %cl
jne 0xcf81c
decl (%r13)
jne 0xcf81c
leaq 0x3a5ad(%rip), %rsi     # 0x109dc1
movq %r12, %rdi
callq 0xce94
leaq -0x30(%rbp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xcfd8d
movq %rax, %rbx
movq 0x1040db3(%rip), %rsi   # 0x11105e8
testq %rsi, %rsi
jne 0xcfacf
leaq 0x1e9c2(%rip), %rdi     # 0xee207
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040d91(%rip)   # 0x11105e8
jmp 0xcfacf
movabsq $0xfffffffffffc, %r13   # imm = 0xFFFFFFFFFFFC
movq %rdx, %rdi
callq 0x94b20
movq %rax, %rcx
andq %r13, %rcx
sete %dl
testb $0x3, %al
setne %sil
orb %dl, %sil
jne 0xcf895
decl (%rcx)
jne 0xcf895
leaq 0x3a654(%rip), %rsi     # 0x109ee1
movq %rax, %rdi
callq 0xce94
movq 0x1040d74(%rip), %r12   # 0x1110610
testq %r12, %r12
jne 0xcf8b9
leaq 0xce4d(%rip), %rdi      # 0xdc6f5
xorl %esi, %esi
callq 0x8a21
movq %rax, %r12
movq %rax, 0x1040d57(%rip)   # 0x1110610
movq %r12, %rax
andq %r13, %rax
sete %cl
testb $0x3, %r12b
setne %dl
orb %cl, %dl
jne 0xcf8cf
incl (%rax)
movq 0x1040d42(%rip), %rsi   # 0x1110618
testq %rsi, %rsi
jne 0xcf8f4
leaq 0x1e994(%rip), %rdi     # 0xee276
pushq $0x1
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040d24(%rip)   # 0x1110618
movq %rsi, %rax
andq %r13, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0xcf90a
incl (%rax)
movq %r12, %rdi
callq 0xd8b0
movq %rax, %rdi
movq %r15, %rsi
callq 0xd8b0
movq %rax, %r15
movq 0x1040cf9(%rip), %rsi   # 0x1110620
testq %rsi, %rsi
jne 0xcf945
leaq 0x1f2fc(%rip), %rdi     # 0xeec2f
pushq $0x5
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040cdb(%rip)   # 0x1110620
andq %rsi, %r13
sete %al
testb $0x3, %sil
setne %cl
orb %al, %cl
jne 0xcf95a
incl (%r13)
movq %r15, %rdi
callq 0xd8b0
movq %rax, %r15
jmp 0xcf75a
movabsq $0xfffffffffffc, %r12   # imm = 0xFFFFFFFFFFFC
movq %rdx, %rdi
callq 0x94aaa
movq %r12, %rsi
movq %rax, %r13
movq %rax, %r12
movq %r15, %rax
andq %rsi, %rax
sete %cl
testb $0x3, %r15b
setne %dl
orb %cl, %dl
jne 0xcf9b6
decl (%rax)
jne 0xcf9b6
leaq 0x387b5(%rip), %rsi     # 0x108159
movq %r15, %rdi
callq 0xce94
movabsq $0xfffffffffffc, %rsi   # imm = 0xFFFFFFFFFFFC
movq 0x8(%r12), %r15
andq %rsi, %r13
sete %al
testb $0x3, %r12b
setne %cl
orb %al, %cl
jne 0xcf9e1
decl (%r13)
jne 0xcf9e1
leaq 0x3a478(%rip), %rsi     # 0x109e51
movq %r12, %rdi
callq 0xce94
leaq -0x30(%rbp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xcfd8d
movq %rax, %rbx
movq 0x1040c06(%rip), %rsi   # 0x1110600
testq %rsi, %rsi
jne 0xcfacf
leaq 0x1e7fd(%rip), %rdi     # 0xee207
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040be4(%rip)   # 0x1110600
jmp 0xcfacf
movabsq $0xfffffffffffc, %r12   # imm = 0xFFFFFFFFFFFC
movq %rdx, %rdi
callq 0x94ae5
movq %r12, %rsi
movq %rax, %r13
movq %rax, %r12
movq %r15, %rax
andq %rsi, %rax
sete %cl
testb $0x3, %r15b
setne %dl
orb %cl, %dl
jne 0xcfa6d
decl (%rax)
jne 0xcfa6d
leaq 0x386fe(%rip), %rsi     # 0x108159
movq %r15, %rdi
callq 0xce94
movabsq $0xfffffffffffc, %rsi   # imm = 0xFFFFFFFFFFFC
movq 0x8(%r12), %r15
andq %rsi, %r13
sete %al
testb $0x3, %r12b
setne %cl
orb %al, %cl
jne 0xcfa98
decl (%r13)
jne 0xcfa98
leaq 0x3a409(%rip), %rsi     # 0x109e99
movq %r12, %rdi
callq 0xce94
leaq -0x30(%rbp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xcfd8d
movq %rax, %rbx
movq 0x1040b57(%rip), %rsi   # 0x1110608
testq %rsi, %rsi
jne 0xcfacf
leaq 0x1e74a(%rip), %rdi     # 0xee207
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040b39(%rip)   # 0x1110608
movabsq $0xfffffffffffc, %rdx   # imm = 0xFFFFFFFFFFFC
andq %rsi, %rdx
sete %al
testb $0x3, %sil
setne %cl
orb %al, %cl
jne 0xcfaec
incl (%rdx)
movq %rbx, %rdi
callq 0xd8b0
movq %rax, %r15
movq -0x30(%rbp), %rbx
jmp 0xcf75a
movq %rdx, %rdi
callq 0x94a8d
jmp 0xcf75a
movq %rcx, %rdi
callq 0x97e07
movq 0x1040a74(%rip), %rsi   # 0x1110590
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1f019(%rip), %rdi     # 0xeeb45
pushq $0x15
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040a52(%rip)   # 0x1110590
jmp 0xcfd51
movq 0x1040a7e(%rip), %rsi   # 0x11105c8
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1f07a(%rip), %rdi     # 0xeebd4
pushq $0x15
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040a5c(%rip)   # 0x11105c8
jmp 0xcfd51
movq 0x1040a48(%rip), %rsi   # 0x11105c0
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1f038(%rip), %rdi     # 0xeebc0
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040a26(%rip)   # 0x11105c0
jmp 0xcfd51
movq 0x1040a32(%rip), %rsi   # 0x11105d8
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1f048(%rip), %rdi     # 0xeebfe
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040a10(%rip)   # 0x11105d8
jmp 0xcfd51
movq 0x10409fc(%rip), %rsi   # 0x11105d0
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1f006(%rip), %rdi     # 0xeebea
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x10409da(%rip)   # 0x11105d0
jmp 0xcfd51
movq 0x10409b6(%rip), %rsi   # 0x11105b8
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1ef9a(%rip), %rdi     # 0xeebac
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040994(%rip)   # 0x11105b8
jmp 0xcfd51
movq 0x1040978(%rip), %rsi   # 0x11105a8
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1ef44(%rip), %rdi     # 0xeeb84
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040956(%rip)   # 0x11105a8
jmp 0xcfd51
movq 0x104093a(%rip), %rsi   # 0x1110598
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1eeed(%rip), %rdi     # 0xeeb5b
pushq $0x14
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040918(%rip)   # 0x1110598
jmp 0xcfd51
movq 0x1040914(%rip), %rsi   # 0x11105a0
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1eed4(%rip), %rdi     # 0xeeb70
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x10408f2(%rip)   # 0x11105a0
jmp 0xcfd51
movq 0x10408f6(%rip), %rsi   # 0x11105b0
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1eece(%rip), %rdi     # 0xeeb98
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x10408d4(%rip)   # 0x11105b0
jmp 0xcfd51
movq 0x10408a3(%rip), %rsi   # 0x1110588
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1ee40(%rip), %rdi     # 0xeeb31
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040885(%rip)   # 0x1110588
jmp 0xcfd51
movq 0x1040874(%rip), %rsi   # 0x1110580
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1ee05(%rip), %rdi     # 0xeeb1d
pushq $0x13
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x1040856(%rip)   # 0x1110580
jmp 0xcfd51
movq 0x10408ad(%rip), %rsi   # 0x11105e0
testq %rsi, %rsi
jne 0xcfd51
leaq 0x1eed3(%rip), %rdi     # 0xeec12
pushq $0x1c
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x104088f(%rip)   # 0x11105e0
movabsq $0xfffffffffffc, %rax   # imm = 0xFFFFFFFFFFFC
andq %rsi, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0xcfd6e
incl (%rax)
movq %rbx, %rdi
callq 0x13deb
leaq 0x4a90(%rip), %rdi      # 0xd480d
pushq $0x20
popq %rsi
callq 0x8a21
movq %rax, %rdi
callq 0x8cc6