// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/Observer.cpp
// Function: Observer::SeePlayer(char, int, double, double, bool, double, bool, bool, bool, CardType)
void Observer::SeePlayer(char side, int num, double dist, double 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].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].SetIsPointing(is_pointing, mCurrentTime);
    mOpponentObservers[num].SetPointDir(point_dir);
    mOpponentObservers[num].SetIsTcakling(is_tackling, mCurrentTime);
    mOpponentObservers[num].SetIsKicked(is_kicked, mCurrentTime);
    mOpponentObservers[num].SetIsKicked(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), %bl
leal -0x1(%rdx), %r10d
movslq %r10d, %r10
cmpb %sil, 0x29(%rdi)
jne 0x3cbf6
imulq $0xa8, %r10, %r11
addq %rdi, %r11
addq $0x1900, %r11           # imm = 0x1900
movsd %xmm0, -0x90(%r11)
movq 0xc(%rdi), %r14
movq %r14, -0x88(%r11)
movsd %xmm1, -0x80(%r11)
movq 0xc(%rdi), %r14
movq %r14, -0x78(%r11)
movb %cl, -0x10(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, -0xc(%r11)
movsd %xmm2, 0x10(%r11)
movb %r8b, -0x28(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, -0x24(%r11)
movb %r9b, -0x1c(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, -0x18(%r11)
movb %bl, -0x4(%r11)
movl $0x1870, %ecx           # imm = 0x1870
jmp 0x3cc55
imulq $0xa8, %r10, %r11
addq %rdi, %r11
addq $0x2020, %r11           # imm = 0x2020
movsd %xmm0, -0x78(%r11)
movq 0xc(%rdi), %r14
movq %r14, -0x70(%r11)
movsd %xmm1, -0x68(%r11)
movq 0xc(%rdi), %r14
movq %r14, -0x60(%r11)
movb %cl, 0x8(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, 0xc(%r11)
movsd %xmm2, 0x28(%r11)
movb %r8b, -0x10(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, -0xc(%r11)
movb %r9b, -0x4(%r11)
movq 0xc(%rdi), %rcx
movq %rcx, (%r11)
movb %bl, -0x4(%r11)
movl $0x1fa8, %ecx           # imm = 0x1FA8
addq %rdi, %rcx
movq 0xc(%rdi), %r8
movq %r8, (%r11)
imulq $0xa8, %r10, %r8
movl %eax, 0x98(%r8,%rcx)
movb 0x28(%rdi), %al
cmpb $0x6c, %sil
movl $0x72, %ecx
movl $0x6c, %r8d
cmovel %ecx, %r8d
cmpb 0x29(%rdi), %al
movzbl %sil, %eax
cmovnel %r8d, %eax
movb %al, 0x3344(%rdi)
leal 0x1(%rdx), %ecx
movl %ecx, 0x3348(%rdi)
cmpl $0xb, %edx
jl 0x3ccb4
movb $0x72, 0x3344(%rdi)
movl $0x1, 0x3348(%rdi)
movsbl %al, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x3c5ce