// File: navrajsaini[P]PL_Compiler_design_project/parser.cpp
// Function: Parse::Factor()
void Parse::Factor()//factor
{where="F";check();
   if(LHS=="num"||LHS=="false"||LHS=="true")
   {
      Const();
      gen.emit2("CONSTANT", tpVl);
      
   }else if(LHS=="id")
   {
      VarAc();
      gen.emit1("VALUE");
   }else if(LHS=="(")
   {
      match();
      Exp();
      if(LHS==")")
      {
	 match();
      }else
	 errorReport();
   }else if(LHS=="~")
   {
      gen.emit1("NOT");
      match();
      Factor();
   }else
      errorReport();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x98(%rbp)
addq $0x5098, %rdi           # imm = 0x5098
leaq 0x642f(%rip), %rsi      # 0x1f9e7
callq 0x2280
movq -0x98(%rbp), %rdi
callq 0x15310
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5ce6(%rip), %rsi      # 0x1f2c4
callq 0x10ea0
testb $0x1, %al
jne 0x19628
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5d5e(%rip), %rsi      # 0x1f35a
callq 0x10ea0
testb $0x1, %al
jne 0x19628
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5d46(%rip), %rsi      # 0x1f360
callq 0x10ea0
testb $0x1, %al
jne 0x19628
jmp 0x196d8
movq -0x98(%rbp), %rdi
callq 0x16ba0
movq -0x98(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xa8(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x2350
movq -0xa0(%rbp), %rdx
leaq 0x6383(%rip), %rsi      # 0x1f9e9
leaq -0x28(%rbp), %rdi
callq 0x2290
jmp 0x19671
movq -0xa8(%rbp), %rdi
movq -0x98(%rbp), %rax
movl 0x7228(%rax), %edx
leaq -0x28(%rbp), %rsi
callq 0x12f70
jmp 0x19690
leaq -0x28(%rbp), %rdi
callq 0x2130
leaq -0x29(%rbp), %rdi
callq 0x21e0
jmp 0x19908
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x196ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2130
leaq -0x29(%rbp), %rdi
callq 0x21e0
jmp 0x19911
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5c8b(%rip), %rsi      # 0x1f378
callq 0x10ea0
testb $0x1, %al
jne 0x196fb
jmp 0x1979e
movq -0x98(%rbp), %rdi
callq 0x18330
movq -0x98(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xb8(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x2350
movq -0xb0(%rbp), %rdx
leaq 0x62b9(%rip), %rsi      # 0x1f9f2
leaq -0x60(%rbp), %rdi
callq 0x2290
jmp 0x19744
movq -0xb8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x12ef0
jmp 0x19756
leaq -0x60(%rbp), %rdi
callq 0x2130
leaq -0x61(%rbp), %rdi
callq 0x21e0
jmp 0x19906
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x19790
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2130
leaq -0x61(%rbp), %rdi
callq 0x21e0
jmp 0x19911
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5b21(%rip), %rsi      # 0x1f2d4
callq 0x10ea0
testb $0x1, %al
jne 0x197be
jmp 0x19815
movq -0x98(%rbp), %rdi
callq 0x14f20
movq -0x98(%rbp), %rdi
callq 0x18770
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5c8c(%rip), %rsi      # 0x1f477
callq 0x10ea0
testb $0x1, %al
jne 0x197f6
jmp 0x19804
movq -0x98(%rbp), %rdi
callq 0x14f20
jmp 0x19810
movq -0x98(%rbp), %rdi
callq 0x15110
jmp 0x19904
movq -0x98(%rbp), %rdi
addq $0x5050, %rdi           # imm = 0x5050
leaq 0x5b41(%rip), %rsi      # 0x1f36b
callq 0x10ea0
testb $0x1, %al
jne 0x19838
jmp 0x198f6
movq -0x98(%rbp), %rax
addq $0x50c0, %rax           # imm = 0x50C0
movq %rax, -0xc8(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x2350
movq -0xc0(%rbp), %rdx
leaq 0x618b(%rip), %rsi      # 0x1f9f8
leaq -0x88(%rbp), %rdi
callq 0x2290
jmp 0x1987b
movq -0xc8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x12ef0
jmp 0x19890
leaq -0x88(%rbp), %rdi
callq 0x2130
leaq -0x89(%rbp), %rdi
callq 0x21e0
movq -0x98(%rbp), %rdi
callq 0x14f20
movq -0x98(%rbp), %rdi
callq 0x19590
jmp 0x19902
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x198e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x2130
leaq -0x89(%rbp), %rdi
callq 0x21e0
jmp 0x19911
movq -0x98(%rbp), %rdi
callq 0x15110
jmp 0x19904
jmp 0x19906
jmp 0x19908
addq $0xd0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x2340
nopw (%rax,%rax)