// File: bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: state_t::preprocess() const
void preprocess() const {
        if( distances_ == 0 ) {
            assert(shared_);
            std::pair<bool, const int*> p(false, 0);
            if( use_cache_ ) p = cache_.lookup(*graph_, current_, info_);
            if( p.first ) {
                if( !shared_ ) delete[] distances_;
                distances_ = const_cast<int*>(p.second);
                shared_ = true;
            } else {
                if( shared_ ) distances_ = new int[num_nodes_];
                assert(distances_ != 0);
                shared_ = false;
                if( p.second ) {
                    memcpy(const_cast<int*>(distances_), p.second, num_nodes_ * sizeof(int));
                } else {
                    graph_->dijkstra(current_, distances_, info_.known_, info_.blocked_, false);
                    //distances_[current_] = graph_->bfs(current_, num_nodes_ - 1, info_.known_, info_.blocked_, true);
                }
            }
            //heuristic_ = distances_[current_];
        }
    }

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x60(%rax)
jne 0x1440d
movq 0x8(%rsp), %rax
testb $0x1, 0x5c(%rax)
je 0x1427b
jmp 0x1429a
leaq 0x491e0(%rip), %rdi     # 0x5d462
leaq 0x491e1(%rip), %rsi     # 0x5d46a
movl $0x160, %edx            # imm = 0x160
leaq 0x491de(%rip), %rcx     # 0x5d473
callq 0x6220
movb $0x0, 0x2f(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x2f(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x14420
testb $0x1, 0x6f08d(%rip)     # 0x83350
je 0x142fb
movq 0x8(%rsp), %rcx
movq 0x6f03f(%rip), %rsi     # 0x83310
movl (%rcx), %edx
addq $0x4, %rcx
leaq 0x6f04a(%rip), %rdi     # 0x83328
callq 0x14450
movb %al, 0x10(%rsp)
movq %rdx, 0x18(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x147b0
testb $0x1, 0x30(%rsp)
je 0x14342
movq 0x8(%rsp), %rax
testb $0x1, 0x5c(%rax)
jne 0x1432b
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x14329
movq (%rsp), %rdi
callq 0x6420
jmp 0x1432b
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, 0x60(%rax)
movb $0x1, 0x5c(%rax)
jmp 0x1440b
movq 0x8(%rsp), %rax
testb $0x1, 0x5c(%rax)
je 0x14381
movslq 0x6efc4(%rip), %rax     # 0x83318
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x6030
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x60(%rax)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x1438f
jmp 0x143ae
leaq 0x4918a(%rip), %rdi     # 0x5d520
leaq 0x490cd(%rip), %rsi     # 0x5d46a
movl $0x169, %edx            # imm = 0x169
leaq 0x490ca(%rip), %rcx     # 0x5d473
callq 0x6220
movq 0x8(%rsp), %rax
movb $0x0, 0x5c(%rax)
cmpq $0x0, 0x38(%rsp)
je 0x143df
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x38(%rsp), %rsi
movslq 0x6ef44(%rip), %rdx     # 0x83318
shlq $0x2, %rdx
callq 0x62c0
jmp 0x14409
movq 0x8(%rsp), %r8
movq 0x6ef25(%rip), %rdi     # 0x83310
movl (%r8), %esi
movq 0x60(%r8), %rdx
movq %r8, %rcx
addq $0x4, %rcx
addq $0x4, %r8
addq $0x24, %r8
xorl %r9d, %r9d
callq 0x147e0
jmp 0x1440b
jmp 0x1440d
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)