// File: /workspace/github_cpp_makefile_star2_O1/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 0xf5c4
movq %rax, -0x38(%rbp)
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x59178
movq 0x8(%rbx), %rdi
callq 0x1356e
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 0x5a047
cmpl $0x2, %eax
je 0x59e5a
cmpl $0x3, %eax
jne 0x5a178
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 0x59cef
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r15
je 0x59cef
movq 0x8(%rbx), %rdi
callq 0x1356e
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x59c3d
cmpl $0x2, %eax
je 0x59c2d
cmpl $0x1, %eax
jne 0x59c55
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x11b05(%rip), %xmm0    # 0x6b730
jmp 0x59c4b
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x11d8d(%rip), %xmm0    # 0x6b9c8
jmp 0x59c4b
movq %rbx, %rdi
movl %r15d, %esi
movsd 0x11fd5(%rip), %xmm0    # 0x6bc20
callq 0x58f34
jmp 0x59cef
movl $0x17, %edx
movq 0x2d38f(%rip), %rdi     # 0x86ff0
leaq 0x15a08(%rip), %rsi     # 0x6f670
callq 0x9560
movl $0x1, %edx
movq 0x2d377(%rip), %rdi     # 0x86ff0
leaq 0x15542(%rip), %rsi     # 0x6f1c2
callq 0x9560
movq 0x2d364(%rip), %rdi     # 0x86ff0
movl $0x1a4, %esi            # imm = 0x1A4
callq 0x9880
movq %rax, -0x30(%rbp)
movl $0x3, %edx
movq %rax, %rdi
leaq 0x137d6(%rip), %rsi     # 0x6d47f
callq 0x9560
movl $0xf, %edx
movq -0x30(%rbp), %rdi
leaq 0x12a1c(%rip), %rsi     # 0x6c6da
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 0x1133e(%rip), %xmm0    # 0x6b040
jbe 0x59e02
movsd (%rax,%r14,4), %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x38(%rbp), %rdi
callq 0x4c97e
testb %al, %al
jne 0x59d5f
movq 0x28(%rbx), %rdi
callq 0x2adf8
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0x112d2(%rip), %xmm0    # 0x6b010
movsd 0x11312(%rip), %xmm1    # 0x6b058
ucomisd %xmm0, %xmm1
jbe 0x59d5f
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x125a6(%rip), %xmm0    # 0x6c300
jmp 0x59dfd
movq -0x38(%rbp), %rdi
callq 0x4c97e
testb %al, %al
jne 0x59da8
movq 0x28(%rbx), %rdi
callq 0x2adf8
movsd -0x30(%rbp), %xmm0
subsd 0x17a0(%rax), %xmm0
andpd 0x11286(%rip), %xmm0    # 0x6b010
movsd 0x158be(%rip), %xmm1    # 0x6f650
ucomisd %xmm0, %xmm1
jbe 0x59da8
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x11e7a(%rip), %xmm0    # 0x6bc20
jmp 0x59dfd
movsd 0x650(%rbx), %xmm0
movapd %xmm0, %xmm1
addsd 0x1589c(%rip), %xmm1    # 0x6f658
movsd -0x30(%rbp), %xmm2
ucomisd %xmm1, %xmm2
jbe 0x59de5
addsd 0x11f11(%rip), %xmm0    # 0x6bce0
movq %rbx, %rdi
movl %r12d, %esi
ucomisd %xmm0, %xmm2
jbe 0x59df5
movsd 0x140dd(%rip), %xmm0    # 0x6dec0
jmp 0x59dfd
movq %rbx, %rdi
movl %r12d, %esi
movsd 0x1193d(%rip), %xmm0    # 0x6b730
jmp 0x59dfd
movsd 0x1252b(%rip), %xmm0    # 0x6c328
callq 0x58f34
incq %r15
decl %r12d
addq $0x5e, %r14
incq %r13
cmpq $0xb, %r13
jne 0x59bcb
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x5a169
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0x111fb(%rip), %xmm0    # 0x6b040
jbe 0x5a169
negl %esi
movsd 0x11903(%rip), %xmm0    # 0x6b758
jmp 0x5a031
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 0x59f93
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x59f93
movq 0x8(%rbx), %rdi
callq 0x1356e
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x59ee1
cmpl $0x2, %eax
je 0x59ed1
cmpl $0x1, %eax
jne 0x59ef9
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x11861(%rip), %xmm0    # 0x6b730
jmp 0x59eef
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x11ae9(%rip), %xmm0    # 0x6b9c8
jmp 0x59eef
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x11891(%rip), %xmm0    # 0x6b780
callq 0x58f34
jmp 0x59f93
movl $0x17, %edx
movq 0x2d0eb(%rip), %rdi     # 0x86ff0
leaq 0x15764(%rip), %rsi     # 0x6f670
callq 0x9560
movl $0x1, %edx
movq 0x2d0d3(%rip), %rdi     # 0x86ff0
leaq 0x1529e(%rip), %rsi     # 0x6f1c2
callq 0x9560
movq 0x2d0c0(%rip), %rdi     # 0x86ff0
movl $0x184, %esi            # imm = 0x184
callq 0x9880
movq %rax, -0x30(%rbp)
movl $0x3, %edx
movq %rax, %rdi
leaq 0x13532(%rip), %rsi     # 0x6d47f
callq 0x9560
movl $0xf, %edx
movq -0x30(%rbp), %rdi
leaq 0x12778(%rip), %rsi     # 0x6c6da
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 0x1109a(%rip), %xmm0    # 0x6b040
jbe 0x59fde
movsd (%rax,%r12,4), %xmm0
movsd 0x650(%rbx), %xmm1
addsd 0x1569a(%rip), %xmm1    # 0x6f658
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x15632(%rip), %rcx     # 0x6f600
movsd (%rcx,%rax,8), %xmm0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x58f34
incq %r14
decl %r15d
addq $0x5e, %r12
incq %r13
cmpq $0xb, %r13
jne 0x59e6f
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x5a169
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0x1101f(%rip), %xmm0    # 0x6b040
jbe 0x5a169
negl %esi
movsd 0x12f77(%rip), %xmm0    # 0x6cfa8
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x58f34
movl $0x1, %r14d
xorl %r13d, %r13d
movq 0x2cf99(%rip), %r15     # 0x86ff0
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r14
je 0x5a159
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r14
je 0x5a159
movq 0x8(%rbx), %rdi
callq 0x1356e
movq 0x10(%rax), %rax
movslq 0x354(%rax,%r13,4), %rcx
shlq $0x4, %rcx
movl 0x58(%rcx,%rax), %eax
cmpl $0x3, %eax
je 0x5a0b9
cmpl $0x2, %eax
je 0x5a0b9
cmpl $0x1, %eax
jne 0x5a0d1
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x15589(%rip), %xmm0    # 0x6f640
jmp 0x5a0c7
movq %rbx, %rdi
movl %r14d, %esi
movsd 0x11901(%rip), %xmm0    # 0x6b9c8
callq 0x58f34
jmp 0x5a159
movl $0x17, %edx
movq %r15, %rdi
leaq 0x15590(%rip), %rsi     # 0x6f670
callq 0x9560
movl $0x1, %edx
movq %r15, %rdi
leaq 0x150ce(%rip), %rsi     # 0x6f1c2
callq 0x9560
movq %r15, %rdi
movl $0x16f, %esi            # imm = 0x16F
callq 0x9880
movq %rax, %r12
movl $0x3, %edx
movq %rax, %rdi
leaq 0x13367(%rip), %rsi     # 0x6d47f
callq 0x9560
movl $0xf, %edx
movq %r12, %rdi
leaq 0x125ae(%rip), %rsi     # 0x6c6da
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 0x5a057
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2ce71(%rip), %rbx     # 0x86ff0
leaq 0x154ea(%rip), %rsi     # 0x6f670
movl $0x17, %edx
movq %rbx, %rdi
callq 0x9560
leaq 0x15028(%rip), %rsi     # 0x6f1c2
movl $0x1, %edx
movq %rbx, %rdi
callq 0x9560
movq %rbx, %rdi
movl $0x1c5, %esi            # imm = 0x1C5
callq 0x9880
movq %rax, %rbx
leaq 0x132c1(%rip), %rsi     # 0x6d47f
movl $0x3, %edx
movq %rax, %rdi
callq 0x9560
leaq 0x12508(%rip), %rsi     # 0x6c6da
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