// File: navrajsaini[P]PL_Compiler_design_project/parser.cpp
// Function: Parse::GarCmd(int&, int)
void Parse::GarCmd(int &l1, int l2)//guarded command
{where="GC";check();

   gen.emit2("DEFADDR", l1);
      Exp();
   l1 = newLabel();
   if(LHS=="->")
   {
      gen.emit2("ARROW", l1);
      match();
      StatPtr();
      gen.emit2("BAR", l2);
   }else
      errorReport();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
addq $0x5098, %rdi           # imm = 0x5098
leaq 0x70a3(%rip), %rsi      # 0x1f982
callq 0x2280
movq -0xb8(%rbp), %rdi
callq 0x15310
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 0x6ee4(%rip), %rsi      # 0x1f806
leaq -0x38(%rbp), %rdi
callq 0x2290
jmp 0x1892d
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %edx
leaq -0x38(%rbp), %rsi
callq 0x12f70
jmp 0x18945
leaq -0x38(%rbp), %rdi
callq 0x2130
leaq -0x39(%rbp), %rdi
callq 0x21e0
movq -0xb8(%rbp), %rdi
callq 0x18770
movq -0xb8(%rbp), %rdi
callq 0x15e60
movq -0xb8(%rbp), %rdi
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x69e9(%rip), %rsi      # 0x1f375
callq 0x10ea0
testb $0x1, %al
jne 0x1899a
jmp 0x18b21
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 0x6fb9(%rip), %rsi      # 0x1f985
leaq -0x70(%rbp), %rdi
callq 0x2290
jmp 0x189d7
movq -0xc8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %edx
leaq -0x70(%rbp), %rsi
callq 0x12f70
jmp 0x189ef
leaq -0x70(%rbp), %rdi
callq 0x2130
leaq -0x71(%rbp), %rdi
callq 0x21e0
movq -0xb8(%rbp), %rdi
callq 0x14f20
movq -0xb8(%rbp), %rdi
callq 0x161d0
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 0x6f3d(%rip), %rsi      # 0x1f98b
leaq -0x98(%rbp), %rdi
callq 0x2290
jmp 0x18a5c
movq -0xd8(%rbp), %rdi
movl -0x14(%rbp), %edx
leaq -0x98(%rbp), %rsi
callq 0x12f70
jmp 0x18a74
leaq -0x98(%rbp), %rdi
callq 0x2130
leaq -0x99(%rbp), %rdi
callq 0x21e0
jmp 0x18b2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18ab4
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 0x18b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18ae2
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 0x18b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x18b13
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 0x18b36
movq -0xb8(%rbp), %rdi
callq 0x15110
addq $0xe0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x2340
nop