// File: RuiDGPires[P]CrimLang/src/semantic_analiser.cpp
// Function: sc_Tracker::check()
void _sc_Tracker::check(){
	this->ast = this->ast->get_child(0); // Enter the program	
	this->program(this->ast);
	Context::Item item = this->context->seek("main");
	ASSERT(item.type == Context::Item::Type::FUNC, "Main function is not defined");
	ASSERT(item.subtype == "u32", "Main function is not defined");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
xorl %esi, %esi
callq *%rax
movq -0x118(%rbp), %rdi
movq %rax, (%rdi)
movq (%rdi), %rsi
callq 0x25680
movq -0x118(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x110(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x4590
movq -0x108(%rbp), %rdx
leaq 0x63d0(%rip), %rsi      # 0x2bd4d
leaq -0x98(%rbp), %rdi
callq 0x52e0
jmp 0x2598b
movq -0x110(%rbp), %rsi
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x6830
jmp 0x259a4
leaq -0x98(%rbp), %rdi
callq 0x41e0
leaq -0x99(%rbp), %rdi
callq 0x4360
cmpl $0x1, -0x78(%rbp)
je 0x25aec
movb $0x1, -0xd2(%rbp)
movl $0x50, %edi
callq 0x4190
movq %rax, -0x128(%rbp)
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x4590
movq -0x120(%rbp), %rdx
leaq 0x6353(%rip), %rsi      # 0x2bd52
leaq -0xd0(%rbp), %rdi
callq 0x52e0
jmp 0x25a0d
movq -0x128(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
leaq -0xd0(%rbp), %rcx
movl %edx, %esi
callq 0x9140
jmp 0x25a29
movq -0x128(%rbp), %rdi
movb $0x0, -0xd2(%rbp)
leaq 0x14342(%rip), %rsi     # 0x39d80
leaq -0x1c735(%rip), %rdx    # 0x9310
callq 0x4550
jmp 0x25c2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x25a81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x41e0
leaq -0x99(%rbp), %rdi
callq 0x4360
jmp 0x25c23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x25ac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x41e0
leaq -0xd1(%rbp), %rdi
callq 0x4360
testb $0x1, -0xd2(%rbp)
jne 0x25adb
jmp 0x25ae7
movq -0x128(%rbp), %rdi
callq 0x4230
jmp 0x25c1a
leaq -0x50(%rbp), %rdi
leaq 0x5b9c(%rip), %rsi      # 0x2b693
callq 0x66e0
movb %al, -0x129(%rbp)
jmp 0x25b04
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x25c08
jmp 0x25b14
movb $0x1, -0xfa(%rbp)
movl $0x50, %edi
callq 0x4190
movq %rax, -0x140(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x4590
movq -0x138(%rbp), %rdx
leaq 0x6205(%rip), %rsi      # 0x2bd52
leaq -0xf8(%rbp), %rdi
callq 0x52e0
jmp 0x25b5b
movq -0x140(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
leaq -0xf8(%rbp), %rcx
movl %edx, %esi
callq 0x9140
jmp 0x25b77
movq -0x140(%rbp), %rdi
movb $0x0, -0xfa(%rbp)
leaq 0x141f4(%rip), %rsi     # 0x39d80
leaq -0x1c883(%rip), %rdx    # 0x9310
callq 0x4550
jmp 0x25c2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x25c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x25be3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x41e0
leaq -0xf9(%rbp), %rdi
callq 0x4360
testb $0x1, -0xfa(%rbp)
jne 0x25bfa
jmp 0x25c06
movq -0x140(%rbp), %rdi
callq 0x4230
jmp 0x25c1a
leaq -0x78(%rbp), %rdi
callq 0x6df0
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x6df0
movq -0xa8(%rbp), %rdi
callq 0x4580
nop