// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/Strategy.cpp
// Function: Strategy::StrategyAnalyze()
void Strategy::StrategyAnalyze() {
  mIsLastBallFree = mIsBallFree;
  if (mIsBallFree == false) //记录上次不free时的状态，参考WE2008
  {
    mLastController = mController;
    mLastChallenger = mChallenger;
  }

  mIsBallActuralKickable = false;
  mIsBallFree = true;
  mController = 0;

  mMyInterCycle = 150;
  mMinTmInterCycle = 150;
  mMinOppInterCycle = 150;
  mMinIntercCycle = 150;
  mSureTmInterCycle = 150;
  mSureOppInterCycle = 150;
  mSureInterCycle = 150;
  mFastestTm = 0;
  mFastestOpp = 0;
  mSureTm = 0;
  mSureOpp = 0;

  mBallInterPos = mWorldState.GetBall().GetPos();
  mBallFreeCycleLeft = 0;
  mBallOutCycle = 1000;

  mController = 0;
  mChallenger = 0;

  if (mForbiddenDribble) {
    if (!mSelfState.IsKickable()) {
      mForbiddenDribble = false;
    }
  }

  BallPossessionAnalyse();

  SituationAnalyse();

  // And once they are over, roll back formation. Formation will be updated by
  // BehaviorData when needed.
  mFormation.Rollback("Strategy");

  if (mSelfState.GetTackleProb(false) < FLOAT_EPS) {
    if (mIsBallFree) {
      if (mMyTackleInfo.mMinCycle >= mSureInterCycle ||
          (mController > 0 && mController != mSelfState.GetUnum())) {
        mMyTackleInfo.mRes = IR_Failure;
      }
    }
  } else {
    mMyTackleInfo.mRes = IR_Success;
    mMyTackleInfo.mMinCycle = 0;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movb 0x41(%rax), %cl
andb $0x1, %cl
movb %cl, 0x50(%rax)
movb 0x41(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x88d5a
movq -0x48(%rbp), %rax
movl 0x48(%rax), %ecx
movl %ecx, 0x5c(%rax)
movl 0x4c(%rax), %ecx
movl %ecx, 0x60(%rax)
movq -0x48(%rbp), %rax
movb $0x0, 0x40(%rax)
movb $0x1, 0x41(%rax)
movl $0x0, 0x48(%rax)
movl $0x96, 0x64(%rax)
movl $0x96, 0x68(%rax)
movl $0x96, 0x6c(%rax)
movl $0x96, 0x70(%rax)
movl $0x96, 0x7c(%rax)
movl $0x96, 0x80(%rax)
movl $0x96, 0x84(%rax)
movl $0x0, 0x74(%rax)
movl $0x0, 0x78(%rax)
movl $0x0, 0x88(%rax)
movl $0x0, 0x8c(%rax)
movq 0x18(%rax), %rdi
callq 0x10570
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, %rcx
movq -0x48(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, 0x90(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x98(%rax)
movl $0x0, 0x44(%rax)
movl $0x3e8, 0xa0(%rax)      # imm = 0x3E8
movl $0x0, 0x48(%rax)
movl $0x0, 0x4c(%rax)
testb $0x1, 0xa8(%rax)
je 0x88e3d
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x10ef0
testb $0x1, %al
jne 0x88e3b
movq -0x48(%rbp), %rax
movb $0x0, 0xa8(%rax)
jmp 0x88e3d
movq -0x48(%rbp), %rdi
callq 0x89080
movq -0x48(%rbp), %rdi
callq 0x8a410
movq -0x48(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x58(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0xaa70
movq -0x50(%rbp), %rdx
leaq 0x3bdf5(%rip), %rsi     # 0xc4c68
leaq -0x28(%rbp), %rdi
callq 0x1a540
jmp 0x88e7e
movq -0x58(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x3e8c0
jmp 0x88e8d
leaq -0x28(%rbp), %rdi
callq 0xa370
leaq -0x29(%rbp), %rdi
callq 0xa650
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rdi
xorl %esi, %esi
callq 0x10fb0
movaps %xmm0, %xmm1
movsd 0x3814f(%rip), %xmm0    # 0xc1008
ucomisd %xmm1, %xmm0
jbe 0x88f47
movq -0x48(%rbp), %rax
testb $0x1, 0x41(%rax)
je 0x88f45
movq -0x48(%rbp), %rcx
movl 0x124(%rcx), %eax
cmpl 0x84(%rcx), %eax
jge 0x88f05
movq -0x48(%rbp), %rax
cmpl $0x0, 0x48(%rax)
jle 0x88f43
movq -0x48(%rbp), %rax
movl 0x48(%rax), %ecx
movl %ecx, -0x5c(%rbp)
movq 0x28(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x5c(%rbp), %eax
cmpl %ecx, %eax
je 0x88f43
movq -0x48(%rbp), %rax
movl $0x1, 0x13c(%rax)
jmp 0x88f43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x88f38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xa370
leaq -0x29(%rbp), %rdi
callq 0xa650
jmp 0x88f65
jmp 0x88f45
jmp 0x88f5f
movq -0x48(%rbp), %rax
movl $0x2, 0x13c(%rax)
movl $0x0, 0x124(%rax)
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0xaa60
nop