// File: /workspace/github_cpp_makefile_star2_O3/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 0x4c2de
movq 0x18(%rbx), %rcx
movl $0x2, %r14d
movsd 0x1ecd5(%rip), %xmm0    # 0x6afa8
ucomisd 0x38(%rcx), %xmm0
ja 0x4c386
cmpb $0x0, 0x41(%rbx)
je 0x4c30e
movq 0x10(%rbx), %rcx
cmpl 0x8(%rcx), %eax
je 0x4c302
movl 0x7c(%rbx), %ecx
movl $0x2, %r14d
cmpl 0x80(%rbx), %ecx
jg 0x4c386
movl $0x1, %r14d
testl %eax, %eax
jg 0x4c318
jmp 0x4c386
testl %eax, %eax
js 0x4c380
movl $0x1, %r14d
movsd 0x207f8(%rip), %xmm0    # 0x6cb18
ucomisd 0x90(%rbx), %xmm0
jbe 0x4c386
movq 0x30(%rbx), %rdi
callq 0x2a4b4
movsd 0x17a0(%rax), %xmm0
ucomisd 0x1ec45(%rip), %xmm0    # 0x6af88
jbe 0x4c37b
movq 0x10(%rbx), %rdi
callq 0x13432
movslq 0x48(%rbx), %rcx
movq 0x10(%rax), %rax
movslq 0x350(%rax,%rcx,4), %rcx
shlq $0x4, %rcx
cmpl $0x2, 0x58(%rcx,%rax)
jne 0x4c37b
movsd 0x90(%rbx), %xmm0
ucomisd 0x1f0ff(%rip), %xmm0    # 0x6b478
ja 0x4c386
xorl %r14d, %r14d
jmp 0x4c386
movl $0x2, %r14d
movl %r14d, 0xa4(%rbx)
movq 0x38(%rbx), %rbx
leaq -0x28(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x20780(%rip), %rsi     # 0x6cb20
leaq 0x20781(%rip), %rdx     # 0x6cb28
leaq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x1362e
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x26cc2
movq -0x38(%rbp), %rdi
cmpq %r15, %rdi
je 0x4c3d5
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 0x4c3f8
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x94e0
movq %rbx, %rdi
callq 0x98b0