// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/Observer.cpp
// Function: Observer::SeePlayer(char, int, double, double, double, double, double, double, bool, double, bool, bool, bool, CardType)
void Observer::SeePlayer(char side, int num, double dist, double dir,
                         double dist_chg, double dir_chg, double body_dir,
                         double head_dir, bool is_pointing, double point_dir,
                         bool is_tackling, bool is_kicked, bool is_lying,
                         CardType card_type) {
  if (side == mOurSide) {
    mTeammateObservers[num].SetDist(dist, mCurrentTime);
    mTeammateObservers[num].SetDir(dir, mCurrentTime);
    mTeammateObservers[num].SetDistChg(dist_chg, mCurrentTime);
    mTeammateObservers[num].SetDirChg(dir_chg, mCurrentTime);
    mTeammateObservers[num].SetBodyDir(body_dir, mCurrentTime);
    mTeammateObservers[num].SetHeadDir(head_dir, mCurrentTime);
    mTeammateObservers[num].SetIsPointing(is_pointing, mCurrentTime);
    mTeammateObservers[num].SetPointDir(point_dir);
    mTeammateObservers[num].SetIsTcakling(is_tackling, mCurrentTime);
    mTeammateObservers[num].SetIsKicked(is_kicked, mCurrentTime);
    mTeammateObservers[num].SetIsLying(is_lying, mCurrentTime);
    mTeammateObservers[num].SetCardType(card_type);
  } else {
    mOpponentObservers[num].SetDist(dist, mCurrentTime);
    mOpponentObservers[num].SetDir(dir, mCurrentTime);
    mOpponentObservers[num].SetDistChg(dist_chg, mCurrentTime);
    mOpponentObservers[num].SetDirChg(dir_chg, mCurrentTime);
    mOpponentObservers[num].SetBodyDir(body_dir, mCurrentTime);
    mOpponentObservers[num].SetHeadDir(head_dir, mCurrentTime);
    mOpponentObservers[num].SetIsPointing(is_pointing, mCurrentTime);
    mOpponentObservers[num].SetPointDir(point_dir);
    mOpponentObservers[num].SetIsTcakling(is_tackling, mCurrentTime);
    mOpponentObservers[num].SetIsKicked(is_kicked, mCurrentTime);
    mOpponentObservers[num].SetIsLying(is_lying, mCurrentTime);
    mOpponentObservers[num].SetCardType(card_type);
  }
  //	std::cout << "seeeee: " << side << "   and : " << num  << "  real_side:
  //" << mOurSide << std::endl;
  mCurrentBugInfo.mSide =
      OurInitSide() == OurSide() ? side : (side == 'l' ? 'r' : 'l');
  mCurrentBugInfo.mLeastNum = num + 1;
  if (mCurrentBugInfo.mLeastNum > TEAMSIZE) {
    mCurrentBugInfo.mSide = 'r';
    mCurrentBugInfo.mLeastNum = 1;
  }

  AdjustUnum(OurInitSide() == OurSide() ? side : (side == 'l' ? 'r' : 'l'),
             num);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movl 0x18(%rbp), %eax
movb 0x10(%rbp), %r10b
leal -0x1(%rdx), %ebx
leaq 0x1fa8(%rdi), %r14
leaq 0x1870(%rdi), %r11
cmpb %sil, 0x29(%rdi)
cmovneq %r14, %r11
movslq %ebx, %rbx
imulq $0xa8, %rbx, %rbx
movsd %xmm0, (%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x8(%r11,%rbx)
movsd %xmm1, 0x10(%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x18(%r11,%rbx)
movsd %xmm2, 0x20(%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x28(%r11,%rbx)
movsd %xmm3, 0x30(%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x38(%r11,%rbx)
movsd %xmm4, 0x48(%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x50(%r11,%rbx)
movsd %xmm5, 0x58(%r11,%rbx)
movq 0xc(%rdi), %r14
movq %r14, 0x60(%r11,%rbx)
movb %cl, 0x80(%r11,%rbx)
movq 0xc(%rdi), %rcx
movq %rcx, 0x84(%r11,%rbx)
movsd %xmm6, 0xa0(%r11,%rbx)
movb %r8b, 0x68(%r11,%rbx)
movq 0xc(%rdi), %rcx
movq %rcx, 0x6c(%r11,%rbx)
movb %r9b, 0x74(%r11,%rbx)
movq 0xc(%rdi), %rcx
movq %rcx, 0x78(%r11,%rbx)
movb %r10b, 0x8c(%r11,%rbx)
movq 0xc(%rdi), %rcx
movq %rcx, 0x90(%r11,%rbx)
movl %eax, 0x98(%r11,%rbx)
movb 0x28(%rdi), %cl
cmpb $0x6c, %sil
movl $0x72, %r8d
movl $0x6c, %eax
cmovel %r8d, %eax
cmpb 0x29(%rdi), %cl
cmovel %esi, %eax
movb %al, 0x3344(%rdi)
leal 0x1(%rdx), %ecx
movl %ecx, 0x3348(%rdi)
cmpl $0xb, %edx
jl 0x3cb67
movb $0x72, 0x3344(%rdi)
movl $0x1, 0x3348(%rdi)
movsbl %al, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x3c5ce
nop