// File: /workspace/github_c_makefile_star2_O1/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_c99_C99ReprType_underlyingzec99zetype
static STR* mw_mirth_c99_C99ReprType_underlyingzec99zetype (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;
	STR* branch_Str_6;
	switch ((in_C99ReprType_2).tag) {
		case mirth_c99_C99ReprType_Void: {
			STR* v7;
			STRLIT(v7, "void", 4);
			branch_Str_6 = v7;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_VAL: {
			STR* v8;
			STRLIT(v8, "VAL", 3);
			branch_Str_6 = v8;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_STR: {
			STR* v9;
			STRLIT(v9, "STR*", 4);
			branch_Str_6 = v9;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_ARR: {
			STR* v10;
			STRLIT(v10, "ARR*", 4);
			branch_Str_6 = v10;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Int: {
			STR* v11;
			STRLIT(v11, "INT", 3);
			branch_Str_6 = v11;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Nat: {
			STR* v12;
			STRLIT(v12, "INT", 3);
			branch_Str_6 = v12;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I64: {
			STR* v13;
			STRLIT(v13, "int64_t", 7);
			branch_Str_6 = v13;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I32: {
			STR* v14;
			STRLIT(v14, "int32_t", 7);
			branch_Str_6 = v14;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I16: {
			STR* v15;
			STRLIT(v15, "int16_t", 7);
			branch_Str_6 = v15;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_I8: {
			STR* v16;
			STRLIT(v16, "int8_t", 6);
			branch_Str_6 = v16;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U64: {
			STR* v17;
			STRLIT(v17, "uint64_t", 8);
			branch_Str_6 = v17;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U32: {
			STR* v18;
			STRLIT(v18, "uint32_t", 8);
			branch_Str_6 = v18;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U16: {
			STR* v19;
			STRLIT(v19, "uint16_t", 8);
			branch_Str_6 = v19;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_U8: {
			STR* v20;
			STRLIT(v20, "uint8_t", 7);
			branch_Str_6 = v20;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_F64: {
			STR* v21;
			STRLIT(v21, "double", 6);
			branch_Str_6 = v21;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_F32: {
			STR* v22;
			STRLIT(v22, "float", 5);
			branch_Str_6 = v22;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Bool: {
			STR* v23;
			STRLIT(v23, "bool", 4);
			branch_Str_6 = v23;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_PTR: {
			STR* v24;
			STRLIT(v24, "void*", 5);
			branch_Str_6 = v24;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_FNPTR: {
			STR* v25;
			STRLIT(v25, "FNPTR", 5);
			branch_Str_6 = v25;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_TUP: {
			STR* v26;
			STRLIT(v26, "PTUP", 4);
			branch_Str_6 = v26;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Table: {
			uint64_t v27 = mtp_mirth_c99_C99ReprType_Table(in_C99ReprType_2);
			STR* v28;
			STRLIT(v28, "uint64_t", 8);
			branch_Str_6 = v28;
			branch_zaMirth_5 = in_zaMirth_1;
		} break;
		case mirth_c99_C99ReprType_Data: {
			uint64_t v29 = mtp_mirth_c99_C99ReprType_Data(in_C99ReprType_2);
			struct mirth_mirth_zaMirth* v30;
			struct mirth_c99_C99DataRepr v31 = mw_mirth_data_Data_c99zerepr(in_zaMirth_1, v29, &v30);
			struct mirth_mirth_zaMirth* v32;
			STR* v33 = mw_mirth_c99_C99DataRepr_underlyingzec99zetype(v30, v31, &v32);
			branch_Str_6 = v33;
			branch_zaMirth_5 = v32;
		} break;
		default: {
			do_panic(str_make("unexpected fallthrough in match\n", 32));
		}
	}
	*out_zaMirth_3 = branch_zaMirth_5;
	return branch_Str_6;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
cmpl $0x15, %esi
ja 0xa8bf2
movq %rcx, %rbx
movq %rdi, %r14
movl %esi, %eax
leaq 0x3b5c8(%rip), %rcx     # 0xe3bdc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x1072ecb(%rip)   # 0x111b4f0
jne 0xa8647
movl $0x4, %edi
callq 0xf9f7
movq $0x4, 0x10(%rax)
movl $0x64696f76, 0x18(%rax) # imm = 0x64696F76
movq %rax, 0x1072ea9(%rip)   # 0x111b4f0
movq 0x1072ea2(%rip), %rax   # 0x111b4f0
jmp 0xa8b43
cmpq $0x0, 0x1072f0d(%rip)   # 0x111b568
jne 0xa8681
movl $0x5, %edi
callq 0xf9f7
movq $0x5, 0x10(%rax)
movl $0x616f6c66, 0x18(%rax) # imm = 0x616F6C66
movb $0x74, 0x1c(%rax)
movq %rax, 0x1072ee7(%rip)   # 0x111b568
movq 0x1072ee0(%rip), %rax   # 0x111b568
jmp 0xa8b43
cmpq $0x0, 0x1072ec3(%rip)   # 0x111b558
jne 0xa86be
movl $0x7, %edi
callq 0xf9f7
movq $0x7, 0x10(%rax)
movl $0x746e6975, 0x18(%rax) # imm = 0x746E6975
movl $0x745f3874, 0x1b(%rax) # imm = 0x745F3874
movq %rax, 0x1072e9a(%rip)   # 0x111b558
movq 0x1072e93(%rip), %rax   # 0x111b558
jmp 0xa8b43
cmpq $0x0, 0x1072e6e(%rip)   # 0x111b540
jne 0xa86fb
movl $0x8, %edi
callq 0xf9f7
movq $0x8, 0x10(%rax)
movabsq $0x745f3436746e6975, %rcx # imm = 0x745F3436746E6975
movq %rcx, 0x18(%rax)
movq %rax, 0x1072e45(%rip)   # 0x111b540
movq 0x1072e3e(%rip), %rax   # 0x111b540
jmp 0xa8b43
cmpq $0x0, 0x1072e79(%rip)   # 0x111b588
jne 0xa8731
movl $0x4, %edi
callq 0xf9f7
movq $0x4, 0x10(%rax)
movl $0x50555450, 0x18(%rax) # imm = 0x50555450
movq %rax, 0x1072e57(%rip)   # 0x111b588
movq 0x1072e50(%rip), %rax   # 0x111b588
jmp 0xa8b43
cmpq $0x0, 0x1072e03(%rip)   # 0x111b548
jne 0xa876e
movl $0x8, %edi
callq 0xf9f7
movq $0x8, 0x10(%rax)
movabsq $0x745f3233746e6975, %rcx # imm = 0x745F3233746E6975
movq %rcx, 0x18(%rax)
movq %rax, 0x1072dda(%rip)   # 0x111b548
movq 0x1072dd3(%rip), %rax   # 0x111b548
jmp 0xa8b43
cmpq $0x0, 0x1072dae(%rip)   # 0x111b530
jne 0xa87ab
movl $0x7, %edi
callq 0xf9f7
movq $0x7, 0x10(%rax)
movl $0x31746e69, 0x18(%rax) # imm = 0x31746E69
movl $0x745f3631, 0x1b(%rax) # imm = 0x745F3631
movq %rax, 0x1072d85(%rip)   # 0x111b530
movq 0x1072d7e(%rip), %rax   # 0x111b530
jmp 0xa8b43
cmpq $0x0, 0x1072d41(%rip)   # 0x111b500
jne 0xa87e1
movl $0x4, %edi
callq 0xf9f7
movq $0x4, 0x10(%rax)
movl $0x2a525453, 0x18(%rax) # imm = 0x2A525453
movq %rax, 0x1072d1f(%rip)   # 0x111b500
movq 0x1072d18(%rip), %rax   # 0x111b500
jmp 0xa8b43
cmpq $0x0, 0x1072d6b(%rip)   # 0x111b560
jne 0xa881d
movl $0x6, %edi
callq 0xf9f7
movq $0x6, 0x10(%rax)
movl $0x62756f64, 0x18(%rax) # imm = 0x62756F64
movw $0x656c, 0x1c(%rax)     # imm = 0x656C
movq %rax, 0x1072d43(%rip)   # 0x111b560
movq 0x1072d3c(%rip), %rax   # 0x111b560
jmp 0xa8b43
cmpq $0x0, 0x1072cd7(%rip)   # 0x111b508
jne 0xa8853
movl $0x4, %edi
callq 0xf9f7
movq $0x4, 0x10(%rax)
movl $0x2a525241, 0x18(%rax) # imm = 0x2A525241
movq %rax, 0x1072cb5(%rip)   # 0x111b508
movq 0x1072cae(%rip), %rax   # 0x111b508
jmp 0xa8b43
cmpq $0x0, 0x1072cb9(%rip)   # 0x111b520
jne 0xa8890
movl $0x7, %edi
callq 0xf9f7
movq $0x7, 0x10(%rax)
movl $0x36746e69, 0x18(%rax) # imm = 0x36746E69
movl $0x745f3436, 0x1b(%rax) # imm = 0x745F3436
movq %rax, 0x1072c90(%rip)   # 0x111b520
movq 0x1072c89(%rip), %rax   # 0x111b520
jmp 0xa8b43
cmpq $0x0, 0x1072c54(%rip)   # 0x111b4f8
jne 0xa88c9
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x4156, 0x18(%rax)     # imm = 0x4156
movb $0x4c, 0x1a(%rax)
movq %rax, 0x1072c2f(%rip)   # 0x111b4f8
movq 0x1072c28(%rip), %rax   # 0x111b4f8
jmp 0xa8b43
cmpq $0x0, 0x1072c93(%rip)   # 0x111b570
jne 0xa88ff
movl $0x4, %edi
callq 0xf9f7
movq $0x4, 0x10(%rax)
movl $0x6c6f6f62, 0x18(%rax) # imm = 0x6C6F6F62
movq %rax, 0x1072c71(%rip)   # 0x111b570
movq 0x1072c6a(%rip), %rax   # 0x111b570
jmp 0xa8b43
decl (%rdx)
jne 0xa8917
movq %rdx, %rdi
callq 0x5030
cmpq $0x0, 0x1072c71(%rip)   # 0x111b590
jne 0xa8948
movl $0x8, %edi
callq 0xf9f7
movq $0x8, 0x10(%rax)
movabsq $0x745f3436746e6975, %rcx # imm = 0x745F3436746E6975
movq %rcx, 0x18(%rax)
movq %rax, 0x1072c48(%rip)   # 0x111b590
movq 0x1072c41(%rip), %rax   # 0x111b590
jmp 0xa8b43
cmpq $0x0, 0x1072bb4(%rip)   # 0x111b510
jne 0xa8981
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x4e49, 0x18(%rax)     # imm = 0x4E49
movb $0x54, 0x1a(%rax)
movq %rax, 0x1072b8f(%rip)   # 0x111b510
movq 0x1072b88(%rip), %rax   # 0x111b510
jmp 0xa8b43
movq 0x8(%rdx), %r15
decl (%rdx)
jne 0xa899d
movq %rdx, %rdi
callq 0x5030
leaq -0x30(%rbp), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x96e7c
cmpl $0x4, %eax
ja 0xa8bf2
movq -0x30(%rbp), %r14
movl %eax, %eax
leaq 0x3b272(%rip), %rcx     # 0xe3c34
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rdx, %rdi
callq 0x9f9b7
movq %rax, %rdi
callq 0xa9e8b
movq %rax, %rdi
movq %rdx, %rsi
callq 0x942c
jmp 0xa8b60
cmpq $0x0, 0x1072b5d(%rip)   # 0x111b550
jne 0xa8a1c
movl $0x8, %edi
callq 0xf9f7
movq $0x8, 0x10(%rax)
movabsq $0x745f3631746e6975, %rcx # imm = 0x745F3631746E6975
movq %rcx, 0x18(%rax)
movq %rax, 0x1072b34(%rip)   # 0x111b550
movq 0x1072b2d(%rip), %rax   # 0x111b550
jmp 0xa8b43
cmpq $0x0, 0x1072ae8(%rip)   # 0x111b518
jne 0xa8a55
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x4e49, 0x18(%rax)     # imm = 0x4E49
movb $0x54, 0x1a(%rax)
movq %rax, 0x1072ac3(%rip)   # 0x111b518
movq 0x1072abc(%rip), %rax   # 0x111b518
jmp 0xa8b43
cmpq $0x0, 0x1072b0f(%rip)   # 0x111b578
jne 0xa8a8f
movl $0x5, %edi
callq 0xf9f7
movq $0x5, 0x10(%rax)
movl $0x64696f76, 0x18(%rax) # imm = 0x64696F76
movb $0x2a, 0x1c(%rax)
movq %rax, 0x1072ae9(%rip)   # 0x111b578
movq 0x1072ae2(%rip), %rax   # 0x111b578
jmp 0xa8b43
cmpq $0x0, 0x1072a95(%rip)   # 0x111b538
jne 0xa8acb
movl $0x6, %edi
callq 0xf9f7
movq $0x6, 0x10(%rax)
movl $0x38746e69, 0x18(%rax) # imm = 0x38746E69
movw $0x745f, 0x1c(%rax)     # imm = 0x745F
movq %rax, 0x1072a6d(%rip)   # 0x111b538
movq 0x1072a66(%rip), %rax   # 0x111b538
jmp 0xa8b43
cmpq $0x0, 0x1072a4c(%rip)   # 0x111b528
jne 0xa8b05
movl $0x7, %edi
callq 0xf9f7
movq $0x7, 0x10(%rax)
movl $0x33746e69, 0x18(%rax) # imm = 0x33746E69
movl $0x745f3233, 0x1b(%rax) # imm = 0x745F3233
movq %rax, 0x1072a23(%rip)   # 0x111b528
movq 0x1072a1c(%rip), %rax   # 0x111b528
jmp 0xa8b43
cmpq $0x0, 0x1072a6a(%rip)   # 0x111b580
jne 0xa8b3c
movl $0x5, %edi
callq 0xf9f7
movq $0x5, 0x10(%rax)
movl $0x54504e46, 0x18(%rax) # imm = 0x54504E46
movb $0x52, 0x1c(%rax)
movq %rax, 0x1072a44(%rip)   # 0x111b580
movq 0x1072a3d(%rip), %rax   # 0x111b580
movabsq $0xfffffffffffc, %rcx   # imm = 0xFFFFFFFFFFFC
andq %rax, %rcx
sete %dl
testb $0x3, %al
setne %sil
orb %dl, %sil
jne 0xa8b60
incl (%rcx)
movq %r14, (%rbx)
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rdi
callq 0x9fa68
leaq -0x28(%rbp), %r15
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xa3874
jmp 0xa8bc2
movq %rdx, %rdi
callq 0x9f9f2
leaq -0x28(%rbp), %r15
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xa9fe8
jmp 0xa8bc2
movq %rdx, %rdi
callq 0x9fa2d
leaq -0x28(%rbp), %r15
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xa7d5e
movq (%r15), %r14
jmp 0xa8b60
movq 0x8(%rdx), %r15
decl (%rdx)
jne 0xa8bd7
movq %rdx, %rdi
callq 0x5030
leaq -0x28(%rbp), %r12
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0xa9f0f
movq (%r12), %r14
jmp 0xa8b60
movl $0x20, %edi
callq 0xf9f7
movq $0x20, 0x10(%rax)
movups 0x3bb42(%rip), %xmm0    # 0xe474d
movups %xmm0, 0x18(%rax)
movups 0x3bb47(%rip), %xmm0    # 0xe475d
movups %xmm0, 0x28(%rax)
movq %rax, %rdi
callq 0x95a5