// File: navrajsaini[P]PL_Compiler_design_project/parser.cpp
// Function: Parse::IfStat()
void Parse::IfStat()//if statements
{where="IS";check();

   match();
   int startL = newLabel(), doneL= newLabel(), pass1 = startL, pass2 = doneL;
   GarCmdList(pass1, pass2);
   gen.emit2("DEFADDR", startL);
   if(LHS=="fi")
   {
      gen.emit2("FI", ln[tokeNum][0]);
      match();
      gen.emit2("DEFADDR", doneL);
   }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 0x7c25(%rip), %rsi      # 0x1f96d
callq 0x2280
movq -0xb8(%rbp), %rdi
callq 0x15310
movq -0xb8(%rbp), %rdi
callq 0x14f20
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)
movl -0x18(%rbp), %edx
leaq -0x14(%rbp), %rsi
callq 0x18850
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 0x7a32(%rip), %rsi      # 0x1f806
leaq -0x38(%rbp), %rdi
callq 0x2290
jmp 0x17ddf
movq -0xb0(%rbp), %rdi
movl -0xc(%rbp), %edx
leaq -0x38(%rbp), %rsi
callq 0x12f70
jmp 0x17df4
leaq -0x38(%rbp), %rdi
callq 0x2130
leaq -0x39(%rbp), %rdi
callq 0x21e0
movq -0xb8(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x7224(%rip), %rsi      # 0x1f03f
callq 0x10ea0
testb $0x1, %al
jne 0x17e29
jmp 0x17fb7
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 0x7b15(%rip), %rsi      # 0x1f970
leaq -0x70(%rbp), %rdi
callq 0x2290
jmp 0x17e66
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 0x17e91
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 0x7922(%rip), %rsi      # 0x1f806
leaq -0x98(%rbp), %rdi
callq 0x2290
jmp 0x17ef2
movq -0xd8(%rbp), %rdi
movl -0x10(%rbp), %edx
leaq -0x98(%rbp), %rsi
callq 0x12f70
jmp 0x17f0a
leaq -0x98(%rbp), %rdi
callq 0x2130
leaq -0x99(%rbp), %rdi
callq 0x21e0
jmp 0x17fc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17f4a
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 0x17fcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17f78
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 0x17fcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17fa9
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 0x17fcc
movq -0xb8(%rbp), %rdi
callq 0x15110
addq $0xe0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x2340
nopw %cs:(%rax,%rax)