// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: is_compatible_type
static bool _is_compatible_type(
	ParserContext *ctx,
	ParserASTNode *target,
	ParserASTNode *source,
	bool same
) {
	assert(ctx);
	assert(target);
	assert(source);

	if (_is_compatible_void_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_primitive_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_struct_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_array_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_func_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_pointer_type(ctx, target, source, same)) {
		return true;
	}
	if (_is_compatible_va_list_type(ctx, target, source, same)) {
		return true;
	}
	return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %cl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x4d594
jmp 0x4d5b3
leaq 0x2efbb(%rip), %rdi     # 0x7c556
leaq 0x30ca8(%rip), %rsi     # 0x7e24a
movl $0x307, %edx            # imm = 0x307
leaq 0x33c6d(%rip), %rcx     # 0x8121b
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x4d5bc
jmp 0x4d5db
leaq 0x2e15f(%rip), %rdi     # 0x7b722
leaq 0x30c80(%rip), %rsi     # 0x7e24a
movl $0x308, %edx            # imm = 0x308
leaq 0x33c45(%rip), %rcx     # 0x8121b
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x4d5e4
jmp 0x4d603
leaq 0x23fa6(%rip), %rdi     # 0x71591
leaq 0x30c58(%rip), %rsi     # 0x7e24a
movl $0x309, %edx            # imm = 0x309
leaq 0x33c1d(%rip), %rcx     # 0x8121b
callq 0x30a0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5f450
testb $0x1, %al
jne 0x4d622
jmp 0x4d62b
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5c9c0
testb $0x1, %al
jne 0x4d64a
jmp 0x4d653
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5cb00
testb $0x1, %al
jne 0x4d672
jmp 0x4d67b
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5f530
testb $0x1, %al
jne 0x4d69a
jmp 0x4d6a0
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5cc00
testb $0x1, %al
jne 0x4d6bf
jmp 0x4d6c5
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5ce60
testb $0x1, %al
jne 0x4d6e4
jmp 0x4d6ea
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0x5f690
testb $0x1, %al
jne 0x4d709
jmp 0x4d70f
movb $0x1, -0x1(%rbp)
jmp 0x4d713
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nop