// File: /workspace/github_c_makefile_star2_O2/jtuu[P]quesler/src/compiler.c
// Function: statement
static void statement(void) {
    if (match(TOKEN_PRINT)) {
        print_statement();
    } else if (match(TOKEN_IF)) {
        if_statement();
    } else if (match(TOKEN_RETURN)) {
        return_statement();
    } else if (match(TOKEN_FOR)) {
        for_statement();
    } else if (match(TOKEN_WHILE)) {
        while_statement();
    } else if (match(TOKEN_LEFT_BRACE)) {
        begin_scope();
        block();
        end_scope();
    } else {
        expression_statement();
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
pushq $0x24
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5813
callq 0x52f0
leaq 0x2d5e(%rip), %rsi      # 0x852d
pushq $0x7
popq %rdi
callq 0x52f5
callq 0x54e1
testl %eax, %eax
js 0x5b1f
movzbl %al, %ebx
movl %ebx, %edi
callq 0x5551
movzbl %bl, %ecx
movb $0xa, %dl
movl %ecx, %eax
divb %dl
movzbl %ah, %esi
orb $0x30, %sil
movb %sil, 0x3(%rsp)
cmpl $0xa, %ebx
jae 0x58f0
pushq $0x1
jmp 0x5979
pushq $0x22
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x58c1
leaq 0x2d21(%rip), %rsi      # 0x854b
xorl %edi, %edi
callq 0x52f5
callq 0x52f0
leaq 0x2d26(%rip), %rsi      # 0x8563
pushq $0x1
popq %rdi
callq 0x52f5
callq 0x54e1
testl %eax, %eax
js 0x5b1f
movl %eax, %ebx
callq 0x5654
movq %rax, %r14
movzbl %bl, %ebx
movl %ebx, %edi
callq 0x5551
pushq $0x2d
popq %rdi
movl %ebx, %esi
movq %r14, %rdx
callq 0x56d9
callq 0x57ac
pushq $0x1e
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x58a4
callq 0x5654
movq %rax, %r15
movq %rax, %rdi
callq 0x56a9
movq %r14, %rdi
callq 0x56be
callq 0x57ac
movq %r15, %r14
movq %r14, %rdi
callq 0x56be
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x551c
pushq $0x25
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5907
pushq $0x7
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5a5f
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5dbc
movzbl %al, %eax
divb %dl
movzbl %ah, %eax
orb $0x30, %al
movb %al, 0x2(%rsp)
cmpl $0x64, %ebx
jae 0x596b
pushq $0x2
jmp 0x5979
pushq $0x20
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5a9e
movq 0xfc6a(%rip), %rax      # 0x15588
incl 0x3008(%rax)
leaq 0x2c73(%rip), %rsi      # 0x859e
xorl %edi, %edi
callq 0x52f5
callq 0x54e1
testl %eax, %eax
js 0x5b1f
movl %eax, %ebp
pushq $0x7
popq %rdi
callq 0x4fe3
testb %al, %al
jne 0x5b6d
pushq $0x27
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5b68
callq 0x5737
jmp 0x5b6d
movb $0x64, %dl
movl %ecx, %eax
divb %dl
orb $0x30, %al
movb %al, 0x1(%rsp)
pushq $0x3
popq %r15
leal (%r15,%r15), %r12d
leaq 0x8(%r12), %rdi
callq 0x4110
movq %rax, %r14
movl $0x72003c, (%rax)       # imm = 0x72003C
movq %r15, %rax
xorq $0x3, %rax
addq %rsp, %rax
incq %rax
xorl %ecx, %ecx
cmpq %rcx, %r15
je 0x59b5
movsbl (%rax,%rcx), %edx
movw %dx, 0x4(%r14,%rcx,2)
incq %rcx
jmp 0x59a1
movw $0x3e, 0x4(%r14,%r15,2)
andw $0x0, 0xe(%r14,%r12,2)
pushq $0x4e
popq %rdi
callq 0x5561
movq %r14, %r13
addq $0x2, %r13
movw $0x3c, %ax
pushq $0x2
popq %r15
leaq 0x4(%rsp), %r12
testw %ax, %ax
je 0x5a12
rolw $0x8, %ax
movw %ax, 0x4(%rsp)
movq 0xfbab(%rip), %rdi      # 0x155a0
movq 0xfbec(%rip), %rcx      # 0x155e8
movq %r15, %rsi
movq %r12, %rdx
callq 0x42a1
movzwl (%r13), %eax
addq $0x2, %r13
jmp 0x59e0
leaq 0x6(%rsp), %rdx
andw $0x0, (%rdx)
movq 0xfb7e(%rip), %rdi      # 0x155a0
movq 0xfbbf(%rip), %rcx      # 0x155e8
pushq $0x2
popq %rsi
callq 0x42a1
pushq $0x5a
popq %rdi
callq 0x5561
pushq $0x5e
popq %rdi
callq 0x5561
movl %ebx, %edi
callq 0x551c
movq %r14, %rdi
callq 0x4030
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x52f0
leaq 0x2b13(%rip), %rsi      # 0x857e
pushq $0x7
popq %rdi
callq 0x52f5
movq 0xfcd6(%rip), %rax      # 0x15750
cmpq 0xfb0f(%rip), %rax      # 0x15590
je 0x5a88
callq 0x5e38
pushq $0x1
popq %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5561
pushq $0x28
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5b32
callq 0x5c36
movq %rax, %rbx
leaq 0x2b36(%rip), %rsi      # 0x85f3
xorl %edi, %edi
callq 0x52f5
callq 0x52f0
leaq 0x2b3e(%rip), %rsi      # 0x860e
pushq $0x1
popq %rdi
callq 0x52f5
callq 0x54e1
testl %eax, %eax
js 0x5b1f
movl %eax, %ebp
callq 0x5654
movq %rax, %r14
movzbl %bpl, %ebp
movl %ebp, %edi
callq 0x5551
pushq $0x2d
popq %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x56d9
callq 0x57ac
movq %rbx, %rdi
callq 0x56a9
movq %r14, %rdi
callq 0x56be
movl %ebp, %edi
jmp 0x58ae
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5510
pushq $0x2
popq %rdi
callq 0x4fe3
testb %al, %al
je 0x5b55
movq 0xfa43(%rip), %rax      # 0x15588
incl 0x3008(%rax)
callq 0x5d94
jmp 0x5c23
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5e9b
callq 0x5e9b
callq 0x5654
movq %rax, %rbx
callq 0x5c36
movq %rax, %r14
pushq $0x7
popq %rdi
callq 0x4fe3
movzbl %bpl, %ebp
testb %al, %al
jne 0x5bb5
callq 0x52f0
leaq 0x2a1e(%rip), %rsi      # 0x85b7
pushq $0x7
popq %rdi
callq 0x52f5
movl %ebp, %edi
callq 0x5551
pushq $0x2f
popq %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x56d9
pushq $0x1
popq %rdi
callq 0x4fe3
testb %al, %al
jne 0x5c07
callq 0x5654
movq %rax, %r15
movq %rax, %rdi
callq 0x56a9
callq 0x5c36
movq %rax, %r12
callq 0x52f0
movl %ebp, %edi
callq 0x5551
leaq 0x29e8(%rip), %rsi      # 0x85d4
pushq $0x1
popq %rdi
callq 0x52f5
movq %r14, %rdi
callq 0x56a9
movq %r15, %rdi
callq 0x56be
movq %r12, %r14
callq 0x57ac
movq %r14, %rdi
callq 0x56a9
movq %rbx, %rdi
callq 0x56be
movl %ebp, %edi
callq 0x551c
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5de2