// File: lhydave[P]SysYCompilerLab/front/node.cpp
// Function: sysY_AST::while_stmt_node::gen_code()
void while_stmt_node::gen_code()
{
	code = "l" + to_string(while_start_label) + ":\n";
	code += cond->code;
	code += "l" + to_string(true_label) + ":\n";
	code += true_stmt->code;
	code += "\tgoto l" + to_string(while_start_label) + "\n";
	code += "l" + to_string(while_next_label) + ":\n";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movl 0x63ea0(%rip), %esi     # 0x72420
leaq -0x68(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x13410
movq -0x1a0(%rbp), %rdx
leaq 0x3f6ca(%rip), %rsi     # 0x4dc68
leaq -0x48(%rbp), %rdi
callq 0x14000
jmp 0xe5a9
leaq 0x3f6af(%rip), %rdx     # 0x4dc5f
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x12d10
jmp 0xe5bf
movq -0x1a8(%rbp), %rdi
addq $0x18, %rdi
movq %rdi, -0x1b8(%rbp)
leaq -0x28(%rbp), %rsi
movq %rsi, -0x1c0(%rbp)
callq 0x5410
movq -0x1c0(%rbp), %rdi
callq 0x56c0
leaq -0x48(%rbp), %rdi
callq 0x56c0
leaq -0x68(%rbp), %rdi
callq 0x56c0
movq -0x1b8(%rbp), %rdi
movq -0x1a8(%rbp), %rax
movq 0x40(%rax), %rsi
addq $0x18, %rsi
callq 0x5440
movq -0x1a8(%rbp), %rax
movl 0x50(%rax), %esi
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x13410
movq -0x1b0(%rbp), %rdx
leaq 0x3f623(%rip), %rsi     # 0x4dc68
leaq -0xb8(%rbp), %rdi
callq 0x14000
jmp 0xe653
leaq 0x3f605(%rip), %rdx     # 0x4dc5f
leaq -0x98(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x12d10
jmp 0xe66f
movq -0x1a8(%rbp), %rdi
addq $0x18, %rdi
leaq -0x98(%rbp), %rsi
callq 0x5440
jmp 0xe688
leaq -0x98(%rbp), %rdi
callq 0x56c0
leaq -0xb8(%rbp), %rdi
callq 0x56c0
leaq -0xd8(%rbp), %rdi
callq 0x56c0
movq -0x1a8(%rbp), %rdi
movq 0x48(%rdi), %rsi
addq $0x18, %rsi
addq $0x18, %rdi
callq 0x5440
movl 0x63d56(%rip), %esi     # 0x72420
leaq -0x138(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x13410
movq -0x1c8(%rbp), %rdx
leaq 0x3f577(%rip), %rsi     # 0x4dc62
leaq -0x118(%rbp), %rdi
callq 0x14000
jmp 0xe6f9
leaq 0x3f540(%rip), %rdx     # 0x4dc40
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x12d10
jmp 0xe715
movq -0x1a8(%rbp), %rdi
addq $0x18, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x5440
jmp 0xe72e
leaq -0xf8(%rbp), %rdi
callq 0x56c0
leaq -0x118(%rbp), %rdi
callq 0x56c0
leaq -0x138(%rbp), %rdi
callq 0x56c0
movl 0x63ccc(%rip), %esi     # 0x72424
leaq -0x198(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x13410
movq -0x1d0(%rbp), %rdx
leaq 0x3f4ef(%rip), %rsi     # 0x4dc68
leaq -0x178(%rbp), %rdi
callq 0x14000
jmp 0xe787
leaq 0x3f4d1(%rip), %rdx     # 0x4dc5f
leaq -0x158(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x12d10
jmp 0xe7a3
movq -0x1a8(%rbp), %rdi
addq $0x18, %rdi
leaq -0x158(%rbp), %rsi
callq 0x5440
jmp 0xe7bc
leaq -0x158(%rbp), %rdi
callq 0x56c0
leaq -0x178(%rbp), %rdi
callq 0x56c0
leaq -0x198(%rbp), %rdi
callq 0x56c0
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe80c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x56c0
leaq -0x68(%rbp), %rdi
callq 0x56c0
jmp 0xe905
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe85a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe84e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x56c0
leaq -0xb8(%rbp), %rdi
callq 0x56c0
leaq -0xd8(%rbp), %rdi
callq 0x56c0
jmp 0xe905
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe89f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x56c0
leaq -0x118(%rbp), %rdi
callq 0x56c0
leaq -0x138(%rbp), %rdi
callq 0x56c0
jmp 0xe905
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x56c0
leaq -0x178(%rbp), %rdi
callq 0x56c0
leaq -0x198(%rbp), %rdi
callq 0x56c0
movq -0x70(%rbp), %rdi
callq 0x5610
nop