// File: /workspace/github_cpp_makefile_star2_O1/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 $0x328, %rsp            # imm = 0x328
movq %rsi, -0x88(%rbp)
movq 0x20(%rdi), %rax
cmpb $0x1, 0x128(%rax)
jne 0x1949f
movq %rdi, %r14
movq 0x28(%rdi), %rdi
movl 0x11c(%rax), %esi
callq 0x49042
movq 0x38(%r14), %rcx
movslq 0x78(%rcx), %rcx
testq %rcx, %rcx
je 0x1949f
movq 0x10(%r14), %rbx
imulq $0x178, %rcx, %r13      # imm = 0x178
leaq (%rbx,%r13), %r15
addq $0xf58, %r15            # imm = 0xF58
movq %rax, -0x188(%rbp)
leaq -0x348(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x151ba
leaq 0x6d92b(%rip), %rax     # 0x85dc8
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 -0x188(%rbp), %r12
leaq -0x238(%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 0x53603(%rip), %xmm0    # 0x6bc18
seta %cl
orb 0x18(%rax), %cl
movb %cl, -0x29(%rbp)
movq 0x8(%r12), %rax
cmpq (%r12), %rax
je 0x18b7b
movzbl -0x29(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x9c(%rbp)
leaq 0x48(%r14), %rax
movq %rax, -0x1a8(%rbp)
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0x8(%r14), %rax
movl $0x7, -0x160(%rbp)
movq %rax, -0x158(%rbp)
xorl %edx, %edx
movq %rdx, -0x150(%rbp)
movl %edx, -0x148(%rbp)
movl %edx, -0x108(%rbp)
movq %rdx, -0x100(%rbp)
movl %edx, -0xf8(%rbp)
movq %rdx, -0xf0(%rbp)
movl %edx, -0xe8(%rbp)
movq %rdx, -0xe0(%rbp)
movl %edx, -0xd8(%rbp)
movq %rdx, -0xd0(%rbp)
xorpd %xmm0, %xmm0
leaq -0x140(%rbp), %rax
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movb $0x0, 0x30(%rax)
movl %edx, -0xc8(%rbp)
movq %rdx, -0xc0(%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, -0x70(%rbp)
cmpl %edx, 0x668(%r13)
jle 0x186fa
addq $0x18, %r13
jmp 0x18715
movq %r13, %rdi
leaq -0x70(%rbp), %rsi
callq 0xf062
movslq -0x70(%rbp), %rax
shlq $0x4, %rax
addq %rax, %r13
addq $0x8, %r13
movupd (%r13), %xmm0
leaq -0x138(%rbp), %rax
movupd %xmm0, (%rax)
movq 0x10(%r14), %rax
movq (%r12), %rcx
movslq (%rcx,%rbx,4), %rsi
imulq $0x178, %rsi, %rcx      # imm = 0x178
cmpb $0x0, 0xa5(%rax,%rcx)
jne 0x18b5f
movsd -0x138(%rbp), %xmm0
movsd -0x130(%rbp), %xmm1
movq 0x18(%r14), %rax
movq 0x28(%r14), %rdi
subsd 0x8(%rax), %xmm0
movapd %xmm0, -0x1d0(%rbp)
subsd 0x10(%rax), %xmm1
movapd %xmm1, -0x1c0(%rbp)
callq 0x490c4
movq %rax, %r13
movq (%rax), %rax
cmpq %rax, 0x8(%r13)
je 0x189d4
movapd -0x1c0(%rbp), %xmm3
movapd %xmm3, %xmm0
mulsd %xmm3, %xmm0
movapd -0x1d0(%rbp), %xmm1
movapd %xmm1, %xmm4
mulsd %xmm1, %xmm4
addsd %xmm0, %xmm4
movapd %xmm1, %xmm0
movapd 0x52852(%rip), %xmm2    # 0x6b010
andpd %xmm2, %xmm0
movapd %xmm3, %xmm1
andpd %xmm2, %xmm1
movsd 0x5286e(%rip), %xmm2    # 0x6b040
cmpltpd %xmm2, %xmm0
cmpltpd %xmm2, %xmm1
andpd %xmm0, %xmm1
movd %xmm1, %ebx
xorl %r12d, %r12d
movapd %xmm4, -0x170(%rbp)
xorps %xmm0, %xmm0
sqrtsd %xmm4, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x52f4d(%rip), %xmm0    # 0x6b750
movsd %xmm0, -0x58(%rbp)
movslq (%rax,%r12,4), %rax
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
imulq $0x178, %rax, %rax      # imm = 0x178
movsd 0xf60(%rax,%rcx), %xmm0
movsd 0xf68(%rax,%rcx), %xmm1
subsd 0x8(%rdx), %xmm0
subsd 0x10(%rdx), %xmm1
movapd %xmm1, -0x180(%rbp)
mulsd %xmm1, %xmm1
movapd %xmm0, -0x80(%rbp)
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x52838(%rip), %xmm0    # 0x6b090
jb 0x18863
xorps %xmm1, %xmm1
sqrtsd %xmm0, %xmm1
jmp 0x1886c
callq 0x93c0
movapd %xmm0, %xmm1
movapd -0x170(%rbp), %xmm0
ucomisd 0x52814(%rip), %xmm0    # 0x6b090
movsd -0x38(%rbp), %xmm0
jae 0x1889a
movapd -0x170(%rbp), %xmm0
movsd %xmm1, -0x50(%rbp)
callq 0x93c0
movsd -0x50(%rbp), %xmm1
addsd 0x5337e(%rip), %xmm0    # 0x6bc20
ucomisd %xmm0, %xmm1
ja 0x18989
xorpd %xmm3, %xmm3
xorpd %xmm2, %xmm2
testb $0x1, %bl
jne 0x188e6
movapd -0x1c0(%rbp), %xmm0
movapd -0x1d0(%rbp), %xmm1
callq 0x90d0
xorpd %xmm3, %xmm3
movapd %xmm0, %xmm2
mulsd 0x5276a(%rip), %xmm2    # 0x6b048
divsd 0x5276a(%rip), %xmm2    # 0x6b050
movapd -0x80(%rbp), %xmm0
andpd 0x5271d(%rip), %xmm0    # 0x6b010
movsd 0x52745(%rip), %xmm1    # 0x6b040
ucomisd %xmm0, %xmm1
jbe 0x1891f
movapd -0x180(%rbp), %xmm0
andpd 0x526ff(%rip), %xmm0    # 0x6b010
movsd 0x52727(%rip), %xmm1    # 0x6b040
ucomisd %xmm0, %xmm1
ja 0x1894f
movapd -0x180(%rbp), %xmm0
movapd -0x80(%rbp), %xmm1
movapd %xmm2, -0x80(%rbp)
callq 0x90d0
movapd -0x80(%rbp), %xmm2
movapd %xmm0, %xmm3
mulsd 0x52701(%rip), %xmm3    # 0x6b048
divsd 0x52701(%rip), %xmm3    # 0x6b050
subsd %xmm3, %xmm2
movsd 0x52705(%rip), %xmm0    # 0x6b060
ucomisd %xmm2, %xmm0
jbe 0x189a6
addsd 0x52707(%rip), %xmm2    # 0x6b070
movsd 0x526ef(%rip), %xmm0    # 0x6b060
ucomisd %xmm2, %xmm0
ja 0x18961
andpd 0x52691(%rip), %xmm2    # 0x6b010
minsd -0x58(%rbp), %xmm2
movsd %xmm2, -0x58(%rbp)
incl %r12d
movq (%r13), %rax
movq 0x8(%r13), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x18808
jmp 0x189ba
ucomisd 0x5269a(%rip), %xmm2    # 0x6b048
jb 0x18977
addsd 0x526b0(%rip), %xmm2    # 0x6b068
jmp 0x189a6
movsd 0x52d9e(%rip), %xmm0    # 0x6b760
ucomisd -0x58(%rbp), %xmm0
movq -0x188(%rbp), %r12
ja 0x18b5f
callq 0x24ed2
movq %rax, %rdi
leaq -0x138(%rbp), %rsi
movl $0x1, %edx
callq 0x24f4c
movsd %xmm0, -0x150(%rbp)
movq 0x20(%r14), %rax
movsd -0x138(%rbp), %xmm1
movsd -0x130(%rbp), %xmm0
subsd 0x8(%rax), %xmm1
subsd 0x10(%rax), %xmm0
movapd %xmm1, %xmm2
andpd 0x525f1(%rip), %xmm2    # 0x6b010
movsd 0x52619(%rip), %xmm3    # 0x6b040
ucomisd %xmm2, %xmm3
jbe 0x18a4b
movapd %xmm0, %xmm3
andpd 0x525d7(%rip), %xmm3    # 0x6b010
xorpd %xmm2, %xmm2
movsd 0x525fb(%rip), %xmm4    # 0x6b040
ucomisd %xmm3, %xmm4
ja 0x18a64
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x525ec(%rip), %xmm2    # 0x6b048
divsd 0x525ec(%rip), %xmm2    # 0x6b050
movsd %xmm2, -0x140(%rbp)
callq 0x4a75c
movq %rax, %r13
movq 0x18(%r14), %rax
movsd -0x138(%rbp), %xmm0
subsd 0x8(%rax), %xmm0
movsd -0x130(%rbp), %xmm1
subsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x525ea(%rip), %xmm0    # 0x6b090
jb 0x18aae
sqrtsd %xmm0, %xmm0
jmp 0x18ab3
callq 0x93c0
mulsd 0x3460(%r13), %xmm0
movsd 0x52594(%rip), %xmm1    # 0x6b058
subsd 0x3498(%r13), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
callq 0x2ddfa
movq 0x8(%r14), %rsi
movl $0x3, -0x70(%rbp)
movq %rax, %rdi
leaq -0x140(%rbp), %rdx
leaq -0x70(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2eaba
movsd -0x118(%rbp), %xmm1
maxsd 0x52c71(%rip), %xmm1    # 0x6b780
minsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movl -0x9c(%rbp), %eax
movl %eax, -0xc8(%rbp)
movl $0xb8, %edi
callq 0x94c0
movq %rax, %r13
movq %rax, %rdi
addq $0x10, %rdi
movl $0xa8, %edx
leaq -0x160(%rbp), %rsi
callq 0x93e0
movq %r13, %rdi
movq -0x1a8(%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 0x1864a
leaq 0x48(%r14), %r12
cmpq %r12, 0x48(%r14)
je 0x18be8
movq %r12, %rdi
callq 0x12a4c
movq (%r12), %rbx
cmpl $0x4, 0xa8(%rbx)
jne 0x18ba8
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 -0x88(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
jmp 0x1947b
movq 0x8(%r14), %rcx
movq 0xc0(%rcx), %rax
testq %rax, %rax
je 0x18db9
cmpl $0x7, (%rax)
jne 0x18db9
movl $0x7, -0x160(%rbp)
movq %rcx, -0x158(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x150(%rbp)
movl %ecx, -0x148(%rbp)
movl %ecx, -0x108(%rbp)
movq %rcx, -0x100(%rbp)
movl %ecx, -0xf8(%rbp)
movq %rcx, -0xf0(%rbp)
movl %ecx, -0xe8(%rbp)
movq %rcx, -0xe0(%rbp)
movl %ecx, -0xd8(%rbp)
movq %rcx, -0xd0(%rbp)
xorpd %xmm0, %xmm0
movupd %xmm0, -0x120(%rbp)
movupd %xmm0, -0x130(%rbp)
movupd %xmm0, -0x140(%rbp)
movb $0x0, -0x110(%rbp)
movl $0x3, -0xc8(%rbp)
movq %rcx, -0xc0(%rbp)
movupd 0x28(%rax), %xmm0
movupd %xmm0, -0x138(%rbp)
callq 0x24ed2
leaq -0x138(%rbp), %rsi
movq %rax, %rdi
movl $0x1, %edx
callq 0x24f4c
movsd %xmm0, -0x150(%rbp)
callq 0x4a75c
movq %rax, %rbx
callq 0x9260
movq %rax, %r15
movq 0x18(%r14), %rax
movsd -0x138(%rbp), %xmm0
movsd -0x130(%rbp), %xmm1
subsd 0x8(%rax), %xmm0
subsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x18d05
sqrtsd %xmm0, %xmm0
jmp 0x18d0a
callq 0x93c0
mulsd 0x3460(%rbx), %xmm0
movabsq $0x2aaaaaaaaaaaaaab, %rcx # imm = 0x2AAAAAAAAAAAAAAB
movq %r15, %rax
imulq %rcx
movq %rdx, %rax
shrq $0x3f, %rax
addl %edx, %eax
addl %eax, %eax
leal (%rax,%rax,2), %eax
subl %eax, %r15d
addl $0x5, %r15d
movsd 0x52319(%rip), %xmm1    # 0x6b058
subsd 0x3470(%rbx,%r15,8), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
callq 0x4a75c
movsd -0x118(%rbp), %xmm0
movsd 0x30f8(%rax), %xmm1
maxsd 0x52a0e(%rip), %xmm0    # 0x6b780
minsd %xmm0, %xmm1
movsd %xmm1, -0x118(%rbp)
movl $0xb8, %edi
callq 0x94c0
movq %rax, %rbx
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x160(%rbp), %rsi
movl $0xa8, %edx
callq 0x93e0
movq %rbx, %rdi
movq -0x88(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
cmpb $0x0, -0x29(%rbp)
je 0x1947b
xorpd %xmm0, %xmm0
movapd %xmm0, -0x1a0(%rbp)
movq 0x18(%r14), %rsi
leaq -0x160(%rbp), %rdi
callq 0x151ba
leaq 0x6d4aa(%rip), %rax     # 0x86290
leaq -0x160(%rbp), %rcx
movq %rax, (%rcx)
movabsq $-0x3fb9800000000000, %rax # imm = 0xC046800000000000
leaq -0x40(%rbp), %rcx
movq %rax, (%rcx)
movl $0xf4240, %r13d         # imm = 0xF4240
xorpd %xmm0, %xmm0
movsd %xmm0, -0x170(%rbp)
movsd %xmm0, -0x180(%rbp)
movl $0xf4240, -0x80(%rbp)   # imm = 0xF4240
movq %r12, -0x58(%rbp)
callq 0x4df3a
movq 0x8(%r14), %rsi
movq %rax, %rdi
leaq -0x40(%rbp), %rdx
callq 0x4ecac
testb %al, %al
je 0x18e78
callq 0x4df3a
movq 0x8(%r14), %rsi
movsd -0x40(%rbp), %xmm0
movq %rax, %rdi
callq 0x4e614
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x52227(%rip), %xmm0    # 0x6b090
jb 0x18f32
sqrtsd %xmm0, %xmm0
jmp 0x18f37
callq 0x2ddfa
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movl $0x1, -0x44(%rbp)
movq %rax, %rdi
leaq -0x90(%rbp), %rdx
leaq -0x44(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2eaba
movsd %xmm0, -0x38(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x40(%rbp), %xmm0
mulsd 0x5217b(%rip), %xmm0    # 0x6b050
divsd 0x5216b(%rip), %xmm0    # 0x6b048
leaq -0xb8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x92d0
movsd -0x98(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm1, %xmm0
mulsd -0xb8(%rbp), %xmm1
movsd %xmm0, -0x70(%rbp)
movsd %xmm1, -0x68(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x70(%rbp), %rsi
xorl %edx, %edx
movsd 0x52130(%rip), %xmm0    # 0x6b058
callq 0xf64c
jmp 0x18ff6
callq 0x93c0
movsd %xmm0, -0x38(%rbp)
callq 0x2ddfa
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movl $0x1, -0x44(%rbp)
movq %rax, %rdi
leaq -0x90(%rbp), %rdx
leaq -0x44(%rbp), %rcx
xorl %r8d, %r8d
callq 0x2eaba
movsd %xmm0, -0x50(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x40(%rbp), %xmm0
mulsd 0x520b7(%rip), %xmm0    # 0x6b050
divsd 0x520a7(%rip), %xmm0    # 0x6b048
leaq -0xb8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x92d0
movsd -0x50(%rbp), %xmm1
maxsd -0x38(%rbp), %xmm1
movsd -0x98(%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd -0xb8(%rbp), %xmm1
movsd %xmm0, -0x70(%rbp)
movsd %xmm1, -0x68(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x70(%rbp), %rsi
xorl %edx, %edx
movsd 0x52067(%rip), %xmm0    # 0x6b058
callq 0xf64c
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 0x51fdf(%rip), %xmm2    # 0x6b010
movsd 0x52007(%rip), %xmm3    # 0x6b040
ucomisd %xmm2, %xmm3
jbe 0x1905d
movapd %xmm0, %xmm3
andpd 0x51fc5(%rip), %xmm3    # 0x6b010
xorpd %xmm2, %xmm2
movsd 0x51fe9(%rip), %xmm4    # 0x6b040
ucomisd %xmm3, %xmm4
ja 0x19076
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x51fda(%rip), %xmm2    # 0x6b048
divsd 0x51fda(%rip), %xmm2    # 0x6b050
subsd -0x40(%rbp), %xmm2
andpd 0x51f8d(%rip), %xmm2    # 0x6b010
ucomisd 0x52b9d(%rip), %xmm2    # 0x6bc28
ja 0x190e7
movq 0x10(%r14), %rax
cmpb $0x1, 0x332(%rax,%r12)
jne 0x190e7
movq 0x30(%r14), %rdi
movl %r15d, %esi
callq 0x2b48a
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x2b50a
movl 0x74(%rbx), %eax
cmpl %eax, -0x80(%rbp)
jle 0x190e7
movsd 0x78(%rbx), %xmm0
movsd %xmm0, -0x180(%rbp)
movsd 0x80(%rbx), %xmm0
movsd %xmm0, -0x170(%rbp)
movl %eax, -0x80(%rbp)
addq $0x178, %r12            # imm = 0x178
incl %r15d
cmpq $0xeb0, %r12            # imm = 0xEB0
jne 0x18fff
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 0x51ed7(%rip), %xmm2    # 0x6b010
movsd 0x51eff(%rip), %xmm3    # 0x6b040
ucomisd %xmm2, %xmm3
jbe 0x19165
movapd %xmm0, %xmm3
andpd 0x51ebd(%rip), %xmm3    # 0x6b010
xorpd %xmm2, %xmm2
movsd 0x51ee1(%rip), %xmm4    # 0x6b040
ucomisd %xmm3, %xmm4
ja 0x1917e
callq 0x90d0
movapd %xmm0, %xmm2
mulsd 0x51ed2(%rip), %xmm2    # 0x6b048
divsd 0x51ed2(%rip), %xmm2    # 0x6b050
subsd -0x40(%rbp), %xmm2
andpd 0x51e85(%rip), %xmm2    # 0x6b010
ucomisd 0x52a95(%rip), %xmm2    # 0x6bc28
ja 0x191c2
movq 0x30(%r14), %rdi
movl %r15d, %esi
callq 0x2b48a
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x2b50a
movl 0x74(%rbx), %eax
cmpl %eax, %r13d
cmovgel %eax, %r13d
decl %r15d
addq $0x178, %r12            # imm = 0x178
cmpq $0x1028, %r12           # imm = 0x1028
jne 0x19107
cmpl -0x80(%rbp), %r13d
movq -0x58(%rbp), %r12
jle 0x193e6
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x40(%rbp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, -0x70(%rbp)
movupd 0x8(%rax), %xmm1
movapd %xmm1, -0x70(%rbp)
movsd %xmm0, -0x60(%rbp)
callq 0x4a75c
movq %rax, %r15
callq 0x4a75c
movsd 0x3910(%r15), %xmm0
movsd 0x3920(%rax), %xmm1
movapd %xmm0, %xmm2
subsd %xmm1, %xmm2
andpd 0x51dd2(%rip), %xmm2    # 0x6b010
movsd 0x51dfa(%rip), %xmm3    # 0x6b040
ucomisd %xmm2, %xmm3
jbe 0x1927a
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, -0xb8(%rbp)
movq $0x0, -0xb0(%rbp)
xorpd 0x51db0(%rip), %xmm0    # 0x6b020
movlpd %xmm0, -0xa8(%rbp)
jmp 0x192c0
movsd 0x3928(%rax), %xmm2
movsd 0x3918(%r15), %xmm3
subsd %xmm3, %xmm2
subsd %xmm0, %xmm1
divsd %xmm1, %xmm2
movsd %xmm2, -0xb8(%rbp)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0xb0(%rbp)
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm3
movsd %xmm3, -0xa8(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x1a0(%rbp), %rdx
callq 0x29ecc
movsd -0x198(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x4a75c
movsd 0x3840(%rax), %xmm0
ucomisd -0x38(%rbp), %xmm0
ja 0x1931d
movsd -0x198(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x4a75c
movsd -0x38(%rbp), %xmm0
ucomisd 0x3848(%rax), %xmm0
jbe 0x193e6
movq 0x8(%r14), %rbx
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movl $0xb8, %edi
callq 0x94c0
movsd -0x38(%rbp), %xmm0
addsd -0x50(%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 -0x180(%rbp), %xmm0
movsd %xmm0, 0x38(%rax)
movsd -0x170(%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 -0x40(%rbp), %xmm0
addsd 0x52375(%rip), %xmm0    # 0x6b768
movsd %xmm0, -0x40(%rbp)
movsd 0x52828(%rip), %xmm1    # 0x6bc28
ucomisd %xmm0, %xmm1
jae 0x18e26
cmpq %r12, (%r12)
je 0x19457
movq %r12, %rdi
callq 0x12a4c
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 -0x88(%rbp), %rbx
movq %rbx, %rsi
callq 0x90b0
incq 0x10(%rbx)
leaq 0x6be52(%rip), %rax     # 0x852b0
movq %rax, -0x160(%rbp)
movq -0xf8(%rbp), %rdi
testq %rdi, %rdi
je 0x1947b
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
leaq 0x6be2e(%rip), %rax     # 0x852b0
movq %rax, -0x348(%rbp)
movq -0x2e0(%rbp), %rdi
testq %rdi, %rdi
je 0x1949f
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x194d7
jmp 0x194d7
jmp 0x194de
jmp 0x194d7
jmp 0x194d7
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194de
jmp 0x194d7
jmp 0x194d7
jmp 0x194d7
jmp 0x194d7
jmp 0x194de
jmp 0x194de
movq %rax, %rbx
jmp 0x19505
jmp 0x194de
movq %rax, %rbx
leaq 0x6bdc8(%rip), %rax     # 0x852b0
movq %rax, -0x160(%rbp)
movq -0xf8(%rbp), %rdi
testq %rdi, %rdi
je 0x19505
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
leaq 0x6bda4(%rip), %rax     # 0x852b0
movq %rax, -0x348(%rbp)
movq -0x2e0(%rbp), %rdi
testq %rdi, %rdi
je 0x19529
movl $0x670, %esi            # imm = 0x670
callq 0x94e0
movq %rbx, %rdi
callq 0x98b0
nop