// File: /workspace/github_c_makefile_star2_O1/gaultier[P]lox-c/parse.c
// Function: statement
static void statement(Parser* parser, Vm* vm) {
    if (match(parser, TOKEN_PRINT)) {
        print_stmt(parser, vm);
    } else if (match(parser, TOKEN_LEFT_BRACE)) {
        begin_scope(parser);
        block(parser, vm);
        end_scope(parser);
    } else if (match(parser, TOKEN_IF)) {
        if_stmt(parser, vm);
    } else if (match(parser, TOKEN_WHILE)) {
        while_stmt(parser, vm);
    } else if (match(parser, TOKEN_FOR)) {
        for_stmt(parser, vm);
    } else if (match(parser, TOKEN_RETURN)) {
        return_stmt(parser, vm);
    } else {
        expr_stmt(parser, vm);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
cmpl $0x20, 0x50(%rdi)
jne 0x330d
movq %rbx, %rdi
callq 0x2f64
movq %rbx, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0x3b46
leaq 0x46c8(%rip), %rdx      # 0x79ad
movq %rbx, %rdi
movl $0x9, %esi
callq 0x397b
movq %rbx, %rdi
movl $0xe, %esi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x384f
cmpl $0x3, 0x50(%rbx)
jne 0x334a
movq %rbx, %rdi
callq 0x2f64
movq 0x80(%rbx), %rax
incq 0x3008(%rax)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4485
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x44c4
cmpl $0x1d, 0x50(%rbx)
jne 0x3416
movq %rbx, %rdi
callq 0x2f64
leaq 0x467b(%rip), %rdx      # 0x79de
movq %rbx, %rdi
movl $0x1, %esi
callq 0x397b
movq %rbx, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0x3b46
leaq 0x466d(%rip), %rdx      # 0x79f4
movq %rbx, %rdi
movl $0x2, %esi
callq 0x397b
movq %rbx, %rdi
movl $0x15, %esi
callq 0x4393
movq %rax, %r12
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32af
movq %rbx, %rdi
movl $0x16, %esi
callq 0x4393
movq %rax, %r15
movq %rbx, %rdi
movq %r12, %rsi
callq 0x43e0
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
cmpl $0x19, 0x50(%rbx)
jne 0x33fd
movq %rbx, %rdi
callq 0x2f64
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32af
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x43e0
cmpl $0x26, 0x50(%rbx)
jne 0x3448
movq %rbx, %rdi
callq 0x2f64
movq 0x80(%rbx), %rax
movq 0x3010(%rax), %rax
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x34c5
movq -0x8(%rax), %r15
jmp 0x34c8
cmpl $0x1b, 0x50(%rbx)
jne 0x349a
movq %rbx, %rdi
callq 0x2f64
movq 0x80(%rbx), %rax
incq 0x3008(%rax)
leaq 0x461b(%rip), %rdx      # 0x7a86
movq %rbx, %rdi
movl $0x1, %esi
callq 0x397b
cmpl $0x25, 0x50(%rbx)
jne 0x354b
movq %rbx, %rdi
callq 0x2f64
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3246
jmp 0x357f
cmpl $0x21, 0x50(%rbx)
jne 0x355b
movq %rbx, %rdi
callq 0x2f64
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4522
xorl %r15d, %r15d
leaq 0x453b(%rip), %rdx      # 0x7a0a
movq %rbx, %rdi
movl $0x1, %esi
callq 0x397b
movq %rbx, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0x3b46
leaq 0x4530(%rip), %rdx      # 0x7a23
movq %rbx, %rdi
movl $0x2, %esi
callq 0x397b
movq %rbx, %rdi
movl $0x15, %esi
callq 0x4393
movq %rax, %r12
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32af
movq %rbx, %rdi
movq %r15, %rsi
callq 0x45d9
movq %rbx, %rdi
movq %r12, %rsi
callq 0x43e0
movq %rbx, %rdi
movl $0xf, %esi
jmp 0x32fa
cmpl $0x9, 0x50(%rbx)
jne 0x3574
movq %rbx, %rdi
callq 0x2f64
jmp 0x357f
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x45a6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a6
movq 0x80(%rbx), %rax
movq 0x3010(%rax), %rax
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x359c
movq -0x8(%rax), %r15
jmp 0x359f
xorl %r15d, %r15d
cmpl $0x9, 0x50(%rbx)
jne 0x35b6
movq %rbx, %rdi
callq 0x2f64
movq $-0x1, %r12
jmp 0x35f7
movq %rbx, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0x3b46
leaq 0x44d0(%rip), %rdx      # 0x7a9d
movq %rbx, %rdi
movl $0x9, %esi
callq 0x397b
movq %rbx, %rdi
movl $0x15, %esi
callq 0x4393
movq %rax, %r12
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
cmpl $0x2, 0x50(%rbx)
jne 0x3607
movq %rbx, %rdi
callq 0x2f64
jmp 0x3680
movq %rbx, %rdi
movl $0x16, %esi
callq 0x4393
movq %rax, %r13
movq 0x80(%rbx), %rax
movq 0x3010(%rax), %rax
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x3634
movq -0x8(%rax), %rbp
jmp 0x3636
xorl %ebp, %ebp
movq %rbx, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0x3b46
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
leaq 0x446c(%rip), %rdx      # 0x7ac6
movq %rbx, %rdi
movl $0x2, %esi
callq 0x397b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x45d9
movq %rbx, %rdi
movq %r13, %rsi
callq 0x43e0
movq %rbp, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32af
movq %rbx, %rdi
movq %r15, %rsi
callq 0x45d9
cmpq $-0x1, %r12
je 0x3334
movq %rbx, %rdi
movq %r12, %rsi
callq 0x43e0
movq %rbx, %rdi
movl $0xf, %esi
callq 0x384f
jmp 0x3334