// File: /workspace/github_cpp_makefile_star2_O3/wrighteagle2d[P]wrighteaglebase/Debug/../src/BehaviorPass.cpp
// Function: BehaviorPassPlanner::Plan(std::__cxx11::list<ActiveBehavior, std::allocator<ActiveBehavior>>&)
void BehaviorPassPlanner::Plan(std::list<ActiveBehavior> &behavior_list) {
  if (!mSelfState.IsKickable())
    return;

  const std::vector<Unum> &tm2ball =
      mPositionInfo.GetCloseTeammateToTeammate(mSelfState.GetUnum());

  Unum _opp = mStrategy.GetFastestOpp();
  if (!_opp)
    return;

  PlayerState oppState = mWorldState.GetOpponent(_opp);
  bool oppClose = oppState.IsKickable() || oppState.GetTackleProb(true) > 0.65;
  for (uint i = 0; i < tm2ball.size(); ++i) {
    ActiveBehavior pass(mAgent, BT_Pass);

    pass.mTarget = mWorldState.GetTeammate(tm2ball[i]).GetPredictedPos();

    if (mWorldState.GetTeammate(tm2ball[i]).IsGoalie()) {
      continue;
    }
    Vector rel_target = pass.mTarget - mBallState.GetPos();
    const std::vector<Unum> &opp2tm =
        mPositionInfo.GetCloseOpponentToTeammate(tm2ball[i]);
    AngleDeg min_differ = HUGE_VALUE;

    for (uint j = 0; j < opp2tm.size(); ++j) {
      Vector rel_pos =
          mWorldState.GetOpponent(opp2tm[j]).GetPos() - mBallState.GetPos();
      if (rel_pos.Mod() > rel_target.Mod() + 3.0)
        continue;

      AngleDeg differ = GetAngleDegDiffer(rel_target.Dir(), rel_pos.Dir());
      if (differ < min_differ) {
        min_differ = differ;
      }
    }

    if (min_differ < 10.0)
      continue;

    pass.mEvaluation =
        Evaluation::instance().EvaluatePosition(pass.mTarget, true);

    pass.mAngle = (pass.mTarget - mSelfState.GetPos()).Dir();
    pass.mKickSpeed = ServerParam::instance().GetBallSpeed(
        5, pass.mTarget.Dist(mBallState.GetPos()));
    pass.mKickSpeed =
        MinMax(2.0, pass.mKickSpeed,
               Kicker::instance().GetMaxSpeed(mAgent, pass.mAngle, 3));
    if (oppClose) { // in oppnent control, clear it
      pass.mDetailType = BDT_Pass_Clear;
    } else
      pass.mDetailType = BDT_Pass_Direct;
    mActiveBehaviorList.push_back(pass);
  }
  if (!mActiveBehaviorList.empty()) {
    mActiveBehaviorList.sort(std::greater<ActiveBehavior>());
    if (mActiveBehaviorList.front().mDetailType == BDT_Pass_Clear) {
      mActiveBehaviorList.front().mEvaluation = 1.0 + FLOAT_EPS;
    }
    behavior_list.push_back(mActiveBehaviorList.front());
  } else { //如果此周期没有好的动作
    if (mAgent.IsLastActiveBehaviorInActOf(BT_Pass)) {
      ActiveBehavior pass(mAgent, BT_Pass, BDT_Pass_Direct);
      pass.mTarget = mAgent.GetLastActiveBehaviorInAct()->mTarget; //行为保持
      pass.mEvaluation =
          Evaluation::instance().EvaluatePosition(pass.mTarget, true);
      pass.mKickSpeed = ServerParam::instance().GetBallSpeed(
          5 + random() % 6, pass.mTarget.Dist(mBallState.GetPos()));
      pass.mKickSpeed =
          MinMax(2.0, pass.mKickSpeed, ServerParam::instance().ballSpeedMax());
      behavior_list.push_back(pass);
    }
    if (oppClose) {
      Vector p;
      BallState SimBall = mBallState;
      int MinTmInter = HUGE_VALUE, MinOppInter = HUGE_VALUE, MinTm;
      Vector MinTmPos;
      for (AngleDeg dir = -45; dir <= 45; dir += 2.5) {
        if (!Tackler::instance().CanTackleToDir(mAgent, dir)) {
          SimBall.UpdateVel(
              Polar2Vector(Kicker::instance().GetMaxSpeed(
                               mAgent, mSelfState.GetBodyDir() + dir, 1),
                           mSelfState.GetBodyDir() + dir),
              0, 1.0);
        } else
          SimBall.UpdateVel(
              Polar2Vector(Max(Tackler::instance()
                                   .GetBallVelAfterTackle(mAgent, dir)
                                   .Mod(),
                               Kicker::instance().GetMaxSpeed(
                                   mAgent, mSelfState.GetBodyDir() + dir, 1)),
                           mSelfState.GetBodyDir() + dir),
              0, 1.0);
        for (int i = 2; i <= 11; i++) {
          if (fabs((mWorldState.GetTeammate(i).GetPos() - mSelfState.GetPos())
                       .Dir() -
                   dir) > 45) {
            continue;
          }
          if (!mWorldState.GetPlayer(i).IsAlive()) {
            continue;
          }
          PlayerInterceptInfo *a = mInterceptInfo.GetPlayerInterceptInfo(i);
          mInterceptInfo.CalcTightInterception(SimBall, a, true);
          if (MinTmInter > (*a).mMinCycle) {
            MinTm = i;
            MinTmInter = (*a).mMinCycle;
            MinTmPos = (*a).mInterPos;
          }
        }
        for (int i = 1; i <= 11; i++) {
          if (fabs((mWorldState.GetOpponent(i).GetPos() - mSelfState.GetPos())
                       .Dir() -
                   dir) > 45) {
            continue;
          }
          PlayerInterceptInfo *a = mInterceptInfo.GetPlayerInterceptInfo(-i);
          mInterceptInfo.CalcTightInterception(SimBall, a, true);
          if (MinOppInter > (*a).mMinCycle) {
            MinOppInter = (*a).mMinCycle;
          }
        }
        if (MinOppInter > MinTmInter) {
          Ray a(mSelfState.GetPos(), mSelfState.GetBodyDir() + dir);
          Line c(ServerParam::instance().ourLeftGoalPost(),
                 ServerParam::instance().ourRightGoalPost());
          c.Intersection(a, p);
          if (p.Y() < ServerParam::instance().ourPenaltyArea().Top() ||
              p.Y() > ServerParam::instance().ourPenaltyArea().Bottom()) {

            ActiveBehavior pass(mAgent, BT_Pass, BDT_Pass_Clear);
            pass.mTarget = MinTmPos;
            pass.mEvaluation = 1.0 + FLOAT_EPS;
            pass.mAngle = mSelfState.GetBodyDir() + dir;
            mActiveBehaviorList.push_back(pass);
          }
        }
      }
      if (!mActiveBehaviorList.empty()) {
        mActiveBehaviorList.sort(std::greater<ActiveBehavior>());
        behavior_list.push_back(mActiveBehaviorList.front());
      }
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
movq %rsi, -0x90(%rbp)
movq 0x20(%rdi), %rax
cmpb $0x1, 0x128(%rax)
jne 0x1916d
movq %rdi, %r14
movq 0x28(%rdi), %rdi
movl 0x11c(%rax), %esi
callq 0x47d10
movq 0x38(%r14), %rcx
movslq 0x78(%rcx), %rcx
testq %rcx, %rcx
je 0x1916d
movq 0x10(%r14), %rbx
imulq $0x178, %rcx, %r13      # imm = 0x178
leaq (%rbx,%r13), %r15
addq $0xf58, %r15            # imm = 0xF58
movq %rax, -0x88(%rbp)
leaq -0x330(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x14fbe
leaq 0x6acad(%rip), %rax     # 0x82e68
movq %rax, (%r12)
movups 0x78(%r15), %xmm0
movupd 0x88(%r15), %xmm1
movups %xmm0, 0x78(%r12)
movupd %xmm1, 0x88(%r12)
movsd 0x98(%r15), %xmm0
movsd %xmm0, 0x98(%r12)
movl 0xa0(%r15), %eax
movl %eax, 0xa0(%r12)
movsd 0xa8(%r15), %xmm0
movsd %xmm0, 0xa8(%r12)
movsd 0xb0(%r15), %xmm0
movsd %xmm0, 0xb0(%r12)
movl 0xb8(%r15), %eax
movl %eax, 0xb8(%r12)
movsd 0xc0(%r15), %xmm0
movsd %xmm0, 0xc0(%r12)
movq 0xc8(%r15), %rax
movq %rax, 0xc8(%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0xd0(%r12)
movq $0x0, 0xe0(%r12)
movups 0xd0(%r15), %xmm0
movups %xmm0, 0xd0(%r12)
movq 0xe0(%r15), %rax
movq %rax, 0xe0(%r12)
movl 0xe8(%r15), %eax
movl %eax, 0xe8(%r12)
movsd 0xf0(%r15), %xmm0
movsd %xmm0, 0xf0(%r12)
movb $0x3f, 0xf8(%r12)
movl $0x0, 0xfc(%r12)
movq 0xf8(%r15), %rax
movq %rax, 0xf8(%r12)
movl 0x100(%r15), %eax
movl %eax, 0x100(%r12)
movsd 0x108(%r15), %xmm0
movsd %xmm0, 0x108(%r12)
movq -0x88(%rbp), %r12
leaq -0x220(%rbp), %rax
leaq 0x1068(%r13,%rbx), %rdx
movl $0xc, %ecx
movq %rax, %rdi
movq %rdx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl 0x60(%rdx), %ecx
movl 0x63(%rdx), %edx
movl %edx, 0x63(%rax)
movl %ecx, 0x60(%rax)
movsd 0x38(%rax), %xmm0
ucomisd 0x518e5(%rip), %xmm0    # 0x69c18
seta %cl
orb 0x18(%rax), %cl
movb %cl, -0x29(%rbp)
movq 0x8(%r12), %rax
cmpq (%r12), %rax
je 0x18853
movzbl -0x29(%rbp), %eax
addl $0x3, %eax
movl %eax, -0xa4(%rbp)
leaq 0x48(%r14), %rax
movq %rax, -0x1b8(%rbp)
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0x8(%r14), %rax
movl $0x7, -0x190(%rbp)
movq %rax, -0x188(%rbp)
xorl %edx, %edx
movq %rdx, -0x180(%rbp)
movl %edx, -0x178(%rbp)
movl %edx, -0x138(%rbp)
movq %rdx, -0x130(%rbp)
movl %edx, -0x128(%rbp)
movq %rdx, -0x120(%rbp)
movl %edx, -0x118(%rbp)
movq %rdx, -0x110(%rbp)
movl %edx, -0x108(%rbp)
movq %rdx, -0x100(%rbp)
xorpd %xmm0, %xmm0
leaq -0x170(%rbp), %rax
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movb $0x0, 0x30(%rax)
movl %edx, -0xf8(%rbp)
movq %rdx, -0xf0(%rbp)
movq 0x10(%r14), %rax
movq (%r12), %rcx
movslq (%rcx,%rbx,4), %rcx
imulq $0x178, %rcx, %rcx      # imm = 0x178
movq -0x68(%rax,%rcx), %r13
movl $0x1, -0x80(%rbp)
movl $0x1, %ecx
cmpl %edx, 0x668(%r13)
jg 0x1842b
movq %r13, %rdi
leaq -0x80(%rbp), %rsi
callq 0xef58
movslq -0x80(%rbp), %rcx
movq 0x10(%r14), %rax
shlq $0x4, %rcx
movupd 0x8(%r13,%rcx), %xmm0
leaq -0x168(%rbp), %rcx
movupd %xmm0, (%rcx)
movq (%r12), %rcx
movslq (%rcx,%rbx,4), %rsi
imulq $0x178, %rsi, %rcx      # imm = 0x178
cmpb $0x0, 0xa5(%rax,%rcx)
jne 0x18837
movsd -0x168(%rbp), %xmm0
movsd -0x160(%rbp), %xmm1
movq 0x18(%r14), %rax
movq 0x28(%r14), %rdi
subsd 0x8(%rax), %xmm0
movapd %xmm0, -0x50(%rbp)
subsd 0x10(%rax), %xmm1
movapd %xmm1, -0xc0(%rbp)
callq 0x47d92
movq %rax, %r13
movq (%rax), %rax
movq 0x8(%r13), %rcx
cmpq %rax, %rcx
je 0x186c2
movapd -0xc0(%rbp), %xmm3
movapd %xmm3, %xmm0
mulsd %xmm3, %xmm0
movapd -0x50(%rbp), %xmm2
movapd %xmm2, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
sqrtsd %xmm1, %xmm4
addsd 0x5174e(%rip), %xmm4    # 0x69c20
movapd %xmm2, %xmm0
movapd 0x50b32(%rip), %xmm2    # 0x69010
andpd %xmm2, %xmm0
movapd %xmm3, %xmm1
andpd %xmm2, %xmm1
movsd 0x50b4e(%rip), %xmm2    # 0x69040
cmpltpd %xmm2, %xmm0
cmpltpd %xmm2, %xmm1
andpd %xmm0, %xmm1
movd %xmm1, %ebx
xorl %r12d, %r12d
movsd 0x51241(%rip), %xmm2    # 0x69750
movsd %xmm4, -0x60(%rbp)
movslq (%rax,%r12,4), %rdx
movq 0x10(%r14), %rsi
movq 0x18(%r14), %rdi
imulq $0x178, %rdx, %rdx      # imm = 0x178
movsd 0xf60(%rdx,%rsi), %xmm5
movsd 0xf68(%rdx,%rsi), %xmm6
subsd 0x8(%rdi), %xmm5
subsd 0x10(%rdi), %xmm6
movapd %xmm6, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm5, %xmm1
mulsd %xmm5, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
ucomisd %xmm4, %xmm0
ja 0x1867d
xorpd %xmm7, %xmm7
xorpd %xmm3, %xmm3
testb $0x1, %bl
movsd %xmm2, -0x58(%rbp)
jne 0x185ce
movapd -0xc0(%rbp), %xmm0
movapd -0x50(%rbp), %xmm1
movapd %xmm5, -0xd0(%rbp)
movapd %xmm6, -0x1a0(%rbp)
callq 0x90d0
xorpd %xmm7, %xmm7
movapd -0x1a0(%rbp), %xmm6
movapd -0xd0(%rbp), %xmm5
movsd -0x58(%rbp), %xmm2
movsd -0x60(%rbp), %xmm4
movapd %xmm0, %xmm3
mulsd 0x50a82(%rip), %xmm3    # 0x69048
divsd 0x50a82(%rip), %xmm3    # 0x69050
movapd %xmm5, %xmm0
andpd 0x50a36(%rip), %xmm0    # 0x69010
movsd 0x50a5e(%rip), %xmm1    # 0x69040
ucomisd %xmm0, %xmm1
jbe 0x18602
movapd %xmm6, %xmm0
andpd 0x50a1c(%rip), %xmm0    # 0x69010
movsd 0x50a44(%rip), %xmm1    # 0x69040
ucomisd %xmm0, %xmm1
ja 0x1863d
movapd %xmm6, %xmm0
movapd %xmm5, %xmm1
movapd %xmm3, -0xd0(%rbp)
callq 0x90d0
movapd -0xd0(%rbp), %xmm3
movsd -0x58(%rbp), %xmm2
movsd -0x60(%rbp), %xmm4
movapd %xmm0, %xmm7
mulsd 0x50a13(%rip), %xmm7    # 0x69048
divsd 0x50a13(%rip), %xmm7    # 0x69050
subsd %xmm7, %xmm3
movsd 0x50a17(%rip), %xmm0    # 0x69060
ucomisd %xmm3, %xmm0
jbe 0x18695
addsd 0x50a19(%rip), %xmm3    # 0x69070
movsd 0x50a01(%rip), %xmm0    # 0x69060
ucomisd %xmm3, %xmm0
ja 0x1864f
andpd 0x509a3(%rip), %xmm3    # 0x69010
minsd %xmm2, %xmm3
movq (%r13), %rax
movq 0x8(%r13), %rcx
movapd %xmm3, %xmm2
incl %r12d
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r12, %rdx
ja 0x18514
jmp 0x186a9
ucomisd 0x509ab(%rip), %xmm3    # 0x69048
jb 0x18665
addsd 0x509c1(%rip), %xmm3    # 0x69068
jmp 0x18695
movsd 0x510af(%rip), %xmm0    # 0x69760
ucomisd %xmm2, %xmm0
movq -0x88(%rbp), %r12
ja 0x18837
callq 0x24814
movq %rax, %rdi
leaq -0x168(%rbp), %rsi
movl $0x1, %edx
callq 0x2488e
movsd %xmm0, -0x180(%rbp)
movq 0x20(%r14), %rax
movsd -0x168(%rbp), %xmm1
movsd -0x160(%rbp), %xmm0
subsd 0x8(%rax), %xmm1
subsd 0x10(%rax), %xmm0
movapd %xmm1, %xmm2
andpd 0x50903(%rip), %xmm2    # 0x69010
movsd 0x5092b(%rip), %xmm3    # 0x69040
ucomisd %xmm2, %xmm3
jbe 0x18739
movapd %xmm0, %xmm3
andpd 0x508e9(%rip), %xmm3    # 0x69010
xorpd %xmm2, %xmm2
movsd 0x5090d(%rip), %xmm4    # 0x69040
ucomisd %xmm3, %xmm4
ja 0x18752
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x508fe(%rip), %xmm2    # 0x69048
divsd 0x508fe(%rip), %xmm2    # 0x69050
movsd %xmm2, -0x170(%rbp)
callq 0x49360
movq 0x18(%r14), %rcx
movsd -0x168(%rbp), %xmm0
movsd -0x160(%rbp), %xmm1
subsd 0x8(%rcx), %xmm0
subsd 0x10(%rcx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
mulsd 0x3460(%rax), %xmm0
movsd 0x508bb(%rip), %xmm1    # 0x69058
subsd 0x3498(%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
callq 0x2d3f2
movq 0x8(%r14), %rsi
movl $0x3, -0x80(%rbp)
movq %rax, %rdi
leaq -0x170(%rbp), %rdx
leaq -0x80(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2e004
movsd -0x148(%rbp), %xmm1
maxsd 0x50f99(%rip), %xmm1    # 0x69780
minsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
movl -0xa4(%rbp), %eax
movl %eax, -0xf8(%rbp)
movl $0xb8, %edi
callq 0x94c0
movq %rax, %r13
movq %rax, %rdi
addq $0x10, %rdi
movl $0xa8, %edx
leaq -0x190(%rbp), %rsi
callq 0x93e0
movq %r13, %rdi
movq -0x1b8(%rbp), %rsi
callq 0x90b0
incq 0x58(%r14)
movq 0x8(%r12), %rax
subq (%r12), %rax
incl %r15d
sarq $0x2, %rax
movq %r15, %rbx
cmpq %r15, %rax
ja 0x18368
leaq 0x48(%r14), %r15
cmpq %r15, 0x48(%r14)
je 0x188bf
movq %r15, %rdi
callq 0x12934
movq (%r15), %rbx
cmpl $0x4, 0xa8(%rbx)
jne 0x1887f
movabsq $0x3ff000064a9cdc44, %rax # imm = 0x3FF000064A9CDC44
movq %rax, 0x20(%rbx)
movl $0xb8, %edi
callq 0x94c0
movq %rax, %r14
addq $0x10, %rbx
movq %rax, %rdi
addq $0x10, %rdi
movl $0xa8, %edx
movq %rbx, %rsi
callq 0x93e0
movq %r14, %rdi
movq -0x90(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
jmp 0x1914e
movq 0x8(%r14), %rcx
movq 0xc0(%rcx), %rax
testq %rax, %rax
je 0x18a7a
cmpl $0x7, (%rax)
jne 0x18a7a
movl $0x7, -0x190(%rbp)
movq %rcx, -0x188(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x180(%rbp)
movl %ecx, -0x178(%rbp)
movl %ecx, -0x138(%rbp)
movq %rcx, -0x130(%rbp)
movl %ecx, -0x128(%rbp)
movq %rcx, -0x120(%rbp)
movl %ecx, -0x118(%rbp)
movq %rcx, -0x110(%rbp)
movl %ecx, -0x108(%rbp)
movq %rcx, -0x100(%rbp)
xorpd %xmm0, %xmm0
movupd %xmm0, -0x150(%rbp)
movupd %xmm0, -0x160(%rbp)
movupd %xmm0, -0x170(%rbp)
movb $0x0, -0x140(%rbp)
movl $0x3, -0xf8(%rbp)
movq %rcx, -0xf0(%rbp)
movupd 0x28(%rax), %xmm0
movupd %xmm0, -0x168(%rbp)
callq 0x24814
leaq -0x168(%rbp), %rsi
movq %rax, %rdi
movl $0x1, %edx
callq 0x2488e
movsd %xmm0, -0x180(%rbp)
callq 0x49360
movq %rax, %rbx
callq 0x9260
movq %rax, %rcx
movabsq $0x2aaaaaaaaaaaaaab, %rdx # imm = 0x2AAAAAAAAAAAAAAB
imulq %rdx
movq %rdx, %rax
shrq $0x3f, %rax
addq %rdx, %rax
addq %rax, %rax
leaq (%rax,%rax,2), %rax
movq 0x18(%r14), %rdx
movsd -0x168(%rbp), %xmm0
movsd -0x160(%rbp), %xmm1
subsd 0x8(%rdx), %xmm0
subsd 0x10(%rdx), %xmm1
subq %rax, %rcx
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
mulsd 0x3460(%rbx), %xmm0
movsd 0x50657(%rip), %xmm1    # 0x69058
subsd 0x3498(%rbx,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
callq 0x49360
movsd -0x148(%rbp), %xmm0
maxsd 0x50d55(%rip), %xmm0    # 0x69780
movsd 0x30f8(%rax), %xmm1
minsd %xmm0, %xmm1
movsd %xmm1, -0x148(%rbp)
movl $0xb8, %edi
callq 0x94c0
movq %rax, %rbx
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x190(%rbp), %rsi
movl $0xa8, %edx
callq 0x93e0
movq %rbx, %rdi
movq -0x90(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
cmpb $0x0, -0x29(%rbp)
je 0x1914e
xorpd %xmm0, %xmm0
movapd %xmm0, -0x1b0(%rbp)
movq 0x18(%r14), %rsi
leaq -0x190(%rbp), %rdi
callq 0x14fbe
leaq 0x6a839(%rip), %rax     # 0x832e0
leaq -0x190(%rbp), %rcx
movq %rax, (%rcx)
movabsq $-0x3fb9800000000000, %rax # imm = 0xC046800000000000
leaq -0x38(%rbp), %rcx
movq %rax, (%rcx)
xorpd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
movl $0xf4240, %r13d         # imm = 0xF4240
movsd %xmm0, -0xd0(%rbp)
movl $0xf4240, -0x58(%rbp)   # imm = 0xF4240
movq %r15, -0x1a0(%rbp)
callq 0x4c9fe
movq 0x8(%r14), %rsi
movq %rax, %rdi
leaq -0x38(%rbp), %rdx
callq 0x4d640
testb %al, %al
je 0x18c0e
callq 0x4c9fe
movq 0x8(%r14), %rsi
movsd -0x38(%rbp), %xmm0
movq %rax, %rdi
callq 0x4cfe2
movsd %xmm0, -0x50(%rbp)
movsd %xmm1, -0xc0(%rbp)
callq 0x2d3f2
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movl $0x1, -0x3c(%rbp)
movq %rax, %rdi
leaq -0x98(%rbp), %rdx
leaq -0x3c(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2e004
movsd %xmm0, -0x88(%rbp)
movsd -0xc0(%rbp), %xmm1
mulsd %xmm1, %xmm1
movsd -0x50(%rbp), %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x38(%rbp), %xmm0
mulsd 0x504a7(%rip), %xmm0    # 0x69050
divsd 0x50497(%rip), %xmm0    # 0x69048
leaq -0xe8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x92d0
movsd -0x88(%rbp), %xmm1
maxsd -0x50(%rbp), %xmm1
movsd -0xa0(%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd -0xe8(%rbp), %xmm1
movsd %xmm0, -0x80(%rbp)
movsd %xmm1, -0x78(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x80(%rbp), %rsi
xorl %edx, %edx
movsd 0x50454(%rip), %xmm0    # 0x69058
callq 0xf53c
jmp 0x18cc3
callq 0x2d3f2
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
movl $0x1, -0x3c(%rbp)
movq %rax, %rdi
leaq -0x98(%rbp), %rdx
leaq -0x3c(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2e004
movsd %xmm0, -0x50(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x38(%rbp), %xmm0
mulsd 0x503e5(%rip), %xmm0    # 0x69050
divsd 0x503d5(%rip), %xmm0    # 0x69048
leaq -0xe8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x92d0
movsd -0xa0(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
mulsd %xmm1, %xmm0
mulsd -0xe8(%rbp), %xmm1
movsd %xmm0, -0x80(%rbp)
movsd %xmm1, -0x78(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x80(%rbp), %rsi
xorl %edx, %edx
movsd 0x5039a(%rip), %xmm0    # 0x69058
callq 0xf53c
movl $0x2, %r15d
xorl %r12d, %r12d
movq 0x10(%r14), %rax
movq 0x20(%r14), %rcx
movsd 0x228(%rax,%r12), %xmm1
movsd 0x230(%rax,%r12), %xmm0
subsd 0x8(%rcx), %xmm1
subsd 0x10(%rcx), %xmm0
movapd %xmm1, %xmm2
andpd 0x50312(%rip), %xmm2    # 0x69010
movsd 0x5033a(%rip), %xmm3    # 0x69040
ucomisd %xmm2, %xmm3
jbe 0x18d2a
movapd %xmm0, %xmm3
andpd 0x502f8(%rip), %xmm3    # 0x69010
xorpd %xmm2, %xmm2
movsd 0x5031c(%rip), %xmm4    # 0x69040
ucomisd %xmm3, %xmm4
ja 0x18d43
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x5030d(%rip), %xmm2    # 0x69048
divsd 0x5030d(%rip), %xmm2    # 0x69050
subsd -0x38(%rbp), %xmm2
andpd 0x502c0(%rip), %xmm2    # 0x69010
ucomisd 0x50ed0(%rip), %xmm2    # 0x69c28
ja 0x18db1
movq 0x10(%r14), %rax
cmpb $0x1, 0x332(%rax,%r12)
jne 0x18db1
movq 0x30(%r14), %rdi
movl %r15d, %esi
callq 0x2abcc
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x2ac3e
movl 0x74(%rbx), %eax
cmpl %eax, -0x58(%rbp)
jle 0x18db1
movsd 0x78(%rbx), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd 0x80(%rbx), %xmm0
movsd %xmm0, -0x60(%rbp)
movl %eax, -0x58(%rbp)
addq $0x178, %r12            # imm = 0x178
incl %r15d
cmpq $0xeb0, %r12            # imm = 0xEB0
jne 0x18ccc
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq 0x10(%r14), %rax
movq 0x20(%r14), %rcx
movsd 0x10d8(%rax,%r12), %xmm1
movsd 0x10e0(%rax,%r12), %xmm0
subsd 0x8(%rcx), %xmm1
subsd 0x10(%rcx), %xmm0
movapd %xmm1, %xmm2
andpd 0x5020d(%rip), %xmm2    # 0x69010
movsd 0x50235(%rip), %xmm3    # 0x69040
ucomisd %xmm2, %xmm3
jbe 0x18e2f
movapd %xmm0, %xmm3
andpd 0x501f3(%rip), %xmm3    # 0x69010
xorpd %xmm2, %xmm2
movsd 0x50217(%rip), %xmm4    # 0x69040
ucomisd %xmm3, %xmm4
ja 0x18e48
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x50208(%rip), %xmm2    # 0x69048
divsd 0x50208(%rip), %xmm2    # 0x69050
subsd -0x38(%rbp), %xmm2
andpd 0x501bb(%rip), %xmm2    # 0x69010
ucomisd 0x50dcb(%rip), %xmm2    # 0x69c28
ja 0x18e8c
movq 0x30(%r14), %rdi
movl %r15d, %esi
callq 0x2abcc
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x2ac3e
movl 0x74(%rbx), %eax
cmpl %eax, %r13d
cmovgel %eax, %r13d
decl %r15d
addq $0x178, %r12            # imm = 0x178
cmpq $0x1028, %r12           # imm = 0x1028
jne 0x18dd1
movsd -0x38(%rbp), %xmm0
cmpl -0x58(%rbp), %r13d
jle 0x18f3f
movq 0x20(%r14), %rax
addsd 0xb0(%rax), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, -0x80(%rbp)
movupd 0x8(%rax), %xmm1
movapd %xmm1, -0x80(%rbp)
movsd %xmm0, -0x70(%rbp)
callq 0x49360
movq -0x1a0(%rbp), %r12
movq %rax, %r15
callq 0x49360
movsd 0x3910(%r15), %xmm0
movsd 0x3920(%rax), %xmm1
movapd %xmm0, %xmm2
subsd %xmm1, %xmm2
andpd 0x50105(%rip), %xmm2    # 0x69010
movsd 0x5012d(%rip), %xmm3    # 0x69040
ucomisd %xmm2, %xmm3
jbe 0x18f4b
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, -0xe8(%rbp)
movq $0x0, -0xe0(%rbp)
xorpd 0x500e3(%rip), %xmm0    # 0x69020
jmp 0x18f8d
movq -0x1a0(%rbp), %r12
jmp 0x190c3
movsd 0x3928(%rax), %xmm2
movsd 0x3918(%r15), %xmm3
subsd %xmm3, %xmm2
subsd %xmm0, %xmm1
divsd %xmm1, %xmm2
movsd %xmm2, -0xe8(%rbp)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0xe0(%rbp)
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm3
movapd %xmm3, %xmm0
movsd %xmm0, -0xd8(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x1b0(%rbp), %rdx
callq 0x29634
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x49360
movsd 0x3840(%rax), %xmm0
ucomisd -0x50(%rbp), %xmm0
ja 0x18ff2
movsd -0x1a8(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x49360
movsd -0x50(%rbp), %xmm0
ucomisd 0x3848(%rax), %xmm0
jbe 0x190be
movq 0x8(%r14), %rbx
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0xc0(%rbp)
movl $0xb8, %edi
callq 0x94c0
movsd -0x50(%rbp), %xmm0
addsd -0xc0(%rbp), %xmm0
movl $0x7, 0x10(%rax)
movq %rbx, 0x18(%rax)
movabsq $0x3ff000064a9cdc44, %rcx # imm = 0x3FF000064A9CDC44
movq %rcx, 0x20(%rax)
xorl %ecx, %ecx
movl %ecx, 0x28(%rax)
movsd %xmm0, 0x30(%rax)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, 0x38(%rax)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, 0x40(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x48(%rax)
movupd %xmm0, 0x51(%rax)
movl %ecx, 0x68(%rax)
movq %rcx, 0x70(%rax)
movl %ecx, 0x78(%rax)
movq %rcx, 0x80(%rax)
movl %ecx, 0x88(%rax)
movq %rcx, 0x90(%rax)
movl %ecx, 0x98(%rax)
movq %rcx, 0xa0(%rax)
movl $0x4, 0xa8(%rax)
movq %rcx, 0xb0(%rax)
movq %rax, %rdi
movq %r12, %rsi
callq 0x90b0
incq 0x58(%r14)
movsd -0x38(%rbp), %xmm0
addsd 0x5069d(%rip), %xmm0    # 0x69768
movsd %xmm0, -0x38(%rbp)
movsd 0x50b50(%rip), %xmm1    # 0x69c28
ucomisd %xmm0, %xmm1
jae 0x18ae7
cmpq %r12, (%r12)
je 0x1912f
movq %r12, %rdi
callq 0x12934
movq (%r12), %rbx
movl $0xb8, %edi
callq 0x94c0
movq %rax, %r14
addq $0x10, %rbx
movq %rax, %rdi
addq $0x10, %rdi
movl $0xa8, %edx
movq %rbx, %rsi
callq 0x93e0
movq %r14, %rdi
movq -0x90(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
leaq 0x6929a(%rip), %rax     # 0x823d0
movq %rax, -0x190(%rbp)
movq -0x128(%rbp), %rdi
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
leaq 0x6927b(%rip), %rax     # 0x823d0
movq %rax, -0x330(%rbp)
movq -0x2c8(%rbp), %rdi
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x191a5
jmp 0x191a5
jmp 0x191ac
jmp 0x191a5
jmp 0x191a5
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191ac
jmp 0x191a5
jmp 0x191a5
jmp 0x191a5
jmp 0x191a5
jmp 0x191ac
jmp 0x191ac
movq %rax, %rbx
jmp 0x191ce
jmp 0x191ac
movq %rax, %rbx
leaq 0x6921a(%rip), %rax     # 0x823d0
movq %rax, -0x190(%rbp)
movq -0x128(%rbp), %rdi
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
leaq 0x691fb(%rip), %rax     # 0x823d0
movq %rax, -0x330(%rbp)
movq -0x2c8(%rbp), %rdi
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
movq %rbx, %rdi
callq 0x98b0
nop