// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/VisualSystem.cpp
// Function: VisualSystem::DoInfoGatherForPenaltyAttack()
void VisualSystem::DoInfoGatherForPenaltyAttack() {
  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()) {
        RaisePlayer(i);
      }
      RaisePlayer(-i);
    }
    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, 5.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, 3.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) {
        if (mpWorldState->GetOpponent(i).GetPos().X() > mPreBallPos.X() - 8.0)
          RaisePlayer(-i, 3.0);
        else
          RaisePlayer(-i, 100.0);
      }
    }
    break;
  default:
    PRINT_ERROR("line type error");
    break;
  }

  //特殊视觉请求
  if (ServerParam::instance().oppPenaltyArea().IsWithin(mPreSelfPos) &&
      (strategy.IsMyControl() ||
       (strategy.IsTmControl() &&
        mpInfoState->GetPositionInfo().GetBallDistToTeammate(
            mpSelfState->GetUnum()) < 20.0))) {
    if (mpWorldState->GetOpponentGoalieUnum() &&
        mpWorldState->GetOpponent(mpWorldState->GetOpponentGoalieUnum())
                .GetPosConf() > FLOAT_EPS) {
      if (strategy.IsMyControl() &&
          (mpSelfState->GetPos().X() > 38.0 ||
           (mpInfoState->GetPositionInfo().GetBallDistToOpponent(
                mpWorldState->GetOpponentGoalieUnum()) < 8.0 &&
            mpSelfState->GetPos().X() > 36.0))) {
        if (mpWorldState->GetPlayMode() == PM_Our_Back_Pass_Kick ||
            mpWorldState->GetPlayMode() == PM_Our_Indirect_Free_Kick) {
          RaisePlayer(-mpWorldState->GetOpponentGoalieUnum(), 1.2);
        } else {
          RaisePlayer(-mpWorldState->GetOpponentGoalieUnum(), 1.0);
        }
      } else {
        RaisePlayer(-mpWorldState->GetOpponentGoalieUnum(), 2.0);
      }
    }
  }
}

// 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 0xa7bd8
jmp 0xa7bb9
movl -0x30(%rbp), %eax
subl $0x2, %eax
je 0xa7c4d
jmp 0xa7bc7
movl -0x30(%rbp), %eax
subl $0x3, %eax
je 0xa7eda
jmp 0xa80df
movl $0x1, -0x14(%rbp)
cmpl $0xb, -0x14(%rbp)
jg 0xa7c48
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 0xa7c2c
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 0xa7c2c
movq -0x40(%rbp), %rdi
movl -0x14(%rbp), %esi
xorps %xmm0, %xmm0
callq 0xa62a0
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x14(%rbp), %esi
xorps %xmm0, %xmm0
callq 0xa62a0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xa7bdf
jmp 0xa813f
movl $0x1, -0x18(%rbp)
cmpl $0xb, -0x18(%rbp)
jg 0xa7e4a
movq -0x40(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x4c(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x4c(%rbp), %eax
cmpl %ecx, %eax
je 0xa7d7e
movq -0x40(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x50(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x50(%rbp), %eax
cmpl %ecx, %eax
je 0xa7d7e
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, -0x54(%rbp)
subl $0x1, %eax
je 0xa7cd7
jmp 0xa7cc3
movl -0x54(%rbp), %eax
subl $0x2, %eax
je 0xa7cf0
jmp 0xa7ccd
movl -0x54(%rbp), %eax
subl $0x3, %eax
je 0xa7d06
jmp 0xa7d1c
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x199f2(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa7d7c
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x19c71(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa7d7c
movq -0x40(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x19c5b(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa7d7c
jmp 0xa7d1e
movq 0x562cb(%rip), %rdi     # 0xfdff0
leaq 0x1d97c(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1d516(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x1e9, %esi            # imm = 0x1E9
callq 0xaa40
movq %rax, %rdi
leaq 0x1b808(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1a89c(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x5623b(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa7d7c
jmp 0xa7d7e
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 0x19261(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
jbe 0xa7e3a
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 0x19908(%rip), %xmm2    # 0xc1708
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa7e22
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x18(%rbp), %esi
movsd 0x19d9d(%rip), %xmm0    # 0xc1bb8
callq 0xa62a0
jmp 0xa7e38
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x18(%rbp), %esi
movsd 0x198a5(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa7e3a
jmp 0xa7e3c
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xa7c54
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x61(%rbp)
je 0xa7eaa
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 0x19168(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0xa7eb3
jmp 0xa7ed5
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x1afe8(%rip), %xmm0    # 0xc2eb8
callq 0xa62a0
jmp 0xa813f
movl $0x1, -0x20(%rbp)
cmpl $0xb, -0x20(%rbp)
jg 0xa80dd
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 0xa800b
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 0xa800b
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 0xa7f64
jmp 0xa7f50
movl -0x7c(%rbp), %eax
subl $0x2, %eax
je 0xa7f7d
jmp 0xa7f5a
movl -0x7c(%rbp), %eax
subl $0x3, %eax
je 0xa7f93
jmp 0xa7fa9
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x19765(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa8009
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x199e4(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa8009
movq -0x40(%rbp), %rdi
movl -0x20(%rbp), %esi
movsd 0x19c16(%rip), %xmm0    # 0xc1bb8
callq 0xa62a0
jmp 0xa8009
jmp 0xa7fab
movq 0x5603e(%rip), %rdi     # 0xfdff0
leaq 0x1d6ef(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1d289(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x209, %esi            # imm = 0x209
callq 0xaa40
movq %rax, %rdi
leaq 0x1b57b(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1a60f(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x55fae(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa8009
jmp 0xa800b
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 0x18fd4(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
jbe 0xa80cd
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
movq -0x40(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
addq $0x650, %rdi            # imm = 0x650
callq 0x176f0
movsd -0x88(%rbp), %xmm0
movsd (%rax), %xmm1
movsd 0x19675(%rip), %xmm2    # 0xc1708
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa80b5
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x19b0a(%rip), %xmm0    # 0xc1bb8
callq 0xa62a0
jmp 0xa80cb
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl -0x20(%rbp), %esi
movsd 0x19612(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa80cd
jmp 0xa80cf
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xa7ee1
jmp 0xa813f
jmp 0xa80e1
movq 0x55f08(%rip), %rdi     # 0xfdff0
leaq 0x1d5b9(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1d153(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x216, %esi            # imm = 0x216
callq 0xaa40
movq %rax, %rdi
leaq 0x1b445(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1a4d9(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x55e78(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa813f
callq 0x855e0
movq %rax, %rdi
callq 0x8b2f0
movq -0x40(%rbp), %rsi
movq %rax, %rdi
addq $0x660, %rsi            # imm = 0x660
movsd 0x18ea6(%rip), %xmm0    # 0xc1008
movsd %xmm0, -0x28(%rbp)
leaq -0x28(%rbp), %rdx
callq 0x1d850
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x89(%rbp)
jne 0xa8184
jmp 0xa8215
movq -0x10(%rbp), %rdi
callq 0x88c40
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x8a(%rbp)
jne 0xa8209
movq -0x10(%rbp), %rdi
callq 0xa9460
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x8b(%rbp)
jne 0xa81b6
jmp 0xa81fd
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x49590
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0x98(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movq -0x98(%rbp), %rdi
movl %eax, %esi
callq 0x81980
movsd 0x1acc8(%rip), %xmm0    # 0xc2eb8
ucomisd (%rax), %xmm0
seta %al
movb %al, -0x8b(%rbp)
movb -0x8b(%rbp), %al
movb %al, -0x8a(%rbp)
movb -0x8a(%rbp), %al
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0xa8224
jmp 0xa83dd
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x99(%rbp)
je 0xa8290
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0xa8(%rbp)
movq 0x10(%rax), %rdi
callq 0x25310
movq -0xa8(%rbp), %rdi
movl %eax, -0x2c(%rbp)
leaq -0x2c(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x18d85(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0x99(%rbp)
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0xa829f
jmp 0xa83db
movq -0x10(%rbp), %rdi
callq 0x88c40
testb $0x1, %al
jne 0xa82b1
jmp 0xa83b7
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, %rdi
callq 0x176f0
movsd (%rax), %xmm0
movsd 0x1d3ca(%rip), %xmm1    # 0xc56a0
ucomisd %xmm1, %xmm0
ja 0xa834b
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x49590
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0xb0(%rbp)
movq 0x10(%rax), %rdi
callq 0x25310
movq -0xb0(%rbp), %rdi
movl %eax, %esi
callq 0x819b0
movsd 0x193f2(%rip), %xmm0    # 0xc1708
ucomisd (%rax), %xmm0
jbe 0xa83b7
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, %rdi
callq 0x176f0
movsd (%rax), %xmm0
movsd 0x19923(%rip), %xmm1    # 0xc1c68
ucomisd %xmm1, %xmm0
jbe 0xa83b7
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x10ed0
cmpl $0xa, %eax
je 0xa836f
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x10ed0
cmpl $0x7, %eax
jne 0xa8393
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x1a37c(%rip), %xmm0    # 0xc2708
callq 0xa62a0
jmp 0xa83b5
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x18c60(%rip), %xmm0    # 0xc1010
callq 0xa62a0
jmp 0xa83d9
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x40(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x190dc(%rip), %xmm0    # 0xc14b0
callq 0xa62a0
jmp 0xa83db
jmp 0xa83dd
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)