// File: rilutham[P]gotojakarta/go-to-jakarta.cpp
// Function: PathSearchNode::GoalDistanceEstimate(PathSearchNode&)
float PathSearchNode::GoalDistanceEstimate( PathSearchNode &nodeGoal )
{
  // goal is always Jakarta!
  switch(city)
  {
    case Garut: return 165; break;
    case Jakarta: return 0; break;
    case Tasikmalaya: return 201; break;
    case Ciamis: return 212; break;
    case Banjar: return 234; break;
    case Pangandaran: return 265; break;
    case Sumedang: return 141; break;
    case Bandung: return 132; break;
    case Cimahi: return 109; break;
    case Kuningan: return 202; break;
    case Majalengka: return 171; break;
    case Cirebon: return 201; break;
    case Indramayu: return 158; break;
    case Subang: return 111; break;
    case Karawang: return 56; break;
    case Purwakarta: return 81; break;
    case Cianjur: return 78; break;
    case Sukabumi: return 85; break;
    case Bogor: return 36; break;
    case Depok: return 22; break;
    case Bekasi: return 30; break;
  }
  cerr << "ASSERT: city = " << CityNames[city] << endl;
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x14, %rax
ja 0x2565
movq -0x20(%rbp), %rax
leaq 0x4cb1(%rip), %rcx      # 0x70a4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movss 0x4c48(%rip), %xmm0     # 0x704c
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
xorps %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4c05(%rip), %xmm0     # 0x7028
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4c13(%rip), %xmm0     # 0x7048
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4bfd(%rip), %xmm0     # 0x7044
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4be7(%rip), %xmm0     # 0x7040
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4bd1(%rip), %xmm0     # 0x703c
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4bbb(%rip), %xmm0     # 0x7038
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4ba5(%rip), %xmm0     # 0x7034
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b8f(%rip), %xmm0     # 0x7030
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b79(%rip), %xmm0     # 0x702c
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b63(%rip), %xmm0     # 0x7028
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b4d(%rip), %xmm0     # 0x7024
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b37(%rip), %xmm0     # 0x7020
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b21(%rip), %xmm0     # 0x701c
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4b0b(%rip), %xmm0     # 0x7018
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4af5(%rip), %xmm0     # 0x7014
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4adf(%rip), %xmm0     # 0x7010
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4acc(%rip), %xmm0     # 0x700c
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4ab9(%rip), %xmm0     # 0x7008
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movss 0x4aa6(%rip), %xmm0     # 0x7004
movss %xmm0, -0x4(%rbp)
jmp 0x25b6
movq 0x8a84(%rip), %rdi      # 0xaff0
leaq 0x4b85(%rip), %rsi      # 0x70f8
callq 0x20f0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, -0x30(%rbp)
movl (%rax), %eax
movl %eax, %esi
leaq 0x8b8a(%rip), %rdi      # 0xb118
callq 0x30b0
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x20e0
movq %rax, %rdi
movq 0x8a17(%rip), %rsi      # 0xafc0
callq 0x2120
xorps %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
movss -0x4(%rbp), %xmm0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)