// File: /workspace/github_c_makefile_star2_O0/hikalium[P]compilium/type.c
// Function: IsSameTypeExceptAttr
int IsSameTypeExceptAttr(struct Node *a, struct Node *b) {
  assert(a && b);
  a = GetTypeWithoutAttr(a);
  b = GetTypeWithoutAttr(b);
  if (a->type != b->type) return 0;
  if (a->type == kTypeBase) {
    assert(a->op && b->op);
    return a->op->type == b->op->type;
  } else if (a->type == kTypePointer) {
    return IsSameTypeExceptAttr(a->right, b->right);
  } else if (a->type == kTypeFunction) {
    if (!IsSameTypeExceptAttr(a->left, b->left)) return 0;
    if (GetSizeOfList(a->right) != GetSizeOfList(b->right)) return 0;
    for (int i = 0; i < GetSizeOfList(a->right); i++) {
      if (!IsSameTypeExceptAttr(GetNodeAt(a->right, i), GetNodeAt(b->right, i)))
        return 0;
    }
    return 1;
  }
  Error("IsSameTypeExceptAttr: Comparing non-type nodes");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xdc1e
cmpq $0x0, -0x18(%rbp)
jne 0xdc36
leaq 0x3b22(%rip), %rdi      # 0x11747
leaq 0x3b22(%rip), %rsi      # 0x1174e
movl $0x4, %edx
callq 0x4b20
movq -0x10(%rbp), %rdi
callq 0xddf0
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rdi
callq 0xddf0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
cmpl (%rcx), %eax
je 0xdc6a
movl $0x0, -0x4(%rbp)
jmp 0xddd9
movq -0x10(%rbp), %rax
cmpl $0x14, (%rax)
jne 0xdcc5
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xdc89
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xdca1
leaq 0x3ac5(%rip), %rdi      # 0x11755
leaq 0x3ab7(%rip), %rsi      # 0x1174e
movl $0x9, %edx
callq 0x4b20
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl (%rcx), %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0xddd9
movq -0x10(%rbp), %rax
cmpl $0x16, (%rax)
jne 0xdceb
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0xdc00
movl %eax, -0x4(%rbp)
jmp 0xddd9
movq -0x10(%rbp), %rax
cmpl $0x17, (%rax)
jne 0xddc7
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0xdc00
cmpl $0x0, %eax
jne 0xdd1e
movl $0x0, -0x4(%rbp)
jmp 0xddd9
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4fe0
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4fe0
movl %eax, %ecx
movl -0x20(%rbp), %eax
cmpl %ecx, %eax
je 0xdd50
movl $0x0, -0x4(%rbp)
jmp 0xddd9
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4fe0
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jge 0xddbe
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x1c(%rbp), %esi
callq 0x5030
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x1c(%rbp), %esi
callq 0x5030
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xdc00
cmpl $0x0, %eax
jne 0xddb1
movl $0x0, -0x4(%rbp)
jmp 0xddd9
jmp 0xddb3
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xdd57
movl $0x1, -0x4(%rbp)
jmp 0xddd9
jmp 0xddc9
jmp 0xddcb
leaq 0x3992(%rip), %rdi      # 0x11764
movb $0x0, %al
callq 0x4a40
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)