// File: /workspace/github_c_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
testq %rdi, %rdi
je 0x28503
movq %rsi, %r12
testq %rsi, %rsi
je 0x28522
movq %rdx, %r14
testq %rdx, %rdx
je 0x28541
movl %ecx, %r13d
movq %rdi, %r15
movq %r12, %rsi
callq 0x285a5
movl %eax, %ebx
movq %r15, %rdi
movq %r14, %rsi
callq 0x285a5
movb $0x1, %cl
cmpb $-0x1, %bl
jne 0x283aa
cmpb $-0x1, %al
je 0x284ce
movzbl %r13b, %ebx
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movl %ebx, %ecx
callq 0x30441
testb %al, %al
jne 0x284cc
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x304a9
testb %al, %al
jne 0x284cc
movl %ebx, -0x2c(%rbp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x285a5
cmpb $0xe, %al
jne 0x284a5
movq %r15, %rdi
movq %r14, %rsi
callq 0x285a5
cmpb $0xe, %al
jne 0x284a5
movq 0x48(%r12), %rax
movq (%rax), %rsi
testq %rsi, %rsi
je 0x28560
movq 0x48(%r14), %rcx
movq (%rcx), %rdi
testq %rdi, %rdi
je 0x2857f
movl 0x44(%rsi), %edx
movq %rdi, -0x50(%rbp)
cmpl 0x44(%rdi), %edx
jne 0x284a5
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq 0x8(%rcx), %rax
movq %rax, -0x38(%rbp)
xorl %ebx, %ebx
movq %rsi, -0x48(%rbp)
movslq 0x44(%rsi), %rax
cmpq %rax, %rbx
jge 0x2848e
movq 0x48(%rsi), %rax
movq (%rax,%rbx,8), %rsi
movq -0x50(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax,%rbx,8), %rax
movq %rax, -0x58(%rbp)
movq %r15, %rdi
callq 0x23493
movq %rax, %r13
movq %r15, %rdi
movq -0x58(%rbp), %rsi
callq 0x23493
movq -0x48(%rbp), %rsi
incq %rbx
cmpq %rax, %r13
je 0x28448
jmp 0x284a5
movq %r15, %rdi
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq 0x2834e
testb %al, %al
jne 0x284cc
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x30506
testb %al, %al
jne 0x284cc
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movl -0x2c(%rbp), %ecx
callq 0x3065c
testb %al, %al
je 0x284df
movb $0x1, %cl
movl %ecx, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r15, %rdi
movq %r12, %rsi
callq 0x285a5
cmpb $0xc, %al
jne 0x284ff
movq %r15, %rdi
movq %r14, %rsi
callq 0x285a5
movb $0x1, %cl
cmpb $0xc, %al
je 0x284ce
xorl %ecx, %ecx
jmp 0x284ce
leaq 0x158ba(%rip), %rdi     # 0x3ddc4
leaq 0x1f429(%rip), %rsi     # 0x4793a
leaq 0x22101(%rip), %rcx     # 0x4a619
movl $0x307, %edx            # imm = 0x307
callq 0x30a0
leaq 0x1c777(%rip), %rdi     # 0x44ca0
leaq 0x1f40a(%rip), %rsi     # 0x4793a
leaq 0x220e2(%rip), %rcx     # 0x4a619
movl $0x308, %edx            # imm = 0x308
callq 0x30a0
leaq 0x12fde(%rip), %rdi     # 0x3b526
leaq 0x1f3eb(%rip), %rsi     # 0x4793a
leaq 0x220c3(%rip), %rcx     # 0x4a619
movl $0x309, %edx            # imm = 0x309
callq 0x30a0
leaq 0x2215e(%rip), %rdi     # 0x4a6c5
leaq 0x1f3cc(%rip), %rsi     # 0x4793a
leaq 0x220f8(%rip), %rcx     # 0x4a66d
movl $0x266, %edx            # imm = 0x266
callq 0x30a0
leaq 0x2214b(%rip), %rdi     # 0x4a6d1
leaq 0x1f3ad(%rip), %rsi     # 0x4793a
leaq 0x220d9(%rip), %rcx     # 0x4a66d
movl $0x267, %edx            # imm = 0x267
callq 0x30a0