// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/lang.c
// Function: evaluate_expression_list
variableptr evaluate_expression_list(Expnodeptr list)
{
 /*!Last Changed 12.08.2010*/
 /*!Last Changed 03.01.2006*/
 variableptr result, tmparray;
 char st[MAXLENGTH];
 Expnodeptr s[STACKSIZE];
 Stackptr indexstack;
 Expnodeptr tmp, operand1, operand2, tmpresult, next;
 int top = -1, optype, index;
 tmp = infix_to_postfix_conversion(list);
 while (tmp)
  {
   next = tmp->next;
   if (tmp->type != NO_TYPE)
    {
     top++;
     s[top] = tmp;
    }
   else
    {
     optype = listindexc(tmp->name[0], operators, 7);
     if (optype == -1)
      {
       sprintf(st, "%s[]", tmp->name);
       tmparray = get_variable(st);
       if (tmparray && tmparray->type == ARRAY_TYPE)
        {
         indexstack = stack();
         while (tmparray->type == ARRAY_TYPE)
          {
           operand1 = s[top];
           if (operand1->type == INTEGER_TYPE)
             index = operand1->value.intvalue;
           else 
             index = (int) operand1->value.floatvalue;
           push(indexstack, index);
           tmparray = &(tmparray->value.array[0]);
           top--;
           free_expnode(operand1);
          }
         tmparray = get_variable(st);
         while (tmparray->type == ARRAY_TYPE)
          {
           index = pop(indexstack);
           tmparray = &(tmparray->value.array[index - 1]);
          }
         free_stack(indexstack);
         tmpresult = safemalloc(sizeof(Expnode), "evaluate_expression_list", 33);
         tmpresult->type = tmparray->type;
         if (tmparray->type == INTEGER_TYPE)
           tmpresult->value.intvalue = tmparray->value.intvalue;
         else
           tmpresult->value.floatvalue = tmparray->value.floatvalue;
         top++;
         s[top] = tmpresult;
        }
       else
         return NULL;
      }
     else 
      {
       operand2 = s[top];
       top--;
       operand1 = s[top];
       top--;
       tmpresult = evaluate_operation(operand1, operand2, optype);
       free_expnode(operand1);
       free_expnode(operand2);
       top++;
       s[top] = tmpresult;
      }
     free_expnode(tmp);
    }
   tmp = next;
  }
 result = safemalloc(sizeof(struct variable), "evaluate_expression_list", 69);
 result->value = s[top]->value;
 result->type = s[top]->type;
 free_expnode(s[top]);
 return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7c0c0, %rsp          # imm = 0x7C0C0
movq %rdi, -0x10(%rbp)
movl $0xffffffff, -0x7c0b4(%rbp) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rdi
callq 0x4d710
movq %rax, -0x7c090(%rbp)
cmpq $0x0, -0x7c090(%rbp)
je 0x4c92d
movq -0x7c090(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x7c0b0(%rbp)
movq -0x7c090(%rbp), %rax
cmpl $-0x1, 0x8(%rax)
je 0x4c660
movl -0x7c0b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movq -0x7c090(%rbp), %rcx
movslq -0x7c0b4(%rbp), %rax
movq %rcx, -0x7c080(%rbp,%rax,8)
jmp 0x4c91a
movq -0x7c090(%rbp), %rax
movq (%rax), %rax
leaq 0xb872c(%rip), %rsi     # 0x104d9d
movl $0x7, %edx
movsbl (%rax), %edi
callq 0x54aa0
movl %eax, -0x7c0b8(%rbp)
cmpl $-0x1, -0x7c0b8(%rbp)
jne 0x4c867
leaq -0x7a140(%rbp), %rdi
movq -0x7c090(%rbp), %rax
movq (%rax), %rdx
leaq 0x99c29(%rip), %rsi     # 0xe62d2
movb $0x0, %al
callq 0x4170
leaq -0x7a140(%rbp), %rdi
callq 0x4b5e0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x4c855
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x4c855
movb $0x0, %al
callq 0x27280
movq %rax, -0x7c088(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x4c778
movslq -0x7c0b4(%rbp), %rax
movq -0x7c080(%rbp,%rax,8), %rax
movq %rax, -0x7c098(%rbp)
movq -0x7c098(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jne 0x4c728
movq -0x7c098(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x7c0bc(%rbp)
jmp 0x4c73a
movq -0x7c098(%rbp), %rax
cvttsd2si 0x10(%rax), %eax
movl %eax, -0x7c0bc(%rbp)
movq -0x7c088(%rbp), %rdi
movl -0x7c0bc(%rbp), %esi
callq 0x272c0
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movl -0x7c0b4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movq -0x7c098(%rbp), %rdi
callq 0x4d180
jmp 0x4c6e6
leaq -0x7a140(%rbp), %rdi
callq 0x4b5e0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x4c7c4
movq -0x7c088(%rbp), %rdi
callq 0x27310
movl %eax, -0x7c0bc(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x7c0bc(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
jmp 0x4c788
movq -0x7c088(%rbp), %rdi
callq 0x27370
movl $0x20, %edi
leaq 0x99afb(%rip), %rsi     # 0xe62d7
movl $0x21, %edx
callq 0x52d70
movq %rax, -0x7c0a8(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %ecx
movq -0x7c0a8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x4c819
movq -0x20(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x7c0a8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x4c82e
movq -0x20(%rbp), %rax
movsd 0x28(%rax), %xmm0
movq -0x7c0a8(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movl -0x7c0b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movq -0x7c0a8(%rbp), %rcx
movslq -0x7c0b4(%rbp), %rax
movq %rcx, -0x7c080(%rbp,%rax,8)
jmp 0x4c862
movq $0x0, -0x8(%rbp)
jmp 0x4c996
jmp 0x4c90e
movslq -0x7c0b4(%rbp), %rax
movq -0x7c080(%rbp,%rax,8), %rax
movq %rax, -0x7c0a0(%rbp)
movl -0x7c0b4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movslq -0x7c0b4(%rbp), %rax
movq -0x7c080(%rbp,%rax,8), %rax
movq %rax, -0x7c098(%rbp)
movl -0x7c0b4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movq -0x7c098(%rbp), %rdi
movq -0x7c0a0(%rbp), %rsi
movl -0x7c0b8(%rbp), %edx
callq 0x4d440
movq %rax, -0x7c0a8(%rbp)
movq -0x7c098(%rbp), %rdi
callq 0x4d180
movq -0x7c0a0(%rbp), %rdi
callq 0x4d180
movl -0x7c0b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c0b4(%rbp)
movq -0x7c0a8(%rbp), %rcx
movslq -0x7c0b4(%rbp), %rax
movq %rcx, -0x7c080(%rbp,%rax,8)
movq -0x7c090(%rbp), %rdi
callq 0x4d180
movq -0x7c0b0(%rbp), %rax
movq %rax, -0x7c090(%rbp)
jmp 0x4c609
movl $0x30, %edi
leaq 0x9999e(%rip), %rsi     # 0xe62d7
movl $0x45, %edx
callq 0x52d70
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movslq -0x7c0b4(%rbp), %rcx
movq -0x7c080(%rbp,%rcx,8), %rcx
movq 0x10(%rcx), %rcx
movq %rcx, 0x28(%rax)
movslq -0x7c0b4(%rbp), %rax
movq -0x7c080(%rbp,%rax,8), %rax
movl 0x8(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movslq -0x7c0b4(%rbp), %rax
movq -0x7c080(%rbp,%rax,8), %rdi
callq 0x4d180
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x7c0c0, %rsp          # imm = 0x7C0C0
popq %rbp
retq
nopw %cs:(%rax,%rax)