// File: /workspace/github_cpp_makefile_star2_O2/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
callq 0xdd50
movq %rax, -0x38(%rbp)
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x4a2ce
movq 0x8(%rbx), %rdi
callq 0x10dfe
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 0x4af69
cmpl $0x2, %eax
je 0x4add3
cmpl $0x3, %eax
jne 0x4b058
pushq $0x1
popq %r15
pushq $-0x1
popq %r12
pushq $-0x2c
popq %r13
movl $0x436, %r14d           # imm = 0x436
testq %r13, %r13
je 0x4b0bb
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r15
je 0x4acad
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r15
je 0x4acad
movq 0x8(%rbx), %rdi
callq 0x10dfe
movq 0x10(%rax), %rax
movslq 0x380(%rax,%r13), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x4ac43
cmpl $0x2, %eax
je 0x4ac33
cmpl $0x1, %eax
jne 0x4ac58
movq %rbx, %rdi
movl %r15d, %esi
movsd 0xcad7(%rip), %xmm0     # 0x57708
jmp 0x4ac51
movq %rbx, %rdi
movl %r15d, %esi
movsd 0xcd57(%rip), %xmm0     # 0x57998
jmp 0x4ac51
movq %rbx, %rdi
movl %r15d, %esi
movsd 0xcf9f(%rip), %xmm0     # 0x57bf0
callq 0x4a0b4
jmp 0x4acad
movq 0x2c391(%rip), %rdi     # 0x76ff0
leaq 0x109aa(%rip), %rsi     # 0x5b610
callq 0x94b0
movq %rax, %rdi
leaq 0x104fd(%rip), %rsi     # 0x5b172
callq 0x94b0
movq %rax, %rdi
movl $0x1a4, %esi            # imm = 0x1A4
callq 0x9890
movq %rax, %rdi
leaq 0xe78e(%rip), %rsi      # 0x5941f
callq 0x94b0
movq %rax, %rdi
leaq 0xd9fa(%rip), %rsi      # 0x5869a
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r14,4), %xmm0
ucomisd 0xc380(%rip), %xmm0     # 0x57040
jbe 0x4adc0
movsd (%rax,%r14,4), %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x38(%rbp), %rdi
callq 0x3fb02
testb %al, %al
jne 0x4ad1d
movq 0x28(%rbx), %rdi
callq 0x244e8
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0xc314(%rip), %xmm0     # 0x57010
movsd 0xc344(%rip), %xmm1     # 0x57048
ucomisd %xmm0, %xmm1
jbe 0x4ad1d
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xd598(%rip), %xmm0     # 0x582b0
jmp 0x4adbb
movq -0x38(%rbp), %rdi
callq 0x3fb02
testb %al, %al
jne 0x4ad66
movq 0x28(%rbx), %rdi
callq 0x244e8
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0xc2c8(%rip), %xmm0     # 0x57010
movsd 0x108a0(%rip), %xmm1    # 0x5b5f0
ucomisd %xmm0, %xmm1
jbe 0x4ad66
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xce8c(%rip), %xmm0     # 0x57bf0
jmp 0x4adbb
movsd 0x650(%rbx), %xmm0
movapd %xmm0, %xmm1
addsd 0x1087e(%rip), %xmm1    # 0x5b5f8
movsd -0x30(%rbp), %xmm2
ucomisd %xmm1, %xmm2
jbe 0x4ada3
addsd 0xcf13(%rip), %xmm0     # 0x57ca0
movq %rbx, %rdi
movl %r12d, %esi
ucomisd %xmm0, %xmm2
jbe 0x4adb3
movsd 0xf0cf(%rip), %xmm0     # 0x59e70
jmp 0x4adbb
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xc957(%rip), %xmm0     # 0x57708
jmp 0x4adbb
movsd 0xd51d(%rip), %xmm0     # 0x582d8
callq 0x4a0b4
incq %r15
decl %r12d
addq $0x4, %r13
addq $0x5e, %r14
jmp 0x4abc8
pushq $0x1
popq %r14
pushq $-0x1
popq %r15
pushq $-0x2c
popq %r13
movl $0x436, %r12d           # imm = 0x436
testq %r13, %r13
je 0x4af28
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r14
je 0x4aeca
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x4aeca
movq 0x8(%rbx), %rdi
callq 0x10dfe
movq 0x10(%rax), %rax
movslq 0x380(%rax,%r13), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x4ae60
cmpl $0x2, %eax
je 0x4ae50
cmpl $0x1, %eax
jne 0x4ae75
movq %rbx, %rdi
movl %r14d, %esi
movsd 0xc8ba(%rip), %xmm0     # 0x57708
jmp 0x4ae6e
movq %rbx, %rdi
movl %r14d, %esi
movsd 0xcb3a(%rip), %xmm0     # 0x57998
jmp 0x4ae6e
movq %rbx, %rdi
movl %r14d, %esi
movsd 0xc8ea(%rip), %xmm0     # 0x57758
callq 0x4a0b4
jmp 0x4aeca
movq 0x2c174(%rip), %rdi     # 0x76ff0
leaq 0x1078d(%rip), %rsi     # 0x5b610
callq 0x94b0
movq %rax, %rdi
leaq 0x102e0(%rip), %rsi     # 0x5b172
callq 0x94b0
movq %rax, %rdi
movl $0x184, %esi            # imm = 0x184
callq 0x9890
movq %rax, %rdi
leaq 0xe571(%rip), %rsi      # 0x5941f
callq 0x94b0
movq %rax, %rdi
leaq 0xd7dd(%rip), %rsi      # 0x5869a
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r12,4), %xmm0
ucomisd 0xc163(%rip), %xmm0     # 0x57040
jbe 0x4af15
movsd (%rax,%r12,4), %xmm0
movsd 0x650(%rbx), %xmm1
addsd 0x10703(%rip), %xmm1    # 0x5b5f8
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x1069b(%rip), %rcx     # 0x5b5a0
movsd (%rcx,%rax,8), %xmm0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x4a0b4
incq %r14
decl %r15d
addq $0x4, %r13
addq $0x5e, %r12
jmp 0x4ade5
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x4b105
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0xc0ec(%rip), %xmm0     # 0x57040
jbe 0x4b105
negl %esi
movsd 0xdff4(%rip), %xmm0     # 0x58f58
jmp 0x4b0ef
pushq $0x1
popq %r14
pushq $-0x2c
popq %r13
leaq 0xe4a7(%rip), %r15      # 0x5941f
leaq 0xd71b(%rip), %r12      # 0x5869a
testq %r13, %r13
je 0x4b105
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r14
je 0x4b04c
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x4b04c
movq 0x8(%rbx), %rdi
callq 0x10dfe
movq 0x10(%rax), %rax
movslq 0x380(%rax,%r13), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x4afea
cmpl $0x2, %eax
je 0x4afea
cmpl $0x1, %eax
jne 0x4afff
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x10600(%rip), %xmm0    # 0x5b5e8
jmp 0x4aff8
movq %rbx, %rdi
movl %r14d, %esi
movsd 0xc9a0(%rip), %xmm0     # 0x57998
callq 0x4a0b4
jmp 0x4b04c
movq 0x2bfea(%rip), %rdi     # 0x76ff0
leaq 0x10603(%rip), %rsi     # 0x5b610
callq 0x94b0
movq %rax, %rdi
leaq 0x10156(%rip), %rsi     # 0x5b172
callq 0x94b0
movq %rax, %rdi
movl $0x16f, %esi            # imm = 0x16F
callq 0x9890
movq %rax, %rdi
movq %r15, %rsi
callq 0x94b0
movq %rax, %rdi
movq %r12, %rsi
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
incq %r14
addq $0x4, %r13
jmp 0x4af7f
movq 0x2bf91(%rip), %rdi     # 0x76ff0
leaq 0x105aa(%rip), %rsi     # 0x5b610
callq 0x94b0
leaq 0x10100(%rip), %rsi     # 0x5b172
movq %rax, %rdi
callq 0x94b0
movq %rax, %rdi
movl $0x1c5, %esi            # imm = 0x1C5
callq 0x9890
leaq 0xe391(%rip), %rsi      # 0x5941f
movq %rax, %rdi
callq 0x94b0
leaq 0xd5fd(%rip), %rsi      # 0x5869a
movq %rax, %rdi
callq 0x94b0
movq %rax, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x99e8
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x4b105
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0xbf5d(%rip), %xmm0     # 0x57040
jbe 0x4b105
negl %esi
movsd 0xc661(%rip), %xmm0     # 0x57750
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4a0b4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq