// File: /workspace/github_cpp_makefile_star2_O2/KJTang[P]SimpleCompiler/AST.cpp
// Function: WhileExprAST::eval[abi:cxx11]()
std::string WhileExprAST::eval() {
    std::string condLabel = generateJmpLabel();
    std::string quitLabel = generateJmpLabel();
    return condLabel + ":" + insEnd + condAST->eval() + "JZ " + quitLabel + insEnd + 
        blockAST->eval() + "JMP " + condLabel + insEnd + quitLabel + ":" + insEnd;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x200, %rsp            # imm = 0x200
movq %rsi, %r14
movq %rdi, %rbx
leaq -0x50(%rbp), %rdi
callq 0x64dd
leaq -0x30(%rbp), %rdi
callq 0x64dd
leaq 0x5cdd(%rip), %rdx      # 0xc26e
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x6f39
leaq 0xbc50(%rip), %rdx      # 0x121f8
leaq -0xd0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x6e00
movq 0x10(%r14), %rsi
movq (%rsi), %rax
leaq -0x90(%rbp), %rdi
callq *0x18(%rax)
leaq -0xf0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0x6e9f
leaq 0x5c7d(%rip), %rdx      # 0xc26a
leaq -0x110(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x6f10
leaq -0x130(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x6e00
leaq 0xbbda(%rip), %rdx      # 0x121f8
leaq -0x150(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x6e00
movq 0x18(%r14), %rsi
movq (%rsi), %rax
leaq -0x70(%rbp), %rdi
callq *0x18(%rax)
leaq -0x170(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x6e9f
leaq 0x5c13(%rip), %rdx      # 0xc270
leaq -0x190(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x6f10
leaq -0x1b0(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x6e00
leaq 0xbb6a(%rip), %rdx      # 0x121f8
leaq -0x1d0(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x6e00
leaq -0x1f0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x6e00
leaq 0x5baf(%rip), %rdx      # 0xc26e
leaq -0x210(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x6f10
leaq 0xbb1f(%rip), %rdx      # 0x121f8
leaq -0x210(%rbp), %rsi
movq %rbx, %rdi
callq 0x6e00
leaq -0x210(%rbp), %rdi
callq 0x33a8
leaq -0x1f0(%rbp), %rdi
callq 0x33a8
leaq -0x1d0(%rbp), %rdi
callq 0x33a8
leaq -0x1b0(%rbp), %rdi
callq 0x33a8
leaq -0x190(%rbp), %rdi
callq 0x33a8
leaq -0x170(%rbp), %rdi
callq 0x33a8
leaq -0x70(%rbp), %rdi
callq 0x33a8
leaq -0x150(%rbp), %rdi
callq 0x33a8
leaq -0x130(%rbp), %rdi
callq 0x33a8
leaq -0x110(%rbp), %rdi
callq 0x33a8
leaq -0xf0(%rbp), %rdi
callq 0x33a8
leaq -0x90(%rbp), %rdi
callq 0x33a8
leaq -0xd0(%rbp), %rdi
callq 0x33a8
leaq -0xb0(%rbp), %rdi
callq 0x33a8
leaq -0x30(%rbp), %rdi
callq 0x33a8
leaq -0x50(%rbp), %rdi
callq 0x33a8
movq %rbx, %rax
addq $0x200, %rsp            # imm = 0x200
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq -0x210(%rbp), %rdi
callq 0x33a8
jmp 0x67c2
movq %rax, %rbx
leaq -0x1f0(%rbp), %rdi
callq 0x33a8
jmp 0x67d3
movq %rax, %rbx
leaq -0x1d0(%rbp), %rdi
callq 0x33a8
jmp 0x67e4
movq %rax, %rbx
leaq -0x1b0(%rbp), %rdi
callq 0x33a8
jmp 0x67f5
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
callq 0x33a8
leaq -0x170(%rbp), %rdi
callq 0x33a8
leaq -0x70(%rbp), %rdi
callq 0x33a8
leaq -0x150(%rbp), %rdi
callq 0x33a8
leaq -0x130(%rbp), %rdi
callq 0x33a8
leaq -0x110(%rbp), %rdi
callq 0x33a8
leaq -0xf0(%rbp), %rdi
callq 0x33a8
leaq -0x90(%rbp), %rdi
callq 0x33a8
leaq -0xd0(%rbp), %rdi
callq 0x33a8
leaq -0xb0(%rbp), %rdi
callq 0x33a8
leaq -0x30(%rbp), %rdi
callq 0x33a8
leaq -0x50(%rbp), %rdi
callq 0x33a8
movq %rbx, %rdi
callq 0x3350
movq %rax, %rbx
jmp 0x6801
movq %rax, %rbx
jmp 0x680d
movq %rax, %rbx
jmp 0x6816
movq %rax, %rbx
jmp 0x6822
movq %rax, %rbx
jmp 0x682e
movq %rax, %rbx
jmp 0x683a
movq %rax, %rbx
jmp 0x6846
movq %rax, %rbx
jmp 0x6852
movq %rax, %rbx
jmp 0x685e
movq %rax, %rbx
jmp 0x686a
movq %rax, %rbx
jmp 0x6873