// File: /workspace/github_c_makefile_star2_O0/42Bastian[P]lyxass/expression.c
// Function: Expression64
int Expression64(int64_t * value)
{
  int64_t v1,v2;
  int err;
  int flag = 0;
  *value = 0;
  ExprFailed = 0;

  if ( (err = sum( &v1 )) != EXPR_OK ) return err;

  KillSpace();

  switch ( atom ){
  case '=':
    GetAtom();
    if ( (err = sum( &v2 )) != EXPR_OK ) return err;
    *value = (v1 == v2);
    break;
  case '<' :
    GetAtom();
    flag = 0;
    if ( TestAtom('=') ){
      flag = 1;
    } else if ( TestAtom('>') ) {
      flag = 2;
    }
    if ( (err = sum( &v2 )) != EXPR_OK ) return err;
    switch( flag ){
    case 0 :
      *value = (v1 < v2);
      break;
    case 1 :
      *value = ( v1 <= v2);
      break;
    case 2 :
      *value = (v1 != v2);
      break;
    }
    break;
  case '>':
    flag = 0;
    GetAtom();
    if ( TestAtom('=') ){
      flag = 1;
    }
    if ( (err = sum( &v2 )) != EXPR_OK ) return err;
    if ( flag ){
      *value = (v1 >= v2);
    } else {
      *value = (v1 > v2 );
    }
    break;
  default:
    *value = v1;
  }

  if ( ExprFailed ){
    *value = 0;
    return EXPR_UNSOLVED;
  } else
    return EXPR_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq $0x0, (%rax)
movl $0x0, 0x15608(%rip)     # 0x21d10
leaq -0x18(%rbp), %rdi
callq 0xc390
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0xc724
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc910
xorl %eax, %eax
callq 0x5ad0
leaq 0x147ee(%rip), %rax     # 0x20f20
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
subl $0x3c, %eax
je 0xc799
jmp 0xc73e
movl -0x2c(%rbp), %eax
subl $0x3d, %eax
je 0xc759
jmp 0xc748
movl -0x2c(%rbp), %eax
subl $0x3e, %eax
je 0xc868
jmp 0xc8e1
callq 0x59e0
leaq -0x20(%rbp), %rdi
callq 0xc390
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0xc77a
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc910
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc8ec
callq 0x59e0
movl $0x0, -0x28(%rbp)
movl $0x3d, %edi
callq 0x5a90
cmpl $0x0, %eax
je 0xc7bd
movl $0x1, -0x28(%rbp)
jmp 0xc7d5
movl $0x3e, %edi
callq 0x5a90
cmpl $0x0, %eax
je 0xc7d3
movl $0x2, -0x28(%rbp)
jmp 0xc7d5
leaq -0x20(%rbp), %rdi
callq 0xc390
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0xc7f1
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc910
movl -0x28(%rbp), %eax
movl %eax, -0x30(%rbp)
testl %eax, %eax
je 0xc811
jmp 0xc7fd
movl -0x30(%rbp), %eax
subl $0x1, %eax
je 0xc82d
jmp 0xc807
movl -0x30(%rbp), %eax
subl $0x2, %eax
je 0xc849
jmp 0xc863
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
setl %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc863
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
setle %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc863
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc8ec
movl $0x0, -0x28(%rbp)
callq 0x59e0
movl $0x3d, %edi
callq 0x5a90
cmpl $0x0, %eax
je 0xc88a
movl $0x1, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xc390
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0xc8a3
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc910
cmpl $0x0, -0x28(%rbp)
je 0xc8c5
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
setge %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc8df
movq -0x18(%rbp), %rax
cmpq -0x20(%rbp), %rax
setg %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xc8ec
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
cmpl $0x0, 0x1541d(%rip)     # 0x21d10
je 0xc909
movq -0x10(%rbp), %rax
movq $0x0, (%rax)
movl $0x2, -0x4(%rbp)
jmp 0xc910
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)