// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/Strategy.cpp
// Function: Strategy::SituationAnalyse()
void Strategy::SituationAnalyse() {
  if (mController < 0 && mWorldState.GetBall().GetPos().X() < -10) {
    mSituation = ST_Defense;
  } else {
    if (!mIsBallFree) {
      if (mController >= 0) {
        if (mBallInterPos.X() < 32.0) {
          if (mInfoState.GetPositionInfo().GetTeammateOffsideLine() > 40.0 &&
              mAgent.GetFormation()
                      .GetTeammateRoleType(mController)
                      .mLineType == LT_Midfielder &&
              mBallInterPos.X() > 25.0) {
            mSituation = ST_Penalty_Attack;
          } else {
            mSituation = ST_Forward_Attack;
          }
        } else {
          mSituation = ST_Penalty_Attack;
        }
      } else {
        mSituation = ST_Defense;
      }
    } else {
      if (IsMyControl() || mSureTmInterCycle <= mSureOppInterCycle) {
        if (mBallInterPos.X() < 32.0 && mController > 0) {
          if (mInfoState.GetPositionInfo().GetTeammateOffsideLine() > 40.0 &&
              mAgent.GetFormation()
                      .GetTeammateRoleType(mController)
                      .mLineType == LT_Midfielder &&
              mBallInterPos.X() > 25.0) {
            mSituation = ST_Penalty_Attack;
          } else {
            mSituation = ST_Forward_Attack;
          }
        } else {
          mSituation = ST_Penalty_Attack;
        }
      } else {
        mSituation = ST_Defense;
      }
    }
  }

  mFormation.Update(Formation::Offensive, "Strategy");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movl 0x48(%rdi), %eax
testl %eax, %eax
jns 0x4d7dc
movq 0x18(%rbx), %rcx
movl $0x2, %r14d
movsd 0x1f7e7(%rip), %xmm0    # 0x6cfb8
ucomisd 0x38(%rcx), %xmm0
ja 0x4d884
cmpb $0x0, 0x41(%rbx)
je 0x4d80c
movq 0x10(%rbx), %rcx
cmpl 0x8(%rcx), %eax
je 0x4d800
movl 0x7c(%rbx), %ecx
movl $0x2, %r14d
cmpl 0x80(%rbx), %ecx
jg 0x4d884
movl $0x1, %r14d
testl %eax, %eax
jg 0x4d816
jmp 0x4d884
testl %eax, %eax
js 0x4d87e
movl $0x1, %r14d
movsd 0x2132a(%rip), %xmm0    # 0x6eb48
ucomisd 0x90(%rbx), %xmm0
jbe 0x4d884
movq 0x30(%rbx), %rdi
callq 0x2adf8
movsd 0x17a0(%rax), %xmm0
ucomisd 0x1f757(%rip), %xmm0    # 0x6cf98
jbe 0x4d879
movq 0x10(%rbx), %rdi
callq 0x1356e
movslq 0x48(%rbx), %rcx
movq 0x10(%rax), %rax
movslq 0x350(%rax,%rcx,4), %rcx
shlq $0x4, %rcx
cmpl $0x2, 0x58(%rcx,%rax)
jne 0x4d879
movsd 0x90(%rbx), %xmm0
ucomisd 0x1fc29(%rip), %xmm0    # 0x6d4a0
ja 0x4d884
xorl %r14d, %r14d
jmp 0x4d884
movl $0x2, %r14d
movl %r14d, 0xa4(%rbx)
movq 0x38(%rbx), %rbx
leaq -0x28(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x212b2(%rip), %rsi     # 0x6eb50
leaq 0x212b3(%rip), %rdx     # 0x6eb58
leaq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x13766
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x274cc
movq -0x38(%rbp), %rdi
cmpq %r15, %rdi
je 0x4d8d3
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x94e0
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x38(%rbp), %rdi
cmpq %r15, %rdi
je 0x4d8f6
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x94e0
movq %rbx, %rdi
callq 0x98b0