// File: /workspace/github_c_makefile_star2_O3/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
movl 0x40(%rax), %eax
leal -0x20(%rax), %ecx
cmpl $0xe, %ecx
ja 0x4525
leaq 0x4bd0(%rip), %rax      # 0x90c0
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
callq 0x3d56
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x2f, %esi
jmp 0x46fa
cmpl $0x1d, %eax
je 0x46d3
cmpl $0x5, %eax
jne 0x454b
movq %rbx, %rdi
callq 0x34a2
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x42b4
jmp 0x48d3
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4ad6
movq %rbx, %rdi
callq 0x34a2
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x2e, %esi
callq 0x2a5f
leaq 0x5119(%rip), %rdx      # 0x969f
movq %rbx, %rdi
movl $0x1b, %esi
callq 0x3c36
movq (%rbx), %rdi
movq 0x8(%rbx), %rax
movq 0x28(%rax), %rsi
movzbl 0x30(%rax), %edx
incq %rsi
addl $-0x2, %edx
callq 0x6239
movq %rbx, %rdi
movl $0x3, %esi
movq %rax, %rdx
callq 0x3c03
movzwl %ax, %esi
movq %rbx, %rdi
callq 0x3bbf
jmp 0x46ff
movq %rbx, %rdi
callq 0x34a2
incb 0x58(%rbx)
movq 0x8(%rbx), %rax
movl 0x40(%rax), %eax
movq %rbx, %rdi
cmpl $0xb, %eax
je 0x4759
cmpl $0x2d, %eax
jne 0x4760
callq 0x34a2
movq %rbx, %rdi
callq 0x446d
jmp 0x4765
movq %rbx, %rdi
callq 0x34a2
cmpl $0x0, 0x30(%rbx)
jne 0x462b
movq 0x8(%rbx), %rsi
addq $0x20, %rsi
leaq 0x502e(%rip), %rdx      # 0x9651
movq %rbx, %rdi
callq 0x3a3b
movq 0x8(%rbx), %rsi
cmpl $0x8, 0x20(%rsi)
je 0x4641
movl 0x40(%rsi), %ebp
cmpl $0x30, %ebp
jne 0x48e3
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4b68
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4932
movq %rbx, %rdi
callq 0x34a2
incb 0x58(%rbx)
movq 0x28(%rbx), %rax
movl 0x40(%rax), %ebp
movq %rbx, %rdi
callq 0x3d56
movq %rbx, %rdi
movl $0x16, %esi
callq 0x4438
movl %eax, %r14d
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x5, %esi
callq 0x2a5f
movq 0x8(%rbx), %rax
cmpl $0x2, 0x40(%rax)
jne 0x470f
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
callq 0x44cf
jmp 0x4736
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
callq 0x3d56
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x31, %esi
callq 0x2a5f
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4287
leaq 0x4ec6(%rip), %rdx      # 0x95dc
movq %rbx, %rdi
movl $0x5, %esi
callq 0x3c36
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x42b4
movq %rbx, %rdi
callq 0x42e8
movq %rbx, %rdi
movl %ebp, %esi
callq 0x4b04
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %eax
subl %r14d, %eax
addl $-0x2, %eax
movq 0x38(%rcx), %rdx
movslq %r14d, %rsi
jmp 0x48ac
callq 0x34a2
jmp 0x4765
callq 0x4ad6
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rcx
movl 0x40(%rcx), %r14d
cmpl $0xb, 0x40(%rax)
jne 0x4783
movq %rbx, %rdi
callq 0x34a2
xorl %ebp, %ebp
jmp 0x47ca
movq %rbx, %rdi
callq 0x3d56
leaq 0x4e81(%rip), %rdx      # 0x9613
movq %rbx, %rdi
movl $0xb, %esi
callq 0x3c36
movq %rbx, %rdi
movl $0x16, %esi
callq 0x4438
movl %eax, %ebp
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x5, %esi
callq 0x2a5f
movq 0x8(%rbx), %rax
cmpl $0x5, 0x40(%rax)
jne 0x47de
movq %rbx, %rdi
callq 0x34a2
jmp 0x4847
movq %rbx, %rdi
movl $0x15, %esi
callq 0x4438
movl %eax, %r15d
movq 0x28(%rbx), %rax
movl 0x40(%rax), %r12d
movq %rbx, %rdi
callq 0x3d56
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x5, %esi
callq 0x2a5f
movq %rbx, %rdi
movl %r14d, %esi
callq 0x4b04
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 0x4863
movq %rbx, %rdi
callq 0x34a2
movq %rbx, %rdi
callq 0x44cf
jmp 0x488a
leaq 0x4dca(%rip), %rdx      # 0x9634
movq %rbx, %rdi
movl $0x5, %esi
callq 0x3c36
incb 0x58(%rbx)
movq %rbx, %rdi
callq 0x42b4
movq %rbx, %rdi
callq 0x42e8
movq %rbx, %rdi
movl %r14d, %esi
callq 0x4b04
testl %ebp, %ebp
je 0x48d3
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
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x5, %esi
callq 0x2a5f
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x42e8
cmpl $0x4, 0x30(%rbx)
jne 0x48fc
addq $0x20, %rsi
leaq 0x4d80(%rip), %rdx      # 0x9674
movq %rbx, %rdi
callq 0x3a3b
movq %rbx, %rdi
callq 0x3d56
movq 0x8(%rbx), %rax
movq 0x28(%rbx), %rdi
movl 0x54(%rax), %edx
movl 0x58(%rax), %ecx
addq $0x28, %rdi
movl $0x30, %esi
callq 0x2a5f
cmpl $0x23, %ebp
jne 0x46ff
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq