// File: smallsimple[P]CoreInterpreter-CSE5341/Comp.cpp
// Function: Comp::ParseComp()
void Comp::ParseComp(){
  Tokenizer *tokensComp;
  tokensComp = Tokenizer::getInstance();
  string tokenTemp = tokensComp->getToken();
  if (tokenTemp.compare("(") == 0){
    tokensComp->skipToken();
    op1 = new Op();
    op1->ParseOp();
    tokenTemp = tokensComp->getToken();
    if (tokenTemp.compare("!=") == 0)
      alterId = 1;
    else if (tokenTemp.compare("==") == 0)
      alterId = 2;
    else if (tokenTemp.compare("<") == 0)
      alterId = 3;
    else if (tokenTemp.compare(">") == 0)
      alterId = 4;
    else if (tokenTemp.compare("<=") == 0)
      alterId = 5;
    else if (tokenTemp.compare(">=") == 0)
      alterId = 6;
    else {
      cout << "Error: Comp Op not found!" << endl;
      cout << "program stopped." << endl;
      exit(0);
    }
    tokensComp->skipToken();
    op2 = new Op();
    op2->ParseOp();
    tokenTemp = tokensComp->getToken();
    if (tokenTemp.compare(")") == 0){
      tokensComp->skipToken();
      return;
    }
    else {
      cout << "Error: ParseComp: \"(\" not found!" << endl;
      cout << "program stopped." << endl;
      exit(0);
    }
  }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
callq 0x48d0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x4940
leaq -0x30(%rbp), %rdi
leaq 0x10a8(%rip), %rsi      # 0xc0d3
callq 0x2090
cmpl $0x0, %eax
jne 0xb360
movq -0x10(%rbp), %rdi
callq 0x49c0
jmp 0xb044
movl $0x20, %edi
callq 0x21e0
movq %rax, -0x98(%rbp)
jmp 0xb057
movq -0x98(%rbp), %rdi
callq 0x8d40
jmp 0xb065
movq -0x90(%rbp), %rax
movq -0x98(%rbp), %rcx
movq %rcx, (%rax)
movq (%rax), %rdi
callq 0x8f10
jmp 0xb080
movq -0x10(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x4940
jmp 0xb08f
leaq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2290
leaq -0x60(%rbp), %rdi
callq 0x2110
leaq -0x30(%rbp), %rdi
leaq 0x102b(%rip), %rsi      # 0xc0db
callq 0x2090
cmpl $0x0, %eax
jne 0xb100
movq -0x90(%rbp), %rax
movl $0x1, 0x10(%rax)
jmp 0xb238
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xb37c
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x20, %esi
callq 0x21f0
jmp 0xb37c
leaq -0x30(%rbp), %rdi
leaq 0xf8c(%rip), %rsi       # 0xc097
callq 0x2090
cmpl $0x0, %eax
jne 0xb128
movq -0x90(%rbp), %rax
movl $0x2, 0x10(%rax)
jmp 0xb236
leaq -0x30(%rbp), %rdi
leaq 0xfab(%rip), %rsi       # 0xc0de
callq 0x2090
cmpl $0x0, %eax
jne 0xb150
movq -0x90(%rbp), %rax
movl $0x3, 0x10(%rax)
jmp 0xb234
leaq -0x30(%rbp), %rdi
leaq 0xf85(%rip), %rsi       # 0xc0e0
callq 0x2090
cmpl $0x0, %eax
jne 0xb178
movq -0x90(%rbp), %rax
movl $0x4, 0x10(%rax)
jmp 0xb232
leaq -0x30(%rbp), %rdi
leaq 0xf5f(%rip), %rsi       # 0xc0e2
callq 0x2090
cmpl $0x0, %eax
jne 0xb1a0
movq -0x90(%rbp), %rax
movl $0x5, 0x10(%rax)
jmp 0xb230
leaq -0x30(%rbp), %rdi
leaq 0xf3a(%rip), %rsi       # 0xc0e5
callq 0x2090
cmpl $0x0, %eax
jne 0xb1c5
movq -0x90(%rbp), %rax
movl $0x6, 0x10(%rax)
jmp 0xb22e
movq 0x5e0c(%rip), %rdi      # 0x10fd8
leaq 0x1881(%rip), %rsi      # 0xca54
callq 0x21d0
movq %rax, -0xa0(%rbp)
jmp 0xb1e1
movq -0xa0(%rbp), %rdi
movq 0x5dd9(%rip), %rsi      # 0x10fc8
callq 0x2210
jmp 0xb1f6
movq 0x5ddb(%rip), %rdi      # 0x10fd8
leaq 0xf42(%rip), %rsi       # 0xc146
callq 0x21d0
movq %rax, -0xa8(%rbp)
jmp 0xb212
movq -0xa8(%rbp), %rdi
movq 0x5da8(%rip), %rsi      # 0x10fc8
callq 0x2210
jmp 0xb227
xorl %edi, %edi
callq 0x2280
jmp 0xb230
jmp 0xb232
jmp 0xb234
jmp 0xb236
jmp 0xb238
movq -0x10(%rbp), %rdi
callq 0x49c0
jmp 0xb243
movl $0x20, %edi
callq 0x21e0
movq %rax, -0xb0(%rbp)
jmp 0xb256
movq -0xb0(%rbp), %rdi
callq 0x8d40
jmp 0xb264
movq -0x90(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rax), %rdi
callq 0x8f10
jmp 0xb281
movq -0x10(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x4940
jmp 0xb290
leaq -0x30(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x2290
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0x30(%rbp), %rdi
leaq 0x13b3(%rip), %rsi      # 0xc664
callq 0x2090
cmpl $0x0, %eax
jne 0xb2f7
movq -0x10(%rbp), %rdi
callq 0x49c0
jmp 0xb2c6
movl $0x1, -0x84(%rbp)
jmp 0xb36a
movq -0xb0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0x20, %esi
callq 0x21f0
jmp 0xb37c
movq 0x5cda(%rip), %rdi      # 0x10fd8
leaq 0x1769(%rip), %rsi      # 0xca6e
callq 0x21d0
movq %rax, -0xb8(%rbp)
jmp 0xb313
movq -0xb8(%rbp), %rdi
movq 0x5ca7(%rip), %rsi      # 0x10fc8
callq 0x2210
jmp 0xb328
movq 0x5ca9(%rip), %rdi      # 0x10fd8
leaq 0xe10(%rip), %rsi       # 0xc146
callq 0x21d0
movq %rax, -0xc0(%rbp)
jmp 0xb344
movq -0xc0(%rbp), %rdi
movq 0x5c76(%rip), %rsi      # 0x10fc8
callq 0x2210
jmp 0xb359
xorl %edi, %edi
callq 0x2280
movl $0x0, -0x84(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x2110
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x2110
movq -0x38(%rbp), %rdi
callq 0x2370