// File: /workspace/github_c_makefile_star2_O0/42Bastian[P]lyxass/expression.c
// Function: product
int product(int64_t *value)
{
  int err;
  int64_t a,b;

  err = uni( &a );

  if ( err ) return err;

  KillSpace();

  while( (atom == '*') ||
	 (atom == '/') ||
	 (atom == '&') ||
	 ((atom == '<') && next_atom == '<') ||
	 ((atom == '>') && next_atom == '>')){

    char save = atom;

    need_ch();

    if ( save == '<' || save == '>' ){
      if ( atom != save ){
	Error(EXPR_ERR,"");
	return EXPR_ERROR;
      }
      GetAtom();
    }

    err = uni( &b );

    if ( err ) return err;

    switch ( save ){
    case '*' : a *= b; break;
    case '/' : a /= b; break;
    case '&' : a &= b; break;
    case '<' : a <<=b; break;
    case '>' : a >>=b; break;
    }

    KillSpace();
  }

  *value = a;

  return EXPR_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xbfa0
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0xc519
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc6cc
movb $0x0, %al
callq 0x5ad0
movb $0x1, %al
leaq 0x149f7(%rip), %rcx     # 0x20f20
cmpl $0x2a, (%rcx)
movb %al, -0x2a(%rbp)
je 0xc597
movb $0x1, %al
leaq 0x149e6(%rip), %rcx     # 0x20f20
cmpl $0x2f, (%rcx)
movb %al, -0x2a(%rbp)
je 0xc597
movb $0x1, %al
leaq 0x149d5(%rip), %rcx     # 0x20f20
cmpl $0x26, (%rcx)
movb %al, -0x2a(%rbp)
je 0xc597
leaq 0x149c6(%rip), %rax     # 0x20f20
cmpl $0x3c, (%rax)
jne 0xc570
movb $0x1, %al
leaq 0x149c0(%rip), %rcx     # 0x20f28
cmpl $0x3c, (%rcx)
movb %al, -0x2a(%rbp)
je 0xc597
xorl %eax, %eax
leaq 0x149a7(%rip), %rcx     # 0x20f20
cmpl $0x3e, (%rcx)
movb %al, -0x2b(%rbp)
jne 0xc591
leaq 0x149a0(%rip), %rax     # 0x20f28
cmpl $0x3e, (%rax)
sete %al
movb %al, -0x2b(%rbp)
movb -0x2b(%rbp), %al
movb %al, -0x2a(%rbp)
movb -0x2a(%rbp), %al
testb $0x1, %al
jne 0xc5a3
jmp 0xc6ba
leaq 0x14976(%rip), %rax     # 0x20f20
movl (%rax), %eax
movb %al, -0x29(%rbp)
callq 0x59e0
cmpl $0x0, %eax
jne 0xc5d6
movl $0x11, %edi
leaq 0x4a98(%rip), %rsi      # 0x1105d
callq 0xd130
movl $0x11, -0x4(%rbp)
jmp 0xc6cc
movsbl -0x29(%rbp), %eax
cmpl $0x3c, %eax
je 0xc5e8
movsbl -0x29(%rbp), %eax
cmpl $0x3e, %eax
jne 0xc61b
leaq 0x14931(%rip), %rax     # 0x20f20
movl (%rax), %eax
movsbl -0x29(%rbp), %ecx
cmpl %ecx, %eax
je 0xc616
movl $0x11, %edi
leaq 0x4a58(%rip), %rsi      # 0x1105d
callq 0xd130
movl $0x1, -0x4(%rbp)
jmp 0xc6cc
callq 0x59e0
leaq -0x28(%rbp), %rdi
callq 0xbfa0
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0xc638
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xc6cc
movsbl -0x29(%rbp), %eax
addl $-0x26, %eax
movl %eax, %ecx
movq %rcx, -0x38(%rbp)
subl $0x18, %eax
ja 0xc6ae
movq -0x38(%rbp), %rax
leaq 0x4f73(%rip), %rcx      # 0x115c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x28(%rbp), %rax
imulq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0xc6ae
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
cqto
idivq %rcx
movq %rax, -0x20(%rbp)
jmp 0xc6ae
movq -0x28(%rbp), %rax
andq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0xc6ae
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
shlq %cl, %rax
movq %rax, -0x20(%rbp)
jmp 0xc6ae
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
sarq %cl, %rax
movq %rax, -0x20(%rbp)
movb $0x0, %al
callq 0x5ad0
jmp 0xc520
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)