// File: /workspace/github_c_makefile_star2_O2/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
pushq $0x5
popq %rsi
callq 0x30a5
testb %al, %al
je 0x3f3b
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x3d1f
jmp 0x41df
pushq $0x26
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x3f5a
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4289
pushq $0x2e
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x3fad
incb 0x58(%rbx)
movq 0x28(%rbx), %rax
movl 0x40(%rax), %ebp
movq %rbx, %rdi
callq 0x38a1
pushq $0x16
popq %rsi
movq %rbx, %rdi
callq 0x3e80
movl %eax, %r14d
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x37c2
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x3fdf
movq %rbx, %rdi
callq 0x3f14
jmp 0x4004
pushq $0x24
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x4013
incb 0x58(%rbx)
pushq $0x2d
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x405e
movq %rbx, %rdi
callq 0x3ec2
jmp 0x4075
leaq 0x55a2(%rip), %rdx      # 0x9588
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x377a
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x3d1f
movq %rbx, %rdi
callq 0x3d51
movq %rbx, %rdi
movl %ebp, %esi
callq 0x43d3
jmp 0x41c9
pushq $0x2a
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x412d
cmpl $0x0, 0x30(%rbx)
jne 0x403b
leaq 0x55ca(%rip), %rsi      # 0x95fd
movq %rbx, %rdi
callq 0x350f
pushq $0x30
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x41ef
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x441b
pushq $0xb
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
jne 0x4075
movq %rbx, %rdi
callq 0x43b6
movq 0x28(%rbx), %rax
movl 0x40(%rax), %ebp
pushq $0xb
popq %rsi
movq %rbx, %rdi
callq 0x30a5
xorl %r14d, %r14d
testb %al, %al
jne 0x40c1
movq %rbx, %rdi
callq 0x38a1
leaq 0x5522(%rip), %rdx      # 0x95bf
pushq $0xb
popq %rsi
movq %rbx, %rdi
callq 0x377a
pushq $0x16
popq %rsi
movq %rbx, %rdi
callq 0x3e80
movl %eax, %r14d
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x37c2
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
jne 0x4111
pushq $0x15
popq %rsi
movq %rbx, %rdi
callq 0x3e80
movl %eax, %r15d
movq 0x28(%rbx), %rax
movl 0x40(%rax), %r12d
movq %rbx, %rdi
callq 0x38a1
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x37c2
movq %rbx, %rdi
movl %ebp, %esi
callq 0x43d3
movq %rbx, %rdi
movl %r15d, %esi
callq 0x3ea3
movl %r12d, %ebp
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x4195
movq %rbx, %rdi
callq 0x3f14
jmp 0x41ba
pushq $0x27
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x422c
pushq $0x2e
popq %rsi
movq %rbx, %rdi
callq 0x37c2
leaq 0x54f9(%rip), %rdx      # 0x964b
pushq $0x1b
popq %rsi
movq %rbx, %rdi
callq 0x377a
movq (%rbx), %rdi
movq 0x8(%rbx), %rax
movq 0x28(%rax), %rsi
movzbl 0x30(%rax), %edx
incq %rsi
addl $-0x2, %edx
callq 0x58eb
pushq $0x3
popq %rsi
movq %rbx, %rdi
movq %rax, %rdx
callq 0x374f
movzwl %ax, %esi
movq %rbx, %rdi
callq 0x372f
jmp 0x4269
leaq 0x5444(%rip), %rdx      # 0x95e0
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x377a
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x3d1f
movq %rbx, %rdi
callq 0x3d51
movq %rbx, %rdi
movl %ebp, %esi
callq 0x43d3
testl %r14d, %r14d
je 0x41df
movq %rbx, %rdi
movl %r14d, %esi
callq 0x3ea3
pushq $0x5
popq %rsi
movq %rbx, %rdi
callq 0x37c2
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3d51
movq 0x8(%rbx), %rax
movl 0x40(%rax), %ebp
cmpl $0x4, 0x30(%rbx)
jne 0x420b
leaq 0x541d(%rip), %rsi      # 0x9620
movq %rbx, %rdi
callq 0x350f
movq %rbx, %rdi
callq 0x38a1
pushq $0x30
popq %rsi
movq %rbx, %rdi
callq 0x37c2
cmpl $0x23, %ebp
jne 0x4269
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x20
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x4247
movq %rbx, %rdi
callq 0x38a1
pushq $0x2f
jmp 0x4260
pushq $0x1d
popq %rsi
movq %rbx, %rdi
callq 0x30a5
testb %al, %al
je 0x4279
movq %rbx, %rdi
callq 0x38a1
pushq $0x31
popq %rsi
movq %rbx, %rdi
callq 0x37c2
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3cea
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x43b6