// File: /workspace/github_c_makefile_star2_O3/mirth-lang[P]mirth/bin/mirth1.c
// Function: mirth_type_Type_free
void mirth_type_Type_free (VAL v) {
	struct mirth_type_Type self = V_mirth_type_Type(v);
	switch (self.tag) {
		case mirth_type_Type_Error: break;
		case mirth_type_Type_Ignore: break;
		case mirth_type_Type_Prim: {
			free(self.ptr.Prim);
		} break;
		case mirth_type_Type_Meta: {
			free(self.ptr.Meta);
		} break;
		case mirth_type_Type_Hole: {
			free(self.ptr.Hole);
		} break;
		case mirth_type_Type_Var: {
			free(self.ptr.Var);
		} break;
		case mirth_type_Type_Table: {
			free(self.ptr.Table);
		} break;
		case mirth_type_Type_Data: {
			free(self.ptr.Data);
		} break;
		case mirth_type_Type_DataPartial: {
			decref(MK_mirth_data_DataPartial(self.ptr.DataPartial->mDataPartial));
			free(self.ptr.DataPartial);
		} break;
		case mirth_type_Type_Stack: {
			decref(MK_mirth_type_StackType(self.ptr.Stack->mStackType));
			free(self.ptr.Stack);
		} break;
		case mirth_type_Type_Arrow: {
			decref(MK_mirth_type_ArrowType(self.ptr.Arrow->mArrowType));
			free(self.ptr.Arrow);
		} break;
		case mirth_type_Type_App: {
			decref(MK_mirth_type_Type(self.ptr.App->mType_1));
			decref(MK_mirth_type_Type(self.ptr.App->mType));
			free(self.ptr.App);
		} break;
		case mirth_type_Type_Mut: {
			decref(MK_mirth_type_Type(self.ptr.Mut->mType));
			free(self.ptr.Mut);
		} break;
		case mirth_type_Type_Value: {
			decref(MK_mirth_type_Value(self.ptr.Value->mValue));
			free(self.ptr.Value);
		} break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rax
shrq $0x30, %rax
addl $-0x2, %eax
cmpl $0xb, %eax
ja 0x1ef18
movq %rdi, %rbx
movabsq $0xfffffffffffc, %r15   # imm = 0xFFFFFFFFFFFC
andq %r15, %rbx
leaq 0xbf6ea(%rip), %rcx     # 0xde4a4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5030
movq 0x10(%rbx), %rax
andq %rax, %r15
sete %cl
testb $0x3, %al
setne %al
orb %cl, %al
jne 0x1edc3
decl (%r15)
jne 0x1edc3
leaq 0xf2e15(%rip), %rsi     # 0x111c09
jmp 0x1eed8
movq 0x10(%rbx), %rcx
leaq 0xf2ce5(%rip), %r14     # 0x111ae9
movq %rcx, %rax
andq %r15, %rax
sete %dl
testb $0x3, %cl
setne %cl
orb %dl, %cl
jne 0x1ee2e
decl (%rax)
jne 0x1ee2e
movl 0x8(%rbx), %edi
shlq $0x30, %rdi
orq 0x10(%rbx), %rdi
movq %r14, %rsi
callq 0xd13d
movq 0x20(%rbx), %rax
andq %rax, %r15
sete %cl
testb $0x3, %al
setne %al
orb %cl, %al
jne 0x1edc3
decl (%r15)
jne 0x1edc3
movl 0x18(%rbx), %edi
shlq $0x30, %rdi
orq 0x20(%rbx), %rdi
movq %r14, %rsi
jmp 0x1ef0e
movq 0x10(%rbx), %rax
andq %rax, %r15
sete %cl
testb $0x3, %al
setne %al
orb %cl, %al
jne 0x1edc3
decl (%r15)
jne 0x1edc3
leaq 0xf2d3d(%rip), %rsi     # 0x111bc1
jmp 0x1eed8
movq 0x8(%rbx), %rdi
andq %rdi, %r15
sete %al
testb $0x3, %dil
setne %cl
orb %al, %cl
jne 0x1edc3
decl (%r15)
jne 0x1edc3
leaq 0xf2c82(%rip), %rsi     # 0x111b31
jmp 0x1ef0e
movq 0x10(%rbx), %rax
andq %rax, %r15
sete %cl
testb $0x3, %al
setne %al
orb %cl, %al
jne 0x1edc3
decl (%r15)
jne 0x1edc3
leaq 0xf2c11(%rip), %rsi     # 0x111ae9
movl 0x8(%rbx), %edi
shlq $0x30, %rdi
orq 0x10(%rbx), %rdi
jmp 0x1ef0e
movq 0x8(%rbx), %rdi
andq %rdi, %r15
sete %al
testb $0x3, %dil
setne %cl
orb %al, %cl
jne 0x1edc3
decl (%r15)
jne 0x1edc3
leaq 0xf2c6b(%rip), %rsi     # 0x111b79
callq 0xd13d
jmp 0x1edc3
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq