// File: /workspace/github_c_makefile_star2_O1/adamjedlicka[P]blu/src/vm/compiler/compiler.c
// Function: statement
static void statement(bluCompiler* compiler) {
	if (match(compiler, TOKEN_LEFT_BRACE)) {
		beginScope(compiler);
		block(compiler);
		endScope(compiler);
	} else if (match(compiler, TOKEN_IF)) {
		ifStatement(compiler);
	} else if (match(compiler, TOKEN_WHILE)) {
		whileStatement(compiler);
	} else if (match(compiler, TOKEN_FOR)) {
		forStatement(compiler);
	} else if (match(compiler, TOKEN_RETURN)) {
		returnStatement(compiler);
	} else if (match(compiler, TOKEN_IMPORT)) {
		importStatement(compiler);
	} else if (match(compiler, TOKEN_ECHO)) {
		echoStatement(compiler);
	} else if (match(compiler, TOKEN_ASSERT)) {
		assertStatement(compiler);
	} else {
		expressionStatement(compiler);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rdi), %rax
cmpl $0x5, 0x40(%rax)
jne 0x65f7
movq %rbx, %rdi
callq 0x553e
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x63ab
jmp 0x6912
movq 0x8(%rbx), %rax
cmpl $0x26, 0x40(%rax)
jne 0x6619
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x69d8
movq 0x8(%rbx), %rax
cmpl $0x2e, 0x40(%rax)
jne 0x6685
movq %rbx, %rdi
callq 0x553e
incb 0x58(%rbx)
movq 0x28(%rbx), %rax
movl 0x40(%rax), %ebp
movq %rbx, %rdi
callq 0x5e4c
movq %rbx, %rdi
movl $0x16, %esi
callq 0x652f
movl %eax, %r14d
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
addq $0x28, %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
movl $0x5, %esi
callq 0x4b23
movq 0x8(%rbx), %rax
cmpl $0x2, 0x40(%rax)
jne 0x66bd
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
callq 0x65ca
jmp 0x66e4
movq 0x8(%rbx), %rax
cmpl $0x24, 0x40(%rax)
jne 0x6707
movq %rbx, %rdi
callq 0x553e
incb 0x58(%rbx)
movq 0x8(%rbx), %rax
cmpl $0x2d, 0x40(%rax)
jne 0x6762
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
callq 0x6564
jmp 0x67a4
leaq 0x424e(%rip), %rdx      # 0xa912
movq %rbx, %rdi
movl $0x5, %esi
callq 0x5d2c
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x63ab
movq %rbx, %rdi
callq 0x63df
movq %rbx, %rdi
movl %ebp, %esi
callq 0x6c7f
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %eax
subl %r14d, %eax
addl $-0x2, %eax
movq 0x38(%rcx), %rdx
movslq %r14d, %rsi
jmp 0x68eb
movq 0x8(%rbx), %rax
cmpl $0x2a, 0x40(%rax)
jne 0x6776
movq %rbx, %rdi
callq 0x553e
cmpl $0x0, 0x30(%rbx)
jne 0x6736
movq 0x8(%rbx), %rsi
addq $0x20, %rsi
leaq 0x4259(%rip), %rdx      # 0xa987
movq %rbx, %rdi
callq 0x5b1c
movq 0x8(%rbx), %rax
cmpl $0x8, 0x20(%rax)
je 0x674a
cmpl $0x30, 0x40(%rax)
jne 0x6944
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6ce3
movq 0x8(%rbx), %rax
cmpl $0xb, 0x40(%rax)
jne 0x679c
movq %rbx, %rdi
callq 0x553e
jmp 0x67a4
movq 0x8(%rbx), %rax
cmpl $0x27, 0x40(%rax)
jne 0x6922
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6b83
movq %rbx, %rdi
callq 0x6c51
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %r14d
cmpl $0xb, 0x40(%rax)
jne 0x67c2
movq %rbx, %rdi
callq 0x553e
xorl %ebp, %ebp
jmp 0x6809
movq %rbx, %rdi
callq 0x5e4c
leaq 0x4178(%rip), %rdx      # 0xa949
movq %rbx, %rdi
movl $0xb, %esi
callq 0x5d2c
movq %rbx, %rdi
movl $0x16, %esi
callq 0x652f
movl %eax, %ebp
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
addq $0x28, %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
movl $0x5, %esi
callq 0x4b23
movq 0x8(%rbx), %rax
cmpl $0x5, 0x40(%rax)
jne 0x681d
movq %rbx, %rdi
callq 0x553e
jmp 0x6886
movq %rbx, %rdi
movl $0x15, %esi
callq 0x652f
movl %eax, %r15d
movq 0x28(%rbx), %rax
movl 0x40(%rax), %r12d
movq %rbx, %rdi
callq 0x5e4c
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
addq $0x28, %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
movl $0x5, %esi
callq 0x4b23
movq %rbx, %rdi
movl %r14d, %esi
callq 0x6c7f
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %eax
subl %r15d, %eax
addl $-0x2, %eax
movq 0x38(%rcx), %rdx
movslq %r15d, %rsi
movb %ah, (%rdx,%rsi)
movq 0x38(%rcx), %rcx
movb %al, 0x1(%rcx,%rsi)
movl %r12d, %r14d
movq 0x8(%rbx), %rax
cmpl $0x2, 0x40(%rax)
jne 0x68a2
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
callq 0x65ca
jmp 0x68c9
leaq 0x40c1(%rip), %rdx      # 0xa96a
movq %rbx, %rdi
movl $0x5, %esi
callq 0x5d2c
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x63ab
movq %rbx, %rdi
callq 0x63df
movq %rbx, %rdi
movl %r14d, %esi
callq 0x6c7f
testl %ebp, %ebp
je 0x6912
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %eax
subl %ebp, %eax
addl $-0x2, %eax
movq 0x38(%rcx), %rdx
movslq %ebp, %rsi
movb %ah, (%rdx,%rsi)
movq 0x38(%rcx), %rcx
movb %al, 0x1(%rcx,%rsi)
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
addq $0x28, %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
movl $0x5, %esi
callq 0x4b23
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x63df
movq 0x8(%rbx), %rax
cmpl $0x20, 0x40(%rax)
jne 0x6996
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6bf5
movq 0x8(%rbx), %rsi
movl 0x40(%rsi), %ebp
cmpl $0x4, 0x30(%rbx)
jne 0x6964
addq $0x20, %rsi
leaq 0x404e(%rip), %rdx      # 0xa9aa
movq %rbx, %rdi
callq 0x5b1c
movq %rbx, %rdi
callq 0x5e4c
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
addq $0x28, %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
movl $0x30, %esi
callq 0x4b23
cmpl $0x23, %ebp
jne 0x69b8
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rbx), %rax
cmpl $0x1d, 0x40(%rax)
jne 0x69c8
movq %rbx, %rdi
callq 0x553e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6c23
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x637e
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6c51