// File: navrajsaini[P]PL_Compiler_design_project/parser.cpp
// Function: Parse::DoStat()
void Parse::DoStat()//do statement
{where="DS";check();
   int startL = newLabel(), loopL= newLabel(), pass1 = startL, pass2 = loopL;
   
   match();
   gen.emit2("DEFADDR", loopL);
   GarCmdList(pass1, pass2);
   if(LHS=="od")
   {
      gen.emit2("OD", ln[tokeNum][0]);
      match();
       gen.emit2("DEFADDR", startL);
   }else
	 errorReport();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
addq $0x5098, %rdi           # imm = 0x5098
leaq 0x796b(%rip), %rsi      # 0x1f973
callq 0x2280
movq -0xb8(%rbp), %rdi
callq 0x15310
movq -0xb8(%rbp), %rdi
callq 0x15e60
movq -0xb8(%rbp), %rdi
movl %eax, -0xc(%rbp)
callq 0x15e60
movq -0xb8(%rbp), %rdi
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x18(%rbp)
callq 0x14f20
movq -0xb8(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xb0(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x2350
movq -0xa8(%rbp), %rdx
leaq 0x7785(%rip), %rsi      # 0x1f806
leaq -0x38(%rbp), %rdi
callq 0x2290
jmp 0x1808c
movq -0xb0(%rbp), %rdi
movl -0x10(%rbp), %edx
leaq -0x38(%rbp), %rsi
callq 0x12f70
jmp 0x180a1
leaq -0x38(%rbp), %rdi
callq 0x2130
leaq -0x39(%rbp), %rdi
callq 0x21e0
movq -0xb8(%rbp), %rdi
movl -0x18(%rbp), %edx
leaq -0x14(%rbp), %rsi
callq 0x18850
movq -0xb8(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x727c(%rip), %rsi      # 0x1f357
callq 0x10ea0
testb $0x1, %al
jne 0x180e9
jmp 0x18277
movq -0xb8(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xc8(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x2350
movq -0xc0(%rbp), %rdx
leaq 0x785b(%rip), %rsi      # 0x1f976
leaq -0x70(%rbp), %rdi
callq 0x2290
jmp 0x18126
movq -0xc8(%rbp), %rdi
movq -0xb8(%rbp), %rax
movslq 0x2028(%rax), %rcx
leaq (%rcx,%rcx,2), %rcx
movl 0x2030(%rax,%rcx,4), %edx
leaq -0x70(%rbp), %rsi
callq 0x12f70
jmp 0x18151
leaq -0x70(%rbp), %rdi
callq 0x2130
leaq -0x71(%rbp), %rdi
callq 0x21e0
movq -0xb8(%rbp), %rdi
callq 0x14f20
movq -0xb8(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xd8(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x2350
movq -0xd0(%rbp), %rdx
leaq 0x7662(%rip), %rsi      # 0x1f806
leaq -0x98(%rbp), %rdi
callq 0x2290
jmp 0x181b2
movq -0xd8(%rbp), %rdi
movl -0xc(%rbp), %edx
leaq -0x98(%rbp), %rsi
callq 0x12f70
jmp 0x181ca
leaq -0x98(%rbp), %rdi
callq 0x2130
leaq -0x99(%rbp), %rdi
callq 0x21e0
jmp 0x18283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1820a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x2130
leaq -0x39(%rbp), %rdi
callq 0x21e0
jmp 0x1828c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18238
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x2130
leaq -0x71(%rbp), %rdi
callq 0x21e0
jmp 0x1828c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18269
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x2130
leaq -0x99(%rbp), %rdi
callq 0x21e0
jmp 0x1828c
movq -0xb8(%rbp), %rdi
callq 0x15110
addq $0xe0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x2340
nopw %cs:(%rax,%rax)