// File: /workspace/github_cpp_makefile_star2_O3/wrighteagle2d[P]wrighteaglebase/Debug/../src/VisualSystem.cpp
// Function: VisualSystem::DoInfoGatherForFastForward()
void VisualSystem::DoInfoGatherForFastForward() {
  const Strategy &strategy = mpAgent->GetStrategy();

  RaiseBall();
  switch (mpAgent->GetFormation()
              .GetTeammateRoleType(mpSelfState->GetUnum())
              .mLineType) {
  case LT_Defender:
    for (Unum i = 1; i <= TEAMSIZE; ++i) {
      if (i != mpSelfState->GetUnum() &&
          i != mpWorldState->GetTeammateGoalieUnum()) {
        switch (mpAgent->GetFormation().GetTeammateRoleType(i).mLineType) {
        case LT_Defender:
          RaisePlayer(i, 8.0);
          break;
        case LT_Midfielder:
          RaisePlayer(i, 5.0);
          break;
        case LT_Forward:
          RaisePlayer(i, 5.0);
          break;
        default:
          PRINT_ERROR("line type error");
          break;
        }
      }
    }
    break;
  case LT_Midfielder:
    for (Unum i = 1; i <= TEAMSIZE; ++i) {
      if (i != mpSelfState->GetUnum() &&
          i != mpWorldState->GetTeammateGoalieUnum()) {
        switch (mpAgent->GetFormation().GetTeammateRoleType(i).mLineType) {
        case LT_Defender:
          RaisePlayer(i, 100.0);
          break;
        case LT_Midfielder:
          RaisePlayer(i, 5.0);
          break;
        case LT_Forward:
          RaisePlayer(i, 2.0);
          break;
        default:
          PRINT_ERROR("line type error");
          break;
        }
      }
      if (mpWorldState->GetOpponent(i).GetPosConf() > FLOAT_EPS) {
        if (mpWorldState->GetOpponent(i).GetPos().X() > mPreBallPos.X() - 8.0)
          RaisePlayer(-i, 4.0);
        else
          RaisePlayer(-i, 100.0);
      }
    }
    if (mpWorldState->GetOpponentGoalieUnum() &&
        mpWorldState->GetOpponent(mpWorldState->GetOpponentGoalieUnum())
                .GetPosConf() > FLOAT_EPS) {
      RaisePlayer(-mpWorldState->GetOpponentGoalieUnum(), 20.0);
    }
    break;
  case LT_Forward:
    for (Unum i = 1; i <= TEAMSIZE; ++i) {
      if (i != mpSelfState->GetUnum() &&
          i != mpWorldState->GetTeammateGoalieUnum()) {
        switch (mpAgent->GetFormation().GetTeammateRoleType(i).mLineType) {
        case LT_Defender:
          RaisePlayer(i, 100.0);
          break;
        case LT_Midfielder:
          RaisePlayer(i, 5.0);
          break;
        case LT_Forward:
          RaisePlayer(i, 3.0);
          break;
        default:
          PRINT_ERROR("line type error");
          break;
        }
      }
      if (mpWorldState->GetOpponent(i).GetPosConf() > FLOAT_EPS) {
        double opp_x = mpWorldState->GetOpponent(i).GetPos().X();
        if (!strategy.IsMyControl() &&
            fabs(opp_x -
                 mpInfoState->GetPositionInfo().GetTeammateOffsideLine()) <
                1.0) {
          RaisePlayer(-i, 2.6);
        } else if (!strategy.IsMyControl() &&
                   fabs(opp_x - mpInfoState->GetPositionInfo()
                                    .GetTeammateOffsideLine()) < 3.6) {
          RaisePlayer(-i, 3);
        } else if (opp_x > mPreBallPos.X() - 8.0) {
          if (opp_x > mPreBallPos.X() + 36.0) {
            RaisePlayer(-i, 6);
          } else {
            RaisePlayer(-i, 4);
          }
        } else {
          RaisePlayer(-i, 100);
        }
      }
    }
    if (mpWorldState->GetOpponentGoalieUnum() &&
        mpWorldState->GetOpponent(mpWorldState->GetOpponentGoalieUnum())
                .GetPosConf() > FLOAT_EPS) {
      RaisePlayer(-mpWorldState->GetOpponentGoalieUnum(), 15.0);
    }
    break;
  default:
    PRINT_ERROR("line type error");
    break;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
leaq 0x38(%rdi), %rsi
callq 0xf4b0
movq %rax, -0x38(%rbp)
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x57908
movq 0x8(%rbx), %rdi
callq 0x13432
movq 0x20(%rbx), %rcx
movslq 0x11c(%rcx), %rcx
movq 0x10(%rax), %rax
movslq 0x350(%rax,%rcx,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x1, %eax
je 0x587dd
cmpl $0x2, %eax
je 0x585f0
cmpl $0x3, %eax
jne 0x5890e
movl $0x1, %r15d
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movl $0x436, %r14d           # imm = 0x436
xorl %r13d, %r13d
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r15
je 0x58485
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r15
je 0x58485
movq 0x8(%rbx), %rdi
callq 0x13432
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x583d3
cmpl $0x2, %eax
je 0x583c3
cmpl $0x1, %eax
jne 0x583eb
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x1136f(%rip), %xmm0    # 0x69730
jmp 0x583e1
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x115f7(%rip), %xmm0    # 0x699c8
jmp 0x583e1
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x1183f(%rip), %xmm0    # 0x69c20
callq 0x576ea
jmp 0x58485
movl $0x17, %edx
movq 0x2bbf9(%rip), %rdi     # 0x83ff0
leaq 0x15232(%rip), %rsi     # 0x6d630
callq 0x9560
movl $0x1, %edx
movq 0x2bbe1(%rip), %rdi     # 0x83ff0
leaq 0x14d7c(%rip), %rsi     # 0x6d192
callq 0x9560
movq 0x2bbce(%rip), %rdi     # 0x83ff0
movl $0x1a4, %esi            # imm = 0x1A4
callq 0x9880
movq %rax, -0x30(%rbp)
movl $0x3, %edx
movq %rax, %rdi
leaq 0x13018(%rip), %rsi     # 0x6b457
callq 0x9560
movl $0xf, %edx
movq -0x30(%rbp), %rdi
leaq 0x12276(%rip), %rsi     # 0x6a6ca
callq 0x9560
movq -0x30(%rbp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq -0x30(%rbp), %rdi
callq 0x9070
movq %rax, %rdi
callq 0x9330
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r14,4), %xmm0
ucomisd 0x10ba8(%rip), %xmm0    # 0x69040
jbe 0x58598
movsd (%rax,%r14,4), %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x38(%rbp), %rdi
callq 0x4b51a
testb %al, %al
jne 0x584f5
movq 0x28(%rbx), %rdi
callq 0x2a4b4
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0x10b3c(%rip), %xmm0    # 0x69010
movsd 0x10b7c(%rip), %xmm1    # 0x69058
ucomisd %xmm0, %xmm1
jbe 0x584f5
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x11e00(%rip), %xmm0    # 0x6a2f0
jmp 0x58593
movq -0x38(%rbp), %rdi
callq 0x4b51a
testb %al, %al
jne 0x5853e
movq 0x28(%rbx), %rdi
callq 0x2a4b4
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0x10af0(%rip), %xmm0    # 0x69010
movsd 0x150e8(%rip), %xmm1    # 0x6d610
ucomisd %xmm0, %xmm1
jbe 0x5853e
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x116e4(%rip), %xmm0    # 0x69c20
jmp 0x58593
movsd 0x650(%rbx), %xmm0
movapd %xmm0, %xmm1
addsd 0x150c6(%rip), %xmm1    # 0x6d618
movsd -0x30(%rbp), %xmm2
ucomisd %xmm1, %xmm2
jbe 0x5857b
addsd 0x11773(%rip), %xmm0    # 0x69cd8
movq %rbx, %rdi
movl %r12d, %esi
ucomisd %xmm0, %xmm2
jbe 0x5858b
movsd 0x13917(%rip), %xmm0    # 0x6be90
jmp 0x58593
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x111a7(%rip), %xmm0    # 0x69730
jmp 0x58593
movsd 0x11d85(%rip), %xmm0    # 0x6a318
callq 0x576ea
incq %r15
decl %r12d
addq $0x5e, %r14
incq %r13
cmpq $0xb, %r13
jne 0x58361
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x588ff
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0x10a65(%rip), %xmm0    # 0x69040
jbe 0x588ff
negl %esi
movsd 0x1116d(%rip), %xmm0    # 0x69758
jmp 0x587c7
movl $0x1, %r14d
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movl $0x436, %r12d           # imm = 0x436
xorl %r13d, %r13d
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r14
je 0x58729
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x58729
movq 0x8(%rbx), %rdi
callq 0x13432
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x58677
cmpl $0x2, %eax
je 0x58667
cmpl $0x1, %eax
jne 0x5868f
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x110cb(%rip), %xmm0    # 0x69730
jmp 0x58685
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x11353(%rip), %xmm0    # 0x699c8
jmp 0x58685
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x110fb(%rip), %xmm0    # 0x69780
callq 0x576ea
jmp 0x58729
movl $0x17, %edx
movq 0x2b955(%rip), %rdi     # 0x83ff0
leaq 0x14f8e(%rip), %rsi     # 0x6d630
callq 0x9560
movl $0x1, %edx
movq 0x2b93d(%rip), %rdi     # 0x83ff0
leaq 0x14ad8(%rip), %rsi     # 0x6d192
callq 0x9560
movq 0x2b92a(%rip), %rdi     # 0x83ff0
movl $0x184, %esi            # imm = 0x184
callq 0x9880
movq %rax, -0x30(%rbp)
movl $0x3, %edx
movq %rax, %rdi
leaq 0x12d74(%rip), %rsi     # 0x6b457
callq 0x9560
movl $0xf, %edx
movq -0x30(%rbp), %rdi
leaq 0x11fd2(%rip), %rsi     # 0x6a6ca
callq 0x9560
movq -0x30(%rbp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq -0x30(%rbp), %rdi
callq 0x9070
movq %rax, %rdi
callq 0x9330
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r12,4), %xmm0
ucomisd 0x10904(%rip), %xmm0    # 0x69040
jbe 0x58774
movsd (%rax,%r12,4), %xmm0
movsd 0x650(%rbx), %xmm1
addsd 0x14ec4(%rip), %xmm1    # 0x6d618
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x14e5c(%rip), %rcx     # 0x6d5c0
movsd (%rcx,%rax,8), %xmm0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x576ea
incq %r14
decl %r15d
addq $0x5e, %r12
incq %r13
cmpq $0xb, %r13
jne 0x58605
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x588ff
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0x10889(%rip), %xmm0    # 0x69040
jbe 0x588ff
negl %esi
movsd 0x127d1(%rip), %xmm0    # 0x6af98
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x576ea
movl $0x1, %r14d
xorl %r13d, %r13d
movq 0x2b803(%rip), %r15     # 0x83ff0
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r14
je 0x588ef
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x588ef
movq 0x8(%rbx), %rdi
callq 0x13432
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x5884f
cmpl $0x2, %eax
je 0x5884f
cmpl $0x1, %eax
jne 0x58867
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x14dbb(%rip), %xmm0    # 0x6d608
jmp 0x5885d
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x1116b(%rip), %xmm0    # 0x699c8
callq 0x576ea
jmp 0x588ef
movl $0x17, %edx
movq %r15, %rdi
leaq 0x14dba(%rip), %rsi     # 0x6d630
callq 0x9560
movl $0x1, %edx
movq %r15, %rdi
leaq 0x14908(%rip), %rsi     # 0x6d192
callq 0x9560
movq %r15, %rdi
movl $0x16f, %esi            # imm = 0x16F
callq 0x9880
movq %rax, %r12
movl $0x3, %edx
movq %rax, %rdi
leaq 0x12ba9(%rip), %rsi     # 0x6b457
callq 0x9560
movl $0xf, %edx
movq %r12, %rdi
leaq 0x11e08(%rip), %rsi     # 0x6a6ca
callq 0x9560
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %r12, %rdi
callq 0x9070
movq %rax, %rdi
callq 0x9330
incq %r14
incq %r13
cmpq $0xb, %r13
jne 0x587ed
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2b6db(%rip), %rbx     # 0x83ff0
leaq 0x14d14(%rip), %rsi     # 0x6d630
movl $0x17, %edx
movq %rbx, %rdi
callq 0x9560
leaq 0x14862(%rip), %rsi     # 0x6d192
movl $0x1, %edx
movq %rbx, %rdi
callq 0x9560
movq %rbx, %rdi
movl $0x1c5, %esi            # imm = 0x1C5
callq 0x9880
movq %rax, %rbx
leaq 0x12b03(%rip), %rsi     # 0x6b457
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
leaq 0x11d62(%rip), %rsi     # 0x6a6ca
movl $0xf, %edx
movq %rbx, %rdi
callq 0x9560
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %rbx, %rdi
callq 0x9070
movq %rax, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9330