// File: 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
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq 0x8(%rax), %rdi
callq 0x14050
movq -0x40(%rbp), %rdi
movq %rax, -0x10(%rbp)
xorps %xmm0, %xmm0
callq 0xa6520
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0x38(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movq -0x38(%rbp), %rdi
movl %eax, %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x30(%rbp)
subl $0x1, %eax
je 0xa7338
jmp 0xa7319
movl -0x30(%rbp), %eax
subl $0x2, %eax
je 0xa747e
jmp 0xa7327
movl -0x30(%rbp), %eax
subl $0x3, %eax
je 0xa770b
jmp 0xa7ae5
movl $0x1, -0x14(%rbp)
cmpl $0xb, -0x14(%rbp)
jg 0xa7479
movq -0x40(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, -0x44(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x44(%rbp), %eax
cmpl %ecx, %eax
je 0xa7469
movq -0x40(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, -0x48(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x48(%rbp), %eax
cmpl %ecx, %eax
je 0xa7469
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rdi
movl -0x14(%rbp), %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x4c(%rbp)
subl $0x1, %eax
je 0xa73c2
jmp 0xa73ae
movl -0x4c(%rbp), %eax
subl $0x2, %eax
je 0xa73db
jmp 0xa73b8
movl -0x4c(%rbp), %eax
subl $0x3, %eax
je 0xa73f1
jmp 0xa7407
movq -0x40(%rbp), %rdi
movl -0x14(%rbp), %esi
movsd 0x1a337(%rip), %xmm0    # 0xc1708
callq 0xa62a0
jmp 0xa7467
movq -0x40(%rbp), %rdi
movl -0x14(%rbp), %esi
movsd 0x1a586(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa7467
movq -0x40(%rbp), %rdi
movl -0x14(%rbp), %esi
movsd 0x1a570(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa7467
jmp 0xa7409
movq 0x56be0(%rip), %rdi     # 0xfdff0
leaq 0x1e291(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1de2b(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x16f, %esi            # imm = 0x16F
callq 0xaa40
movq %rax, %rdi
leaq 0x1c11d(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1b1b1(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x56b50(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa7467
jmp 0xa7469
jmp 0xa746b
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xa733f
jmp 0xa7b45
movl $0x1, -0x18(%rbp)
cmpl $0xb, -0x18(%rbp)
jg 0xa767b
movq -0x40(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x50(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x50(%rbp), %eax
cmpl %ecx, %eax
je 0xa75af
movq -0x40(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x54(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x54(%rbp), %eax
cmpl %ecx, %eax
je 0xa75af
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rdi
movl -0x18(%rbp), %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x58(%rbp)
subl $0x1, %eax
je 0xa7508
jmp 0xa74f4
movl -0x58(%rbp), %eax
subl $0x2, %eax
je 0xa7521
jmp 0xa74fe
movl -0x58(%rbp), %eax
subl $0x3, %eax
je 0xa7537
jmp 0xa754d
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x1a1c1(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa75ad
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x1a440(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa75ad
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x19f6a(%rip), %xmm0    # 0xc14b0
callq 0xa62a0
jmp 0xa75ad
jmp 0xa754f
movq 0x56a9a(%rip), %rdi     # 0xfdff0
leaq 0x1e14b(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1dce5(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x184, %esi            # imm = 0x184
callq 0xaa40
movq %rax, %rdi
leaq 0x1bfd7(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1b06b(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x56a0a(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa75ad
jmp 0xa75af
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x19a30(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
jbe 0xa766b
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, %rdi
callq 0x176f0
movq -0x40(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x176f0
movsd -0x60(%rbp), %xmm0
movsd (%rax), %xmm1
movsd 0x1a0d7(%rip), %xmm2    # 0xc1708
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa7653
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x18(%rbp), %esi
movsd 0x1ac4c(%rip), %xmm0    # 0xc2298
callq 0xa62a0
jmp 0xa7669
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x18(%rbp), %esi
movsd 0x1a074(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa766b
jmp 0xa766d
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xa7485
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x61(%rbp)
je 0xa76db
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0x70(%rbp)
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x70(%rbp), %rdi
movl %eax, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x19937(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0xa76e4
jmp 0xa7706
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x1b7b7(%rip), %xmm0    # 0xc2eb8
callq 0xa62a0
jmp 0xa7b45
movl $0x1, -0x20(%rbp)
cmpl $0xb, -0x20(%rbp)
jg 0xa7a49
movq -0x40(%rbp), %rax
movl -0x20(%rbp), %ecx
movl %ecx, -0x74(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x74(%rbp), %eax
cmpl %ecx, %eax
je 0xa783c
movq -0x40(%rbp), %rax
movl -0x20(%rbp), %ecx
movl %ecx, -0x78(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x78(%rbp), %eax
cmpl %ecx, %eax
je 0xa783c
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rdi
movl -0x20(%rbp), %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x7c(%rbp)
subl $0x1, %eax
je 0xa7795
jmp 0xa7781
movl -0x7c(%rbp), %eax
subl $0x2, %eax
je 0xa77ae
jmp 0xa778b
movl -0x7c(%rbp), %eax
subl $0x3, %eax
je 0xa77c4
jmp 0xa77da
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x19f34(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa783a
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x1a1b3(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa783a
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x1a3e5(%rip), %xmm0    # 0xc1bb8
callq 0xa62a0
jmp 0xa783a
jmp 0xa77dc
movq 0x5680d(%rip), %rdi     # 0xfdff0
leaq 0x1debe(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1da58(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x1a4, %esi            # imm = 0x1A4
callq 0xaa40
movq %rax, %rdi
leaq 0x1bd4a(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1adde(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x5677d(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa783a
jmp 0xa783c
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x197a3(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
jbe 0xa7a39
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, %rdi
callq 0x176f0
movsd (%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x88c40
testb $0x1, %al
jne 0xa790c
movq -0x40(%rbp), %rax
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movq 0x28(%rax), %rdi
callq 0x49590
movq %rax, %rdi
callq 0x26500
movsd -0x88(%rbp), %xmm1
subsd (%rax), %xmm1
movaps 0x19781(%rip), %xmm0    # 0xc1060
pand %xmm0, %xmm1
movsd 0x19725(%rip), %xmm0    # 0xc1010
ucomisd %xmm1, %xmm0
jbe 0xa790c
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x1a96e(%rip), %xmm0    # 0xc2270
callq 0xa62a0
jmp 0xa7a37
movq -0x10(%rbp), %rdi
callq 0x88c40
testb $0x1, %al
jne 0xa797b
movq -0x40(%rbp), %rax
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movq 0x28(%rax), %rdi
callq 0x49590
movq %rax, %rdi
callq 0x26500
movsd -0x90(%rbp), %xmm1
subsd (%rax), %xmm1
movaps 0x19712(%rip), %xmm0    # 0xc1060
pand %xmm0, %xmm1
movsd 0x1dd3e(%rip), %xmm0    # 0xc5698
ucomisd %xmm1, %xmm0
jbe 0xa797b
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x1a247(%rip), %xmm0    # 0xc1bb8
callq 0xa62a0
jmp 0xa7a35
movq -0x40(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x98(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x176f0
movsd -0x98(%rbp), %xmm0
movsd (%rax), %xmm1
movsd 0x19d5c(%rip), %xmm2    # 0xc1708
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa7a1d
movq -0x40(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0xa0(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x176f0
movsd -0xa0(%rbp), %xmm0
movsd 0x1a285(%rip), %xmm1    # 0xc1c68
addsd (%rax), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa7a05
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x1a6ca(%rip), %xmm0    # 0xc20c8
callq 0xa62a0
jmp 0xa7a1b
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x1a882(%rip), %xmm0    # 0xc2298
callq 0xa62a0
jmp 0xa7a33
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x19caa(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa7a35
jmp 0xa7a37
jmp 0xa7a39
jmp 0xa7a3b
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xa7712
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0xa1(%rbp)
je 0xa7ab5
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0xb0(%rbp)
movq 0x10(%rax), %rdi
callq 0x25310
movq -0xb0(%rbp), %rdi
movl %eax, -0x2c(%rbp)
leaq -0x2c(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x19560(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0xa1(%rbp)
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0xa7ac1
jmp 0xa7ae3
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x19c42(%rip), %xmm0    # 0xc1720
callq 0xa62a0
jmp 0xa7b45
jmp 0xa7ae7
movq 0x56502(%rip), %rdi     # 0xfdff0
leaq 0x1dbb3(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1d74d(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x1c5, %esi            # imm = 0x1C5
callq 0xaa40
movq %rax, %rdi
leaq 0x1ba3f(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1aad3(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x56472(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa7b45
addq $0xb0, %rsp
popq %rbp
retq
nop