// File: /workspace/github_cpp_makefile_star2_O3/smallsimple[P]CoreInterpreter-CSE5341/Ifc.cpp
// Function: Ifc::ParseIfc()
void Ifc::ParseIfc(){
  Tokenizer *tokensIfc;
  tokensIfc = Tokenizer::getInstance();
  string tokenTemp = tokensIfc->getToken();
  if (tokenTemp.compare("if") == 0){
    tokensIfc->skipToken();
    cond = new Cond();
    cond->ParseCond();
    tokenTemp = tokensIfc->getToken();
    if (tokenTemp.compare("then") == 0){
      tokensIfc->skipToken();
      stmtSeq1 = new StmtSeq(infile);
      stmtSeq1->ParseStmtSeq();
      tokenTemp = tokensIfc->getToken();
      if (tokenTemp.compare("end") == 0){
	tokensIfc->skipToken();
	tokenTemp = tokensIfc->getToken();
	if (tokenTemp.compare(";") == 0){
	  tokensIfc->skipToken();
	  return;
	}
	else{
	  cout << "Syntax Error: ParseIfc: \";\" not found or not in the right place." << endl;
	  cout << "program stopped." << endl;
	  exit(0);
	}
      }
      else if (tokenTemp.compare("else") == 0){
	tokensIfc->skipToken();
	stmtSeq2 = new StmtSeq(infile);
	stmtSeq2->ParseStmtSeq();
	tokenTemp = tokensIfc->getToken();
	if (tokenTemp.compare("end") == 0){
	  tokensIfc->skipToken();
	  tokenTemp = tokensIfc->getToken();
	  if (tokenTemp.compare(";") == 0){
	    tokensIfc->skipToken();
	    return;
	  }
	  else {
	    cout << "Syntax Error: ParseIfc: \";\" not found or not in the right place." << endl;
	    cout << "program stopped." << endl;
	    exit(0);
	  }
	}
	else{
	    cout << "Syntax Error: ParseIfc: \";\" not found or not in the right place." << endl;
	    cout << "program stopped." << endl;
	    exit(0);
	}
      }
      else {
	cout << "Syntax Error: ParseIfc: no \"end\" or \"else\" is found" << endl;
	cout << "program stopped." << endl;
	exit(0);
      }
    }
  }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rdi, %r14
callq 0x3c70
movq %rax, %rbx
leaq -0x60(%rbp), %r15
movq %r15, %rdi
movq %rax, %rsi
callq 0x3cc4
leaq 0x1c0d(%rip), %rsi      # 0x890d
movq %r15, %rdi
callq 0x2090
testl %eax, %eax
jne 0x6f77
movq %rbx, %rdi
callq 0x3da6
movl $0x20, %edi
callq 0x2190
movq %rax, %r15
movq %rax, %rdi
callq 0x70d0
movq %r15, (%r14)
movq %r15, %rdi
callq 0x72bc
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x3cc4
leaq -0x60(%rbp), %rdi
leaq -0x40(%rbp), %r15
movq %r15, %rsi
callq 0x2200
movq (%r15), %rdi
leaq -0x30(%rbp), %r12
cmpq %r12, %rdi
je 0x6d6c
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x21a0
leaq 0x1b95(%rip), %rsi      # 0x8908
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
jne 0x6f77
movq %rbx, %rdi
callq 0x3da6
movl $0x18, %edi
callq 0x2190
movq %rax, %r15
movq 0x18(%r14), %rsi
movq %rax, %rdi
callq 0x4b80
movq %r15, 0x8(%r14)
movq %r15, %rdi
callq 0x4bd6
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x3cc4
leaq -0x60(%rbp), %rdi
leaq -0x40(%rbp), %r15
movq %r15, %rsi
callq 0x2200
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x6de1
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x21a0
leaq 0x12c0(%rip), %rsi      # 0x80a8
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
je 0x6f1f
leaq 0x1630(%rip), %rsi      # 0x8430
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
jne 0x6f9d
movq %rbx, %rdi
callq 0x3da6
movl $0x18, %edi
callq 0x2190
movq %rax, %r15
movq 0x18(%r14), %rsi
movq %rax, %rdi
callq 0x4b80
movq %r15, 0x10(%r14)
movq %r15, %rdi
callq 0x4bd6
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x3cc4
leaq -0x60(%rbp), %rdi
leaq -0x40(%rbp), %r14
movq %r14, %rsi
callq 0x2200
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x6e6e
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x21a0
leaq 0x1233(%rip), %rsi      # 0x80a8
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
jne 0x6fea
movq %rbx, %rdi
callq 0x3da6
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x3cc4
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x2200
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x6eba
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18a9(%rip), %rsi      # 0x876a
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
je 0x6f6f
movq 0x50ff(%rip), %rdi      # 0xbfd8
leaq 0x1a30(%rip), %rsi      # 0x8910
movl $0x40, %edx
callq 0x21d0
movq 0x50e7(%rip), %rdi      # 0xbfd8
callq 0x20c0
movq 0x50db(%rip), %rdi      # 0xbfd8
leaq 0x1216(%rip), %rsi      # 0x811a
movl $0x10, %edx
callq 0x21d0
movq 0x50c3(%rip), %rdi      # 0xbfd8
callq 0x20c0
jmp 0x707c
movq %rbx, %rdi
callq 0x3da6
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x3cc4
leaq -0x60(%rbp), %rdi
leaq -0x40(%rbp), %r14
movq %r14, %rsi
callq 0x2200
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x6f57
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x21a0
leaq 0x180c(%rip), %rsi      # 0x876a
leaq -0x60(%rbp), %rdi
callq 0x2090
testl %eax, %eax
jne 0x7034
movq %rbx, %rdi
callq 0x3da6
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f90
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x21a0
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x5034(%rip), %rdi      # 0xbfd8
leaq 0x19a6(%rip), %rsi      # 0x8951
movl $0x33, %edx
callq 0x21d0
movq 0x501c(%rip), %rdi      # 0xbfd8
callq 0x20c0
movq 0x5010(%rip), %rdi      # 0xbfd8
leaq 0x114b(%rip), %rsi      # 0x811a
movl $0x10, %edx
callq 0x21d0
movq 0x4ff8(%rip), %rdi      # 0xbfd8
callq 0x20c0
jmp 0x707c
movq 0x4fe7(%rip), %rdi      # 0xbfd8
leaq 0x1918(%rip), %rsi      # 0x8910
movl $0x40, %edx
callq 0x21d0
movq 0x4fcf(%rip), %rdi      # 0xbfd8
callq 0x20c0
movq 0x4fc3(%rip), %rdi      # 0xbfd8
leaq 0x10fe(%rip), %rsi      # 0x811a
movl $0x10, %edx
callq 0x21d0
movq 0x4fab(%rip), %rdi      # 0xbfd8
callq 0x20c0
jmp 0x707c
movq 0x4f9d(%rip), %rdi      # 0xbfd8
leaq 0x18ce(%rip), %rsi      # 0x8910
movl $0x40, %edx
callq 0x21d0
movq 0x4f85(%rip), %rdi      # 0xbfd8
callq 0x20c0
movq 0x4f79(%rip), %rdi      # 0xbfd8
leaq 0x10b4(%rip), %rsi      # 0x811a
movl $0x10, %edx
callq 0x21d0
movq 0x4f61(%rip), %rdi      # 0xbfd8
callq 0x20c0
xorl %edi, %edi
callq 0x21f0
jmp 0x70ab
jmp 0x70ab
jmp 0x70ab
jmp 0x708d
jmp 0x70ab
movq %rax, %rbx
movl $0x18, %esi
jmp 0x70a1
jmp 0x70ab
movq %rax, %rbx
movl $0x20, %esi
movq %r15, %rdi
callq 0x21a0
jmp 0x70ae
movq %rax, %rbx
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x70c7
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %rdi
callq 0x22a0
nop