// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
callq 0xdd50
movq %rax, -0x30(%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 0x4b467
cmpl $0x2, %eax
je 0x4b2d9
cmpl $0x3, %eax
jne 0x4b4b9
pushq $-0x1
popq %r15
pushq $0x1
popq %r12
pushq $-0x2c
popq %r13
movl $0x436, %r14d           # imm = 0x436
testq %r13, %r13
je 0x4b50e
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r12
je 0x4b27b
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r12
je 0x4b27b
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 0x4b211
cmpl $0x2, %eax
je 0x4b201
cmpl $0x1, %eax
jne 0x4b226
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xc509(%rip), %xmm0     # 0x57708
jmp 0x4b21f
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xc789(%rip), %xmm0     # 0x57998
jmp 0x4b21f
movq %rbx, %rdi
movl %r12d, %esi
movsd 0xc9d1(%rip), %xmm0     # 0x57bf0
callq 0x4a0b4
jmp 0x4b27b
movq 0x2bdc3(%rip), %rdi     # 0x76ff0
leaq 0x103dc(%rip), %rsi     # 0x5b610
callq 0x94b0
movq %rax, %rdi
leaq 0xff2f(%rip), %rsi      # 0x5b172
callq 0x94b0
movq %rax, %rdi
movl $0x209, %esi            # imm = 0x209
callq 0x9890
movq %rax, %rdi
leaq 0xe1c0(%rip), %rsi      # 0x5941f
callq 0x94b0
movq %rax, %rdi
leaq 0xd42c(%rip), %rsi      # 0x5869a
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r14,4), %xmm0
ucomisd 0xbdb2(%rip), %xmm0     # 0x57040
jbe 0x4b2c6
movsd (%rax,%r14,4), %xmm0
movsd 0x650(%rbx), %xmm1
addsd 0x10352(%rip), %xmm1    # 0x5b5f8
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x102fa(%rip), %rcx     # 0x5b5b0
movsd (%rcx,%rax,8), %xmm0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x4a0b4
incq %r12
decl %r15d
addq $0x4, %r13
addq $0x5e, %r14
jmp 0x4b196
pushq $0x1
popq %r15
pushq $-0x1
popq %r12
pushq $-0x2c
popq %r13
movl $0x436, %r14d           # imm = 0x436
testq %r13, %r13
je 0x4b41e
movq 0x20(%rbx), %rax
movl 0x11c(%rax), %eax
cmpq %rax, %r15
je 0x4b3c0
movq 0x10(%rbx), %rax
movl 0x2110(%rax), %eax
cmpq %rax, %r15
je 0x4b3c0
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 0x4b356
cmpl $0x2, %eax
je 0x4b356
cmpl $0x1, %eax
jne 0x4b36b
movq %rbx, %rdi
movl %r15d, %esi
movsd 0xc3b4(%rip), %xmm0     # 0x57708
jmp 0x4b364
movq %rbx, %rdi
movl %r15d, %esi
movsd 0xc634(%rip), %xmm0     # 0x57998
callq 0x4a0b4
jmp 0x4b3c0
movq 0x2bc7e(%rip), %rdi     # 0x76ff0
leaq 0x10297(%rip), %rsi     # 0x5b610
callq 0x94b0
movq %rax, %rdi
leaq 0xfdea(%rip), %rsi      # 0x5b172
callq 0x94b0
movq %rax, %rdi
movl $0x1e9, %esi            # imm = 0x1E9
callq 0x9890
movq %rax, %rdi
leaq 0xe07b(%rip), %rsi      # 0x5941f
callq 0x94b0
movq %rax, %rdi
leaq 0xd2e7(%rip), %rsi      # 0x5869a
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
movq 0x10(%rbx), %rax
movsd 0x18(%rax,%r14,4), %xmm0
ucomisd 0xbc6d(%rip), %xmm0     # 0x57040
jbe 0x4b40b
movsd (%rax,%r14,4), %xmm0
movsd 0x650(%rbx), %xmm1
addsd 0x1020d(%rip), %xmm1    # 0x5b5f8
xorl %eax, %eax
ucomisd %xmm1, %xmm0
seta %al
leaq 0x101b5(%rip), %rcx     # 0x5b5b0
movsd (%rcx,%rax,8), %xmm0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x4a0b4
incq %r15
decl %r12d
addq $0x4, %r13
addq $0x5e, %r14
jmp 0x4b2eb
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rsi
testq %rsi, %rsi
je 0x4b50e
imulq $0x178, %rsi, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0xbbf6(%rip), %xmm0     # 0x57040
jbe 0x4b50e
negl %esi
movsd 0xdafe(%rip), %xmm0     # 0x58f58
movq %rbx, %rdi
callq 0x4a0b4
jmp 0x4b50e
pushq $0x1
popq %r15
pushq $-0x1
popq %r12
cmpl $-0xc, %r12d
je 0x4b50e
movq 0x20(%rbx), %rax
cmpl 0x11c(%rax), %r15d
je 0x4b4a2
movq 0x10(%rbx), %rax
cmpl 0x2110(%rax), %r15d
je 0x4b4a2
xorpd %xmm0, %xmm0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x4a0b4
xorpd %xmm0, %xmm0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x4a0b4
incl %r15d
decl %r12d
jmp 0x4b46f
movq 0x2bb30(%rip), %rdi     # 0x76ff0
leaq 0x10149(%rip), %rsi     # 0x5b610
callq 0x94b0
leaq 0xfc9f(%rip), %rsi      # 0x5b172
movq %rax, %rdi
callq 0x94b0
movq %rax, %rdi
movl $0x216, %esi            # imm = 0x216
callq 0x9890
leaq 0xdf30(%rip), %rsi      # 0x5941f
movq %rax, %rdi
callq 0x94b0
leaq 0xd19c(%rip), %rsi      # 0x5869a
movq %rax, %rdi
callq 0x94b0
movq %rax, %rdi
callq 0x99e8
callq 0x3db2c
leaq 0x3850(%rax), %rdi
leaq 0x660(%rbx), %rsi
movabsq $0x3ed92a737110e454, %rax # imm = 0x3ED92A737110E454
leaq -0x38(%rbp), %rdx
movq %rax, (%rdx)
callq 0x12516
testb %al, %al
je 0x4b657
movq -0x30(%rbp), %r14
movq %r14, %rdi
callq 0x3fb02
testb %al, %al
jne 0x4b58b
cmpl $0x0, 0x48(%r14)
jle 0x4b657
movq 0x28(%rbx), %rdi
callq 0x244e8
movq 0x20(%rbx), %rcx
movl 0x11c(%rcx), %esi
movq %rax, %rdi
callq 0x3ba7a
movsd 0xd9db(%rip), %xmm0     # 0x58f58
ucomisd (%rax), %xmm0
movq -0x30(%rbp), %r14
jbe 0x4b657
movq 0x10(%rbx), %rax
movslq 0x2114(%rax), %rcx
testq %rcx, %rcx
je 0x4b657
imulq $0x178, %rcx, %rcx      # imm = 0x178
movsd 0xf78(%rax,%rcx), %xmm0
ucomisd 0xba89(%rip), %xmm0     # 0x57040
jbe 0x4b657
movq %r14, %rdi
callq 0x3fb02
testb %al, %al
je 0x4b63b
movq 0x20(%rbx), %rax
movsd 0x8(%rax), %xmm0
ucomisd 0x10026(%rip), %xmm0    # 0x5b600
jbe 0x4b5ff
movq 0x10(%rbx), %rax
movl 0x1c(%rax), %ecx
cmpl $0xa, %ecx
je 0x4b5ed
cmpl $0x7, %ecx
jne 0x4b666
xorl %esi, %esi
subl 0x2114(%rax), %esi
movsd 0xd1b3(%rip), %xmm0     # 0x587b0
jmp 0x4b64f
movq 0x28(%rbx), %rdi
callq 0x244e8
movq 0x10(%rbx), %rcx
movl 0x2114(%rcx), %esi
movq %rax, %rdi
callq 0x4be66
movsd 0xffc6(%rip), %xmm0     # 0x5b5e8
ucomisd (%rax), %xmm0
jbe 0x4b63b
movq 0x20(%rbx), %rax
movsd 0x8(%rax), %xmm0
ucomisd 0xc667(%rip), %xmm0     # 0x57ca0
ja 0x4b5dc
movq 0x10(%rbx), %rax
xorl %esi, %esi
subl 0x2114(%rax), %esi
movsd 0xc109(%rip), %xmm0     # 0x57758
movq %rbx, %rdi
callq 0x4a0b4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %esi, %esi
subl 0x2114(%rax), %esi
movsd 0xb9d2(%rip), %xmm0     # 0x57048
jmp 0x4b64f