// File: 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
subq $0x9b0, %rsp            # imm = 0x9B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x618(%rbp)
movq 0x20(%rax), %rdi
callq 0x10ef0
testb $0x1, %al
jne 0x226c0
jmp 0x23b77
movq -0x618(%rbp), %rax
movq 0x28(%rax), %rcx
movq %rcx, -0x620(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movq -0x620(%rbp), %rdi
movl %eax, %esi
callq 0x23d80
movq %rax, %rcx
movq -0x618(%rbp), %rax
movq %rcx, -0x18(%rbp)
movq 0x38(%rax), %rdi
callq 0x23db0
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
jne 0x2270e
jmp 0x23b77
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x1c(%rbp), %rsi
callq 0x1d480
movq %rax, %rsi
leaq -0x198(%rbp), %rdi
movq %rdi, -0x630(%rbp)
callq 0x1d510
movq -0x630(%rbp), %rdi
callq 0x10ef0
movb %al, -0x621(%rbp)
jmp 0x2274c
movb -0x621(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x631(%rbp)
jne 0x22799
jmp 0x22761
leaq -0x198(%rbp), %rdi
movl $0x1, %esi
callq 0x10fb0
movsd %xmm0, -0x640(%rbp)
jmp 0x2277c
movsd -0x640(%rbp), %xmm0
movsd 0x9f414(%rip), %xmm1    # 0xc1ba0
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0x631(%rbp)
movb -0x631(%rbp), %al
andb $0x1, %al
movb %al, -0x199(%rbp)
movl $0x0, -0x1b0(%rbp)
movl -0x1b0(%rbp), %eax
movq %rax, -0x648(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1d7a0
movq %rax, %rcx
movq -0x648(%rbp), %rax
cmpq %rcx, %rax
jae 0x22e26
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x258(%rbp), %rdi
movl $0x7, %edx
xorl %ecx, %ecx
callq 0x1b4d0
jmp 0x227fa
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x658(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1b0(%rbp), %eax
movl %eax, %esi
callq 0x1b610
movq -0x658(%rbp), %rdi
movq %rax, %rsi
callq 0x12520
movq %rax, -0x650(%rbp)
jmp 0x22835
movq -0x650(%rbp), %rdi
movl $0x1, %esi
callq 0x11fc0
movq %rax, -0x660(%rbp)
jmp 0x2284f
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
movups (%rcx), %xmm0
movups %xmm0, -0x230(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x670(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1b0(%rbp), %eax
movl %eax, %esi
callq 0x1b610
movq -0x670(%rbp), %rdi
movq %rax, %rsi
callq 0x12520
movq %rax, -0x668(%rbp)
jmp 0x2289b
movq -0x668(%rbp), %rdi
callq 0x1d780
movb %al, -0x671(%rbp)
jmp 0x228af
movb -0x671(%rbp), %al
testb $0x1, %al
jne 0x228bb
jmp 0x228d7
jmp 0x22e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
jmp 0x23b80
movq -0x618(%rbp), %rax
leaq -0x230(%rbp), %rcx
movq %rcx, -0x688(%rbp)
movq 0x18(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x680(%rbp)
jmp 0x22902
movq -0x680(%rbp), %rsi
movq -0x688(%rbp), %rdi
callq 0x110a0
movsd %xmm1, -0x698(%rbp)
movsd %xmm0, -0x690(%rbp)
jmp 0x22927
movq -0x618(%rbp), %rax
movsd -0x698(%rbp), %xmm0
movsd -0x690(%rbp), %xmm1
movsd %xmm1, -0x268(%rbp)
movsd %xmm0, -0x260(%rbp)
movq 0x28(%rax), %rax
movq %rax, -0x6a8(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1b0(%rbp), %eax
movl %eax, %esi
callq 0x1b610
movq -0x6a8(%rbp), %rdi
movl (%rax), %esi
callq 0x22220
movq %rax, -0x6a0(%rbp)
jmp 0x22981
movq -0x6a0(%rbp), %rax
movq %rax, -0x270(%rbp)
movsd 0x9ed81(%rip), %xmm0    # 0xc1718
movsd %xmm0, -0x278(%rbp)
movl $0x0, -0x27c(%rbp)
movl -0x27c(%rbp), %eax
movq %rax, -0x6b0(%rbp)
movq -0x270(%rbp), %rdi
callq 0x1d7a0
movq %rax, %rcx
movq -0x6b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x22b96
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x6c0(%rbp)
movq -0x270(%rbp), %rdi
movl -0x27c(%rbp), %eax
movl %eax, %esi
callq 0x1b610
movq -0x6c0(%rbp), %rdi
movq %rax, %rsi
callq 0x1d480
movq %rax, -0x6b8(%rbp)
jmp 0x22a13
movq -0x6b8(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x6c8(%rbp)
jmp 0x22a2c
movq -0x618(%rbp), %rax
movq 0x18(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x6d0(%rbp)
jmp 0x22a49
movq -0x6d0(%rbp), %rsi
movq -0x6c8(%rbp), %rdi
callq 0x110a0
movsd %xmm1, -0x6e0(%rbp)
movsd %xmm0, -0x6d8(%rbp)
jmp 0x22a6e
movsd -0x6e0(%rbp), %xmm0
movsd -0x6d8(%rbp), %xmm1
movsd %xmm1, -0x290(%rbp)
movsd %xmm0, -0x288(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x104e0
movsd %xmm0, -0x6e8(%rbp)
jmp 0x22aa4
leaq -0x268(%rbp), %rdi
callq 0x104e0
movsd %xmm0, -0x6f0(%rbp)
jmp 0x22aba
movsd -0x6e8(%rbp), %xmm0
movsd -0x6f0(%rbp), %xmm1
movsd 0x9f0e6(%rip), %xmm2    # 0xc1bb8
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x22ae1
jmp 0x22b82
leaq -0x268(%rbp), %rdi
callq 0x10520
movsd %xmm0, -0x6f8(%rbp)
jmp 0x22af7
movsd -0x6f8(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x10520
movsd %xmm0, -0x700(%rbp)
jmp 0x22b1d
movsd -0x700(%rbp), %xmm0
movsd %xmm0, -0x2a8(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x1d7c0
movsd %xmm0, -0x708(%rbp)
jmp 0x22b4a
movsd -0x708(%rbp), %xmm0
movsd %xmm0, -0x298(%rbp)
movsd -0x298(%rbp), %xmm1
movsd -0x278(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x22b80
movsd -0x298(%rbp), %xmm0
movsd %xmm0, -0x278(%rbp)
jmp 0x22b82
movl -0x27c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x27c(%rbp)
jmp 0x229a9
movsd 0x9eb5a(%rip), %xmm0    # 0xc16f8
ucomisd -0x278(%rbp), %xmm0
jbe 0x22bad
jmp 0x22e12
callq 0x38230
movq %rax, -0x710(%rbp)
jmp 0x22bbb
movq -0x710(%rbp), %rdi
leaq -0x230(%rbp), %rsi
movl $0x1, %edx
callq 0x382c0
movsd %xmm0, -0x718(%rbp)
jmp 0x22bdd
movq -0x618(%rbp), %rax
movsd -0x718(%rbp), %xmm0
movsd %xmm0, -0x248(%rbp)
leaq -0x230(%rbp), %rcx
movq %rcx, -0x728(%rbp)
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x720(%rbp)
jmp 0x22c18
movq -0x720(%rbp), %rsi
movq -0x728(%rbp), %rdi
callq 0x110a0
movsd %xmm1, -0x738(%rbp)
movsd %xmm0, -0x730(%rbp)
jmp 0x22c3d
movsd -0x738(%rbp), %xmm0
movsd -0x730(%rbp), %xmm1
movsd %xmm1, -0x2b8(%rbp)
movsd %xmm0, -0x2b0(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x10520
movsd %xmm0, -0x740(%rbp)
jmp 0x22c73
movsd -0x740(%rbp), %xmm0
movsd %xmm0, -0x238(%rbp)
callq 0x855e0
movq %rax, -0x748(%rbp)
jmp 0x22c91
movq -0x618(%rbp), %rax
movl $0x5, -0x2bc(%rbp)
leaq -0x230(%rbp), %rcx
movq %rcx, -0x758(%rbp)
movq 0x18(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x750(%rbp)
jmp 0x22cc6
movq -0x750(%rbp), %rsi
movq -0x758(%rbp), %rdi
callq 0x1d6d0
movsd %xmm0, -0x760(%rbp)
jmp 0x22ce3
movq -0x748(%rbp), %rdi
movsd -0x760(%rbp), %xmm0
movsd %xmm0, -0x2c8(%rbp)
leaq -0x2bc(%rbp), %rsi
leaq -0x2c8(%rbp), %rdx
callq 0x23dd0
movsd %xmm0, -0x768(%rbp)
jmp 0x22d17
movsd -0x768(%rbp), %xmm0
leaq -0x210(%rbp), %rax
movq %rax, -0x778(%rbp)
movsd %xmm0, -0x210(%rbp)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, -0x2d0(%rbp)
callq 0x4ff20
movq %rax, -0x770(%rbp)
jmp 0x22d54
movq -0x770(%rbp), %rdi
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x238(%rbp), %rdx
movl $0x3, -0x2dc(%rbp)
xorl %eax, %eax
movl %eax, %r8d
leaq -0x2dc(%rbp), %rcx
callq 0x510a0
movsd %xmm0, -0x780(%rbp)
jmp 0x22d92
movq -0x778(%rbp), %rsi
movsd -0x780(%rbp), %xmm0
movsd %xmm0, -0x2d8(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq -0x2d8(%rbp), %rdx
callq 0x12a20
movq %rax, -0x788(%rbp)
jmp 0x22dc5
movq -0x788(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x210(%rbp)
testb $0x1, -0x199(%rbp)
je 0x22ded
movl $0x4, -0x1c0(%rbp)
jmp 0x22df7
movl $0x3, -0x1c0(%rbp)
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
leaq -0x258(%rbp), %rsi
callq 0x189a0
jmp 0x22e10
jmp 0x22e12
movl -0x1b0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b0(%rbp)
jmp 0x227b1
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x18580
testb $0x1, %al
jne 0x22eb3
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x185a0
jmp 0x22e4c
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x189e0
cmpl $0x4, 0x98(%rax)
jne 0x22e82
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x189e0
movsd 0x9e71b(%rip), %xmm0    # 0xc1598
movsd %xmm0, 0x10(%rax)
movq -0x618(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x790(%rbp)
addq $0x48, %rdi
callq 0x189e0
movq -0x790(%rbp), %rdi
movq %rax, %rsi
callq 0x189a0
jmp 0x22eae
jmp 0x23b6b
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x7, %esi
callq 0x18520
movb %al, -0x791(%rbp)
jmp 0x22ed0
movb -0x791(%rbp), %al
testb $0x1, %al
jne 0x22edf
jmp 0x230c5
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x388(%rbp), %rdi
movl $0x7, %edx
movl $0x3, %ecx
callq 0x1b4d0
jmp 0x22f02
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x18b10
movq %rax, -0x7a0(%rbp)
jmp 0x22f1b
movq -0x7a0(%rbp), %rax
movups 0x28(%rax), %xmm0
movups %xmm0, -0x360(%rbp)
callq 0x38230
movq %rax, -0x7a8(%rbp)
jmp 0x22f3b
movq -0x7a8(%rbp), %rdi
leaq -0x360(%rbp), %rsi
movl $0x1, %edx
callq 0x382c0
movsd %xmm0, -0x7b0(%rbp)
jmp 0x22f5d
movsd -0x7b0(%rbp), %xmm0
movsd %xmm0, -0x378(%rbp)
callq 0x855e0
movq %rax, -0x7b8(%rbp)
jmp 0x22f7b
callq 0xa2e0
movq %rax, %rcx
movabsq $0x2aaaaaaaaaaaaaab, %rdx # imm = 0x2AAAAAAAAAAAAAAB
movq %rcx, %rax
imulq %rdx
movq -0x618(%rbp), %rax
movl %edx, %esi
shrq $0x3f, %rdx
addl %edx, %esi
addl %esi, %esi
movl %esi, %edx
leal (%rdx,%rdx,2), %edx
subl %edx, %ecx
addl $0x5, %ecx
movl %ecx, -0x38c(%rbp)
leaq -0x360(%rbp), %rcx
movq %rcx, -0x7c8(%rbp)
movq 0x18(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x7c0(%rbp)
jmp 0x22fd8
movq -0x7c0(%rbp), %rsi
movq -0x7c8(%rbp), %rdi
callq 0x1d6d0
movsd %xmm0, -0x7d0(%rbp)
jmp 0x22ff5
movq -0x7b8(%rbp), %rdi
movsd -0x7d0(%rbp), %xmm0
movsd %xmm0, -0x398(%rbp)
leaq -0x38c(%rbp), %rsi
leaq -0x398(%rbp), %rdx
callq 0x23dd0
movsd %xmm0, -0x7d8(%rbp)
jmp 0x23029
movsd -0x7d8(%rbp), %xmm0
leaq -0x340(%rbp), %rax
movq %rax, -0x7e8(%rbp)
movsd %xmm0, -0x340(%rbp)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, -0x3a0(%rbp)
callq 0x855e0
movq %rax, -0x7e0(%rbp)
jmp 0x23066
movq -0x7e0(%rbp), %rdi
callq 0x23d60
movq %rax, -0x7f0(%rbp)
jmp 0x2307b
movq -0x7f0(%rbp), %rdx
movq -0x7e8(%rbp), %rsi
leaq -0x3a0(%rbp), %rdi
callq 0x12a20
movq %rax, -0x7f8(%rbp)
jmp 0x2309e
movq -0x7f8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x340(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x189a0
jmp 0x230c3
jmp 0x230c5
testb $0x1, -0x199(%rbp)
je 0x23b69
movq $0x0, -0x3b8(%rbp)
movq $0x0, -0x3c0(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
leaq -0x3c0(%rbp), %rdx
callq 0x11a10
jmp 0x23104
movq -0x618(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x438(%rbp), %rdi
callq 0x23e70
jmp 0x2311d
movl $0xf4240, -0x43c(%rbp)  # imm = 0xF4240
movl $0xf4240, -0x440(%rbp)  # imm = 0xF4240
movq $0x0, -0x460(%rbp)
movq $0x0, -0x468(%rbp)
leaq -0x458(%rbp), %rdi
leaq -0x460(%rbp), %rsi
leaq -0x468(%rbp), %rdx
callq 0x11a10
jmp 0x23163
movsd 0x9ea3d(%rip), %xmm0    # 0xc1ba8
movsd %xmm0, -0x470(%rbp)
movsd 0x9ea35(%rip), %xmm0    # 0xc1bb0
ucomisd -0x470(%rbp), %xmm0
jb 0x23b09
callq 0x8b3f0
movq %rax, -0x800(%rbp)
jmp 0x23197
movq -0x800(%rbp), %rdi
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x470(%rbp), %rdx
callq 0x8c210
movb %al, -0x801(%rbp)
jmp 0x231bd
movb -0x801(%rbp), %al
testb $0x1, %al
jne 0x2332c
jmp 0x231cd
callq 0x4ff20
movq %rax, -0x810(%rbp)
jmp 0x231db
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x820(%rbp)
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x818(%rbp)
jmp 0x231ff
movq -0x820(%rbp), %rsi
movq -0x810(%rbp), %rdi
movq -0x818(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x490(%rbp)
movl $0x1, -0x494(%rbp)
xorl %eax, %eax
movl %eax, %r8d
leaq -0x490(%rbp), %rdx
leaq -0x494(%rbp), %rcx
callq 0x510a0
movsd %xmm0, -0x828(%rbp)
jmp 0x23258
movq -0x618(%rbp), %rax
movsd -0x828(%rbp), %xmm0
movsd %xmm0, -0x488(%rbp)
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x830(%rbp)
jmp 0x23281
movq -0x830(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x4a0(%rbp)
leaq -0x488(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
callq 0x112c0
movsd %xmm1, -0x840(%rbp)
movsd %xmm0, -0x838(%rbp)
jmp 0x232c5
movsd -0x840(%rbp), %xmm0
movsd -0x838(%rbp), %xmm1
movsd %xmm1, -0x480(%rbp)
movsd %xmm0, -0x478(%rbp)
leaq -0x438(%rbp), %rdi
leaq -0x480(%rbp), %rsi
xorl %edx, %edx
movsd 0x9dd13(%rip), %xmm0    # 0xc1010
callq 0x142a0
jmp 0x23304
jmp 0x23506
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
leaq -0x438(%rbp), %rdi
callq 0x23f80
jmp 0x23b80
callq 0x8b3f0
movq %rax, -0x848(%rbp)
jmp 0x2333a
movq -0x848(%rbp), %rdi
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
movsd -0x470(%rbp), %xmm0
callq 0x8ba70
movsd %xmm1, -0x858(%rbp)
movsd %xmm0, -0x850(%rbp)
jmp 0x2336b
movsd -0x858(%rbp), %xmm0
movsd -0x850(%rbp), %xmm1
movsd %xmm1, -0x4c8(%rbp)
movsd %xmm0, -0x4c0(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x104e0
movsd %xmm0, -0x860(%rbp)
jmp 0x233a1
movsd -0x860(%rbp), %xmm0
movsd %xmm0, -0x4b8(%rbp)
callq 0x4ff20
movq %rax, -0x868(%rbp)
jmp 0x233bf
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x878(%rbp)
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x870(%rbp)
jmp 0x233e3
movq -0x878(%rbp), %rsi
movq -0x868(%rbp), %rdi
movq -0x870(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x4d8(%rbp)
movl $0x1, -0x4dc(%rbp)
xorl %eax, %eax
movl %eax, %r8d
leaq -0x4d8(%rbp), %rdx
leaq -0x4dc(%rbp), %rcx
callq 0x510a0
movsd %xmm0, -0x880(%rbp)
jmp 0x2343c
movsd -0x880(%rbp), %xmm0
movsd %xmm0, -0x4d0(%rbp)
leaq -0x4b8(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x12a90
movq %rax, -0x888(%rbp)
jmp 0x23468
movq -0x618(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x890(%rbp)
jmp 0x23481
movq -0x888(%rbp), %rdi
movq -0x890(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x4e8(%rbp)
leaq -0x4e8(%rbp), %rsi
callq 0x112c0
movsd %xmm1, -0x8a0(%rbp)
movsd %xmm0, -0x898(%rbp)
jmp 0x234c5
movsd -0x8a0(%rbp), %xmm0
movsd -0x898(%rbp), %xmm1
movsd %xmm1, -0x4b0(%rbp)
movsd %xmm0, -0x4a8(%rbp)
leaq -0x438(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
xorl %edx, %edx
movsd 0x9db13(%rip), %xmm0    # 0xc1010
callq 0x142a0
jmp 0x23504
jmp 0x23506
movl $0x2, -0x4ec(%rbp)
cmpl $0xb, -0x4ec(%rbp)
jg 0x236ec
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x4ec(%rbp), %rsi
callq 0x12520
movq %rax, -0x8a8(%rbp)
jmp 0x2353d
movq -0x8a8(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x8b0(%rbp)
jmp 0x23556
movq -0x618(%rbp), %rax
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x8b8(%rbp)
jmp 0x23573
movq -0x8b8(%rbp), %rsi
movq -0x8b0(%rbp), %rdi
callq 0x110a0
movsd %xmm1, -0x8c8(%rbp)
movsd %xmm0, -0x8c0(%rbp)
jmp 0x23598
movsd -0x8c8(%rbp), %xmm0
movsd -0x8c0(%rbp), %xmm1
movsd %xmm1, -0x500(%rbp)
movsd %xmm0, -0x4f8(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x10520
movsd %xmm0, -0x8d0(%rbp)
jmp 0x235ce
movsd -0x8d0(%rbp), %xmm0
subsd -0x470(%rbp), %xmm0
movaps 0x9da7b(%rip), %xmm1    # 0xc1060
pand %xmm1, %xmm0
movsd 0x9e5bf(%rip), %xmm1    # 0xc1bb0
ucomisd %xmm1, %xmm0
jbe 0x235fc
jmp 0x236d8
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x4ec(%rbp), %rsi
callq 0x23eb0
movq %rax, -0x8d8(%rbp)
jmp 0x2361c
movq -0x8d8(%rbp), %rdi
callq 0x23f20
movb %al, -0x8d9(%rbp)
jmp 0x23630
movb -0x8d9(%rbp), %al
testb $0x1, %al
jne 0x23641
jmp 0x2363c
jmp 0x236d8
movq -0x618(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0x4ec(%rbp), %esi
callq 0x49be0
movq %rax, -0x8e8(%rbp)
jmp 0x23660
movq -0x8e8(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rsi
leaq -0x438(%rbp), %rdi
movl $0x1, %edx
callq 0x49c90
jmp 0x23688
movl -0x43c(%rbp), %eax
movq -0x508(%rbp), %rcx
cmpl 0x74(%rcx), %eax
jle 0x236d6
movl -0x4ec(%rbp), %eax
movl %eax, -0x444(%rbp)
movq -0x508(%rbp), %rax
movl 0x74(%rax), %eax
movl %eax, -0x43c(%rbp)
movq -0x508(%rbp), %rax
movq 0x78(%rax), %rcx
movq %rcx, -0x458(%rbp)
movq 0x80(%rax), %rax
movq %rax, -0x450(%rbp)
jmp 0x236d8
movl -0x4ec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4ec(%rbp)
jmp 0x23510
movl $0x1, -0x50c(%rbp)
cmpl $0xb, -0x50c(%rbp)
jg 0x23860
movq -0x618(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x50c(%rbp), %rsi
callq 0x1d480
movq %rax, -0x8f0(%rbp)
jmp 0x23723
movq -0x8f0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x8f8(%rbp)
jmp 0x2373c
movq -0x618(%rbp), %rax
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x900(%rbp)
jmp 0x23759
movq -0x900(%rbp), %rsi
movq -0x8f8(%rbp), %rdi
callq 0x110a0
movsd %xmm1, -0x910(%rbp)
movsd %xmm0, -0x908(%rbp)
jmp 0x2377e
movsd -0x910(%rbp), %xmm0
movsd -0x908(%rbp), %xmm1
movsd %xmm1, -0x520(%rbp)
movsd %xmm0, -0x518(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x10520
movsd %xmm0, -0x918(%rbp)
jmp 0x237b4
movsd -0x918(%rbp), %xmm0
subsd -0x470(%rbp), %xmm0
movaps 0x9d895(%rip), %xmm1    # 0xc1060
pand %xmm1, %xmm0
movsd 0x9e3d9(%rip), %xmm1    # 0xc1bb0
ucomisd %xmm1, %xmm0
jbe 0x237df
jmp 0x2384c
movq -0x618(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0x50c(%rbp), %esi
negl %esi
callq 0x49be0
movq %rax, -0x920(%rbp)
jmp 0x23800
movq -0x920(%rbp), %rax
movq %rax, -0x528(%rbp)
movq -0x528(%rbp), %rsi
leaq -0x438(%rbp), %rdi
movl $0x1, %edx
callq 0x49c90
jmp 0x23828
movl -0x440(%rbp), %eax
movq -0x528(%rbp), %rcx
cmpl 0x74(%rcx), %eax
jle 0x2384a
movq -0x528(%rbp), %rax
movl 0x74(%rax), %eax
movl %eax, -0x440(%rbp)
jmp 0x2384c
movl -0x50c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50c(%rbp)
jmp 0x236f6
movl -0x440(%rbp), %eax
cmpl -0x43c(%rbp), %eax
jle 0x23aea
movq -0x618(%rbp), %rax
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x928(%rbp)
jmp 0x2388f
movq -0x618(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x930(%rbp)
jmp 0x238a8
movq -0x928(%rbp), %rsi
movq -0x930(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x548(%rbp)
leaq -0x540(%rbp), %rdi
leaq -0x548(%rbp), %rdx
callq 0x1fde0
jmp 0x238e3
callq 0x855e0
movq %rax, -0x938(%rbp)
jmp 0x238f1
movq -0x938(%rbp), %rdi
callq 0x1eed0
movq %rax, -0x940(%rbp)
jmp 0x23906
callq 0x855e0
movq %rax, -0x948(%rbp)
jmp 0x23914
movq -0x948(%rbp), %rdi
callq 0x1efa0
movq %rax, -0x950(%rbp)
jmp 0x23929
movq -0x950(%rbp), %rdx
movq -0x940(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0x1efc0
jmp 0x23945
leaq -0x560(%rbp), %rdi
leaq -0x540(%rbp), %rsi
leaq -0x3b0(%rbp), %rdx
callq 0x47af0
jmp 0x23961
leaq -0x3b0(%rbp), %rdi
callq 0x17700
movq %rax, -0x958(%rbp)
jmp 0x23976
movq -0x958(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x968(%rbp)
callq 0x855e0
movq %rax, -0x960(%rbp)
jmp 0x23997
movq -0x960(%rbp), %rdi
callq 0x1fe50
movq %rax, -0x970(%rbp)
jmp 0x239ac
movq -0x970(%rbp), %rdi
callq 0x23f40
movq %rax, -0x978(%rbp)
jmp 0x239c1
movsd -0x968(%rbp), %xmm1
movq -0x978(%rbp), %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
ja 0x23a53
leaq -0x3b0(%rbp), %rdi
callq 0x17700
movq %rax, -0x980(%rbp)
jmp 0x239ef
movq -0x980(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x990(%rbp)
callq 0x855e0
movq %rax, -0x988(%rbp)
jmp 0x23a10
movq -0x988(%rbp), %rdi
callq 0x1fe50
movq %rax, -0x998(%rbp)
jmp 0x23a25
movq -0x998(%rbp), %rdi
callq 0x23f60
movq %rax, -0x9a0(%rbp)
jmp 0x23a3a
movsd -0x990(%rbp), %xmm0
movq -0x9a0(%rbp), %rax
ucomisd (%rax), %xmm0
jbe 0x23ae8
movq -0x618(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x608(%rbp), %rdi
movl $0x7, %edx
movl $0x4, %ecx
callq 0x1b4d0
jmp 0x23a76
movq -0x618(%rbp), %rax
movups -0x458(%rbp), %xmm0
movups %xmm0, -0x5e0(%rbp)
movabsq $0x3ff000064a9cdc44, %rcx # imm = 0x3FF000064A9CDC44
movq %rcx, -0x5f8(%rbp)
movq 0x20(%rax), %rdi
callq 0x11170
movq %rax, -0x9a8(%rbp)
jmp 0x23aae
movq -0x618(%rbp), %rdi
movq -0x9a8(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x470(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x5e8(%rbp)
addq $0x48, %rdi
leaq -0x608(%rbp), %rsi
callq 0x189a0
jmp 0x23ae6
jmp 0x23ae8
jmp 0x23aea
jmp 0x23aec
movsd 0x9dc1c(%rip), %xmm0    # 0xc1710
addsd -0x470(%rbp), %xmm0
movsd %xmm0, -0x470(%rbp)
jmp 0x23173
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x18580
testb $0x1, %al
jne 0x23b5d
movq -0x618(%rbp), %rdi
addq $0x48, %rdi
callq 0x185a0
jmp 0x23b2f
movq -0x618(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x9b0(%rbp)
addq $0x48, %rdi
callq 0x189e0
movq -0x9b0(%rbp), %rdi
movq %rax, %rsi
callq 0x189a0
jmp 0x23b5b
jmp 0x23b5d
leaq -0x438(%rbp), %rdi
callq 0x23f80
jmp 0x23b6b
leaq -0x198(%rbp), %rdi
callq 0x12500
addq $0x9b0, %rsp            # imm = 0x9B0
popq %rbp
retq
leaq -0x198(%rbp), %rdi
callq 0x12500
movq -0x1a8(%rbp), %rdi
callq 0xaa60
nopl (%rax,%rax)