// File: /workspace/github_c_makefile_star2_O0/g3ida[P]g3idaCompiler/lexical.c
// Function: analLex
Symbole analLex(void)
{
 /* index for storing into lexeme */
   int lexemeIndex = 0;
   /* holds current token to be returned */
   Symbole current;
   /* current state - always begins at START */
   StateType state = START;
   /* flag to indicate save to lexeme */
   int save;
   while (state != DONE)
   { int c = fgetc(input);
     save = TRUE;
     switch (state)
     { case START:
         if (isdigit(c))
           state = INNUM;
         else if (isalpha(c))
           state = INID;
         else if (c == ':')
           state = INASSIGN;
         else if ((c == ' ') || (c == '\t') || (c == '\n')) {
            if(c == '\n') lineno++;
            save = FALSE;
         }
         else if (c == '(')
         { save = FALSE;
           state = INPARENT;
         }
         else if (c == '=')
         { save = FALSE;
           state = INEQ;
         }
        else if (c == '<')
         { save = FALSE;
           state = INNEQ;
         }
        else if (c == '>')
         { save = FALSE;
           state = INGEQ;
         }
        else if (c == '&')
         { save = FALSE;
           state = INAND;
         }
        else if (c == '|')
         { save = FALSE;
           state = INOR;
         }
         else
         { state = DONE;
           switch (c)
           { case EOF:
               save = FALSE; current = ENDFILE; break;
             case '%':
               current = MOD; break;
             case '+':
               current = PLUS; break;
             case '-':
               current = MINUS; break;
             case '*':
               current = MULT; break;
             case '/':
               current = DIV; break;
            case ',':
               current = COMMA; break;
            case '.':
               current = POINT; break;
             case ')':
               current = RPAREN; break;
             case ';':
               current = SEMI; break;
             default:
               current = ERROR; break;
           }
         }
         break;
        case INPARENT:
          save = FALSE;
          if (c == '*'){
            state = INCOMMENT;
            break;
          } else {
            state = DONE;
            ungetc(c, input);
            current = LPAREN;
          }
          break;

       case INCOMMENT:
         save = FALSE;
         if (c == EOF)
         { state = DONE;
           current = ENDFILE;
         } else if(c == '\n') {
            lineno++;
         }
         else if (c == '*') {
            int v = fgetc(input);
            if(v == ')') {
                state = START;
                break;
            }
         }
         break;
       case INASSIGN:
         state = DONE;
         if (c == '=')
           current = ASSIGN;
         else
         { /* backup in the input */
           ungetc(c, input);
           save = FALSE;
           current = TWOPTS;
           state = DONE;
         }
         break;
       case INNUM:
         if (!isdigit(c))
         { /* backup in the input */
           ungetc(c, input);
           save = FALSE;
           state = DONE;
           current = NUM;
         }
         break;

         case INNEQ:
          if (c == '=') {
            state = DONE;
            current = LTE;
          } else if(c == '>') {
            state = DONE;
            current = NEQ;
          }
          else
          {
            ungetc(c, input);
            state = DONE;
            current = LT;
          }
          break;

          case INGEQ:
          if (c == '=') {
            state = DONE;
            current = GTE;
          }
          else
          { ungetc(c, input);
            state = DONE;
            current = GT;
          }
          break;

         case INAND:
          if (c == '&') {
            state = DONE;
            current = AND;
          } else {
            ungetc(c, input);
            state = DONE;
           current = ERROR;
          }
          break;

        case INOR:
          if (c == '|') {
            state = DONE;
            current = OR;
          } else {
            ungetc(c, input);
            state = DONE;
           current = ERROR;
          }
         break;

        case INEQ:
          if (c == '=') {
            state = DONE;
            current = EQ;
          } else {
            ungetc(c, input);
            state = DONE;
           current = ERROR;
          }
         break;

       case INID:
         if (!isalpha(c) && !isdigit(c))
         { /* backup in the input */
           ungetc(c, input);
           save = FALSE;
           state = DONE;
           current = ID;
         }
         break;
       case DONE:
       default: /* should never happen */
         printf("Scanner Bug\n");
         state = DONE;
         current = ERROR;
         break;
     }
     if ((save) && (lexemeIndex <= MAX_LEN)) {
       lexeme[lexemeIndex++] = (char) c;
     }
     if (state == DONE)
     { lexeme[lexemeIndex] = '\0';
       if (current == ID)
         current = unilexId(lexeme);
     }
   }
   return current;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl $0x0, -0x4(%rbp)
movl $0x0, -0xc(%rbp)
cmpl $0xb, -0xc(%rbp)
je 0x2f3c
movq 0x4169(%rip), %rdi      # 0x6b70
callq 0x1090
movl %eax, -0x14(%rbp)
movl $0x1, -0x10(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0xb, %rax
ja 0x2ec6
movq -0x20(%rbp), %rax
leaq 0x19d6(%rip), %rcx      # 0x4408
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
callq 0x1100
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x2a61
movl $0x3, -0xc(%rbp)
jmp 0x2c0f
callq 0x1100
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x2a87
movl $0x4, -0xc(%rbp)
jmp 0x2c0d
cmpl $0x3a, -0x14(%rbp)
jne 0x2a99
movl $0x1, -0xc(%rbp)
jmp 0x2c0b
cmpl $0x20, -0x14(%rbp)
je 0x2aab
cmpl $0x9, -0x14(%rbp)
je 0x2aab
cmpl $0xa, -0x14(%rbp)
jne 0x2ad2
cmpl $0xa, -0x14(%rbp)
jne 0x2ac6
leaq 0x35e8(%rip), %rax      # 0x60a0
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x35dc(%rip), %rax      # 0x60a0
movl %ecx, (%rax)
movl $0x0, -0x10(%rbp)
jmp 0x2c09
cmpl $0x28, -0x14(%rbp)
jne 0x2aeb
movl $0x0, -0x10(%rbp)
movl $0xa, -0xc(%rbp)
jmp 0x2c07
cmpl $0x3d, -0x14(%rbp)
jne 0x2b04
movl $0x0, -0x10(%rbp)
movl $0x7, -0xc(%rbp)
jmp 0x2c05
cmpl $0x3c, -0x14(%rbp)
jne 0x2b1d
movl $0x0, -0x10(%rbp)
movl $0x6, -0xc(%rbp)
jmp 0x2c03
cmpl $0x3e, -0x14(%rbp)
jne 0x2b36
movl $0x0, -0x10(%rbp)
movl $0x5, -0xc(%rbp)
jmp 0x2c01
cmpl $0x26, -0x14(%rbp)
jne 0x2b4f
movl $0x0, -0x10(%rbp)
movl $0x8, -0xc(%rbp)
jmp 0x2bff
cmpl $0x7c, -0x14(%rbp)
jne 0x2b68
movl $0x0, -0x10(%rbp)
movl $0x9, -0xc(%rbp)
jmp 0x2bfd
movl $0xb, -0xc(%rbp)
movl -0x14(%rbp), %eax
incl %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x3c, %eax
ja 0x2bf4
movq -0x28(%rbp), %rax
leaq 0x18ae(%rip), %rcx      # 0x4438
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x0, -0x10(%rbp)
movl $0x20, -0x8(%rbp)
jmp 0x2bfb
movl $0x1f, -0x8(%rbp)
jmp 0x2bfb
movl $0x19, -0x8(%rbp)
jmp 0x2bfb
movl $0x1a, -0x8(%rbp)
jmp 0x2bfb
movl $0x1d, -0x8(%rbp)
jmp 0x2bfb
movl $0x1e, -0x8(%rbp)
jmp 0x2bfb
movl $0x25, -0x8(%rbp)
jmp 0x2bfb
movl $0x26, -0x8(%rbp)
jmp 0x2bfb
movl $0x12, -0x8(%rbp)
jmp 0x2bfb
movl $0x21, -0x8(%rbp)
jmp 0x2bfb
movl $0x22, -0x8(%rbp)
jmp 0x2bfd
jmp 0x2bff
jmp 0x2c01
jmp 0x2c03
jmp 0x2c05
jmp 0x2c07
jmp 0x2c09
jmp 0x2c0b
jmp 0x2c0d
jmp 0x2c0f
jmp 0x2ee2
movl $0x0, -0x10(%rbp)
cmpl $0x2a, -0x14(%rbp)
jne 0x2c2d
movl $0x2, -0xc(%rbp)
jmp 0x2ee2
movl $0xb, -0xc(%rbp)
movl -0x14(%rbp), %edi
movq 0x3f32(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0x11, -0x8(%rbp)
jmp 0x2ee2
movl $0x0, -0x10(%rbp)
cmpl $-0x1, -0x14(%rbp)
jne 0x2c6c
movl $0xb, -0xc(%rbp)
movl $0x20, -0x8(%rbp)
jmp 0x2cb6
cmpl $0xa, -0x14(%rbp)
jne 0x2c89
leaq 0x3427(%rip), %rax      # 0x60a0
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x341b(%rip), %rax      # 0x60a0
movl %ecx, (%rax)
jmp 0x2cb4
cmpl $0x2a, -0x14(%rbp)
jne 0x2cb2
movq 0x3eda(%rip), %rdi      # 0x6b70
callq 0x1090
movl %eax, -0x18(%rbp)
cmpl $0x29, -0x18(%rbp)
jne 0x2cb0
movl $0x0, -0xc(%rbp)
jmp 0x2ee2
jmp 0x2cb2
jmp 0x2cb4
jmp 0x2cb6
jmp 0x2ee2
movl $0xb, -0xc(%rbp)
cmpl $0x3d, -0x14(%rbp)
jne 0x2cd1
movl $0x23, -0x8(%rbp)
jmp 0x2cf5
movl -0x14(%rbp), %edi
movq 0x3e95(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0x0, -0x10(%rbp)
movl $0x24, -0x8(%rbp)
movl $0xb, -0xc(%rbp)
jmp 0x2ee2
callq 0x1100
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
jne 0x2d38
movl -0x14(%rbp), %edi
movq 0x3e52(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0x0, -0x10(%rbp)
movl $0xb, -0xc(%rbp)
movl $0x1, -0x8(%rbp)
jmp 0x2ee2
cmpl $0x3d, -0x14(%rbp)
jne 0x2d53
movl $0xb, -0xc(%rbp)
movl $0x17, -0x8(%rbp)
jmp 0x2d88
cmpl $0x3e, -0x14(%rbp)
jne 0x2d69
movl $0xb, -0xc(%rbp)
movl $0x14, -0x8(%rbp)
jmp 0x2d86
movl -0x14(%rbp), %edi
movq 0x3dfd(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0xb, -0xc(%rbp)
movl $0x15, -0x8(%rbp)
jmp 0x2d88
jmp 0x2ee2
cmpl $0x3d, -0x14(%rbp)
jne 0x2da3
movl $0xb, -0xc(%rbp)
movl $0x18, -0x8(%rbp)
jmp 0x2dc0
movl -0x14(%rbp), %edi
movq 0x3dc3(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0xb, -0xc(%rbp)
movl $0x16, -0x8(%rbp)
jmp 0x2ee2
cmpl $0x26, -0x14(%rbp)
jne 0x2ddb
movl $0xb, -0xc(%rbp)
movl $0x1c, -0x8(%rbp)
jmp 0x2df8
movl -0x14(%rbp), %edi
movq 0x3d8b(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0xb, -0xc(%rbp)
movl $0x22, -0x8(%rbp)
jmp 0x2ee2
cmpl $0x7c, -0x14(%rbp)
jne 0x2e13
movl $0xb, -0xc(%rbp)
movl $0x1b, -0x8(%rbp)
jmp 0x2e30
movl -0x14(%rbp), %edi
movq 0x3d53(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0xb, -0xc(%rbp)
movl $0x22, -0x8(%rbp)
jmp 0x2ee2
cmpl $0x3d, -0x14(%rbp)
jne 0x2e4b
movl $0xb, -0xc(%rbp)
movl $0x13, -0x8(%rbp)
jmp 0x2e68
movl -0x14(%rbp), %edi
movq 0x3d1b(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0xb, -0xc(%rbp)
movl $0x22, -0x8(%rbp)
jmp 0x2ee2
callq 0x1100
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
jne 0x2ec2
callq 0x1100
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
jne 0x2ec2
movl -0x14(%rbp), %edi
movq 0x3cc8(%rip), %rsi      # 0x6b70
callq 0x10d0
movl $0x0, -0x10(%rbp)
movl $0xb, -0xc(%rbp)
movl $0x0, -0x8(%rbp)
jmp 0x2ee2
jmp 0x2ec6
leaq 0x17a1(%rip), %rdi      # 0x466e
movb $0x0, %al
callq 0x1080
movl $0xb, -0xc(%rbp)
movl $0x22, -0x8(%rbp)
cmpl $0x0, -0x10(%rbp)
je 0x2f0b
cmpl $0x3c, -0x4(%rbp)
jg 0x2f0b
movl -0x14(%rbp), %eax
movb %al, %dl
movl -0x4(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x4(%rbp)
movslq %eax, %rcx
leaq 0x3c78(%rip), %rax      # 0x6b80
movb %dl, (%rax,%rcx)
cmpl $0xb, -0xc(%rbp)
jne 0x2f37
movslq -0x4(%rbp), %rcx
leaq 0x3c64(%rip), %rax      # 0x6b80
movb $0x0, (%rax,%rcx)
cmpl $0x0, -0x8(%rbp)
jne 0x2f35
leaq 0x3c53(%rip), %rdi      # 0x6b80
callq 0x2f50
movl %eax, -0x8(%rbp)
jmp 0x2f37
jmp 0x29f6
movl -0x8(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)