// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/VisualSystem.cpp
// Function: VisualSystem::DoInfoGatherForDefense()
void VisualSystem::DoInfoGatherForDefense() {
  if (mVisualRequest.GetOfBall().mConf < FLOAT_EPS && !mCanTurn &&
      !mIsCritical) {
    mForceToSeeObject.GetOfBall() = true;
  }

  RaiseBall();
  switch (mpAgent->GetFormation()
              .GetTeammateRoleType(mpSelfState->GetUnum())
              .mLineType) {
  case LT_Goalie:
  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, 5.0);
          break;
        case LT_Midfielder:
          RaisePlayer(i, 10.0);
          break;
        case LT_Forward:
          RaisePlayer(i, 100.0);
          break;
        default:
          PRINT_ERROR("line type error");
          break;
        }
      }
      RaisePlayer(-i);
    }
    break;
  case LT_Midfielder:
    for (Unum i = 1; i <= TEAMSIZE; ++i) {
      if (i != mpSelfState->GetUnum() &&
          i != mpWorldState->GetTeammateGoalieUnum()) {
        RaisePlayer(i);
      }
      RaisePlayer(-i, 12.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, 12.0);
          break;
        case LT_Midfielder:
          RaisePlayer(i, 8.0);
          break;
        case LT_Forward:
          RaisePlayer(i, 8.0);
          break;
        default:
          PRINT_ERROR("line type error");
          break;
        }
      }
      RaisePlayer(-i, 12.0);
    }
    break;
  default:
    PRINT_ERROR("line type error");
    break;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x20(%rbp)
addq $0x30, %rdi
callq 0xa8ef0
movsd 0x1a753(%rip), %xmm0    # 0xc1008
ucomisd 0x20(%rax), %xmm0
jbe 0xa68e9
movq -0x20(%rbp), %rax
testb $0x1, 0x63c(%rax)
jne 0xa68e9
movq -0x20(%rbp), %rax
testb $0x1, 0x638(%rax)
jne 0xa68e9
movq -0x20(%rbp), %rdi
addq $0x5f0, %rdi            # imm = 0x5F0
callq 0xa9140
movb $0x1, (%rax)
movq -0x20(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0xa6520
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, -0x30(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movq -0x30(%rbp), %rdi
movl %eax, %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x24(%rbp)
subl $0x2, %eax
jb 0xa694d
jmp 0xa692e
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0xa6aa2
jmp 0xa693c
movl -0x24(%rbp), %eax
subl $0x3, %eax
je 0xa6ba7
jmp 0xa6cfe
movl $0x1, -0xc(%rbp)
cmpl $0xb, -0xc(%rbp)
jg 0xa6a9d
movq -0x20(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, -0x34(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x34(%rbp), %eax
cmpl %ecx, %eax
je 0xa6a7e
movq -0x20(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, -0x38(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x38(%rbp), %eax
cmpl %ecx, %eax
je 0xa6a7e
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rdi
movl -0xc(%rbp), %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x3c(%rbp)
subl $0x1, %eax
je 0xa69d7
jmp 0xa69c3
movl -0x3c(%rbp), %eax
subl $0x2, %eax
je 0xa69f0
jmp 0xa69cd
movl -0x3c(%rbp), %eax
subl $0x3, %eax
je 0xa6a06
jmp 0xa6a1c
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
movsd 0x1af8a(%rip), %xmm0    # 0xc1970
callq 0xa62a0
jmp 0xa6a7c
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
movsd 0x1acf9(%rip), %xmm0    # 0xc16f8
callq 0xa62a0
jmp 0xa6a7c
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
movsd 0x1acc3(%rip), %xmm0    # 0xc16d8
callq 0xa62a0
jmp 0xa6a7c
jmp 0xa6a1e
movq 0x575cb(%rip), %rdi     # 0xfdff0
leaq 0x1ec7c(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1e816(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x24f, %esi            # imm = 0x24F
callq 0xaa40
movq %rax, %rdi
leaq 0x1cb08(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1bb9c(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x5753b(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa6a7c
jmp 0xa6a7e
movq -0x20(%rbp), %rdi
xorl %esi, %esi
subl -0xc(%rbp), %esi
xorps %xmm0, %xmm0
callq 0xa62a0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0xa6954
jmp 0xa6d5e
movl $0x1, -0x10(%rbp)
cmpl $0xb, -0x10(%rbp)
jg 0xa6b17
movq -0x20(%rbp), %rax
movl -0x10(%rbp), %ecx
movl %ecx, -0x40(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x40(%rbp), %eax
cmpl %ecx, %eax
je 0xa6af6
movq -0x20(%rbp), %rax
movl -0x10(%rbp), %ecx
movl %ecx, -0x44(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x44(%rbp), %eax
cmpl %ecx, %eax
je 0xa6af6
movq -0x20(%rbp), %rdi
movl -0x10(%rbp), %esi
xorps %xmm0, %xmm0
callq 0xa62a0
movq -0x20(%rbp), %rdi
xorl %esi, %esi
subl -0x10(%rbp), %esi
movsd 0x1abf9(%rip), %xmm0    # 0xc1700
callq 0xa62a0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xa6aa9
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x45(%rbp)
je 0xa6b77
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0x50(%rbp)
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x50(%rbp), %rdi
movl %eax, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x1d480
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd 0x1a49b(%rip), %xmm1    # 0xc1008
ucomisd %xmm1, %xmm0
seta %al
movb %al, -0x45(%rbp)
movb -0x45(%rbp), %al
testb $0x1, %al
jne 0xa6b80
jmp 0xa6ba2
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x25310
movq -0x20(%rbp), %rdi
xorl %esi, %esi
subl %eax, %esi
movsd 0x1c31b(%rip), %xmm0    # 0xc2eb8
callq 0xa62a0
jmp 0xa6d5e
movl $0x1, -0x18(%rbp)
cmpl $0xb, -0x18(%rbp)
jg 0xa6cfc
movq -0x20(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x54(%rbp)
movq 0x20(%rax), %rdi
callq 0x1b470
movl %eax, %ecx
movl -0x54(%rbp), %eax
cmpl %ecx, %eax
je 0xa6cd8
movq -0x20(%rbp), %rax
movl -0x18(%rbp), %ecx
movl %ecx, -0x58(%rbp)
movq 0x10(%rax), %rdi
callq 0x1eeb0
movl %eax, %ecx
movl -0x58(%rbp), %eax
cmpl %ecx, %eax
je 0xa6cd8
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x1a4c0
movq %rax, %rdi
movl -0x18(%rbp), %esi
callq 0x29570
movl 0x8(%rax), %eax
movl %eax, -0x5c(%rbp)
subl $0x1, %eax
je 0xa6c31
jmp 0xa6c1d
movl -0x5c(%rbp), %eax
subl $0x2, %eax
je 0xa6c4a
jmp 0xa6c27
movl -0x5c(%rbp), %eax
subl $0x3, %eax
je 0xa6c60
jmp 0xa6c76
movq -0x20(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x1aac0(%rip), %xmm0    # 0xc1700
callq 0xa62a0
jmp 0xa6cd6
movq -0x20(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x1aaaf(%rip), %xmm0    # 0xc1708
callq 0xa62a0
jmp 0xa6cd6
movq -0x20(%rbp), %rdi
movl -0x18(%rbp), %esi
movsd 0x1aa99(%rip), %xmm0    # 0xc1708
callq 0xa62a0
jmp 0xa6cd6
jmp 0xa6c78
movq 0x57371(%rip), %rdi     # 0xfdff0
leaq 0x1ea22(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1e5bc(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x273, %esi            # imm = 0x273
callq 0xaa40
movq %rax, %rdi
leaq 0x1c8ae(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1b942(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x572e1(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa6cd6
jmp 0xa6cd8
movq -0x20(%rbp), %rdi
xorl %esi, %esi
subl -0x18(%rbp), %esi
movsd 0x1aa17(%rip), %xmm0    # 0xc1700
callq 0xa62a0
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xa6bae
jmp 0xa6d5e
jmp 0xa6d00
movq 0x572e9(%rip), %rdi     # 0xfdff0
leaq 0x1e99a(%rip), %rsi     # 0xc56a8
callq 0xa5a0
movq %rax, %rdi
leaq 0x1e534(%rip), %rsi     # 0xc5251
callq 0xa5a0
movq %rax, %rdi
movl $0x27b, %esi            # imm = 0x27B
callq 0xaa40
movq %rax, %rdi
leaq 0x1c826(%rip), %rsi     # 0xc355f
callq 0xa5a0
movq %rax, %rdi
leaq 0x1b8ba(%rip), %rsi     # 0xc2602
callq 0xa5a0
movq %rax, %rdi
movq 0x57259(%rip), %rsi     # 0xfdfb0
callq 0xa630
jmp 0xa6d5e
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)