00007FF6B62CB8F2 mov word ptr [rbx+12h],ax 00007FF6B62CB8F6 mov dword ptr [rbx+14h],r14d 00007FF6B62CB8FA mov qword ptr [rbx+18h],r14 00007FF6B62CB8FE jmp MultiCommodityFlow::Dijkstra+25Bh (7FF6B62CB903h) 00007FF6B62CB900 mov rbx,r14 00007FF6B62CB903 mov qword ptr [rbp+78h],rbx annos.insert(anno); 00007FF6B62CB907 lea r8,[rbp+78h] 00007FF6B62CB90B lea rdx,[rbp-10h] 00007FF6B62CB90F lea rcx,[annos] 00007FF6B62CB914 call std::_Tree,0> >::insert (7FF6B62CC9F0h) paths[node] = anno; 00007FF6B62CB919 movzx r11d,di 00007FF6B62CB91D mov rax,qword ptr [r13] 00007FF6B62CB921 mov qword ptr [rax+r11*8],rbx for (NodeID node = 0; node < size; ++node) { 00007FF6B62CB925 add di,r15w 00007FF6B62CB929 movzx eax,di 00007FF6B62CB92C cmp eax,esi 00007FF6B62CB92E jb MultiCommodityFlow::Dijkstra+1F0h (7FF6B62CB898h) 00007FF6B62CB934 mov r15,qword ptr [rbp+60h] } while (!annos.empty()) { 00007FF6B62CB938 cmp qword ptr [rsp+38h],r14 00007FF6B62CB93D je 00007FF6B62CBD0D } } } } 00007FF6B62CB943 movzx ebx,r12w 00007FF6B62CB947 shl rbx,4 00007FF6B62CB94B mov qword ptr [rbp-68h],rbx 00007FF6B62CB94F mov esi,1 typename AnnoSet::iterator i = annos.begin(); 00007FF6B62CB954 mov r8,qword ptr [rsp+30h] 00007FF6B62CB959 mov r8,qword ptr [r8] Tannotation *source = *i; 00007FF6B62CB95C mov r14,qword ptr [r8+18h] annos.erase(i); 00007FF6B62CB960 lea rdx,[rbp-48h] 00007FF6B62CB964 lea rcx,[annos] 00007FF6B62CB969 call std::_Tree,std::allocator >,0> >::erase (7FF6B63CA7E0h) NodeID from = source->GetNode(); 00007FF6B62CB96E movzx edi,word ptr [r14+10h] 00007FF6B62CB973 mov word ptr [rbp+78h],di iter.SetNode(source_node, from); 00007FF6B62CB977 mov eax,dword ptr [`FlowEdgeIterator::SetNode'::`2'::`local static guard' (7FF6B741F018h)] 00007FF6B62CB97D test sil,al 00007FF6B62CB980 jne MultiCommodityFlow::Dijkstra+2FBh (7FF6B62CB9A3h) 00007FF6B62CB982 or eax,esi 00007FF6B62CB984 mov dword ptr [`FlowEdgeIterator::SetNode'::`2'::`local static guard' (7FF6B741F018h)],eax 00007FF6B62CB98A lea rcx,[`FlowEdgeIterator::SetNode'::`2'::empty (7FF6B741EFF8h)] 00007FF6B62CB991 call std::map,std::allocator > >::map,std::allocator > > (7FF6B6295AD0h) 00007FF6B62CB996 lea rcx,[`FlowEdgeIterator::SetNode'::`2'::`dynamic atexit destructor for 'empty'' (7FF6B666CD40h)] 00007FF6B62CB99D call atexit (7FF6B65C85E4h) 00007FF6B62CB9A2 nop 00007FF6B62CB9A3 movzx edx,di 00007FF6B62CB9A6 shl rdx,6 00007FF6B62CB9AA mov rax,qword ptr [iter] 00007FF6B62CB9AF add rdx,qword ptr [rax+58h] 00007FF6B62CB9B3 mov rax,qword ptr [rax+10h] 00007FF6B62CB9B7 movzx r8d,word ptr [rbx+rax+8] 00007FF6B62CB9BD mov rcx,qword ptr [rdx+28h] 00007FF6B62CB9C1 mov rax,qword ptr [rcx+8] 00007FF6B62CB9C5 jmp MultiCommodityFlow::Dijkstra+332h (7FF6B62CB9DAh) 00007FF6B62CB9C7 cmp word ptr [rax+18h],r8w 00007FF6B62CB9CC jae MultiCommodityFlow::Dijkstra+32Ch (7FF6B62CB9D4h) 00007FF6B62CB9CE mov rax,qword ptr [rax+10h] 00007FF6B62CB9D2 jmp MultiCommodityFlow::Dijkstra+332h (7FF6B62CB9DAh) 00007FF6B62CB9D4 mov rcx,rax 00007FF6B62CB9D7 mov rax,qword ptr [rax] 00007FF6B62CB9DA cmp byte ptr [rax+49h],0 00007FF6B62CB9DE je MultiCommodityFlow::Dijkstra+31Fh (7FF6B62CB9C7h) 00007FF6B62CB9E0 mov qword ptr [rsp+20h],rcx 00007FF6B62CB9E5 mov rax,qword ptr [rdx+28h] 00007FF6B62CB9E9 cmp rcx,rax 00007FF6B62CB9EC je MultiCommodityFlow::Dijkstra+354h (7FF6B62CB9FCh) 00007FF6B62CB9EE cmp r8w,word ptr [rcx+18h] 00007FF6B62CB9F3 jb MultiCommodityFlow::Dijkstra+354h (7FF6B62CB9FCh) 00007FF6B62CB9F5 lea rcx,[rsp+20h] 00007FF6B62CB9FA jmp MultiCommodityFlow::Dijkstra+35Ch (7FF6B62CBA04h) 00007FF6B62CB9FC mov qword ptr [rbp-70h],rax 00007FF6B62CBA00 lea rcx,[rbp-70h] 00007FF6B62CBA04 mov rcx,qword ptr [rcx] 00007FF6B62CBA07 cmp rcx,rax 00007FF6B62CBA0A je MultiCommodityFlow::Dijkstra+37Bh (7FF6B62CBA23h) 00007FF6B62CBA0C mov rax,qword ptr [rcx+28h] 00007FF6B62CBA10 mov rdx,qword ptr [rax] 00007FF6B62CBA13 mov qword ptr [rsp+70h],rdx 00007FF6B62CBA18 mov rax,qword ptr [rcx+28h] 00007FF6B62CBA1C mov qword ptr [rsp+78h],rax 00007FF6B62CBA21 jmp MultiCommodityFlow::Dijkstra+38Fh (7FF6B62CBA37h) 00007FF6B62CBA23 mov rcx,qword ptr [`FlowEdgeIterator::SetNode'::`2'::empty+8 (7FF6B741F000h)] 00007FF6B62CBA2A mov rax,qword ptr [rcx] 00007FF6B62CBA2D mov qword ptr [rsp+70h],rax 00007FF6B62CBA32 mov qword ptr [rsp+78h],rcx for (NodeID to = iter.Next(); to != INVALID_NODE; to = iter.Next()) { 00007FF6B62CBA37 lea rcx,[iter] 00007FF6B62CBA3C call FlowEdgeIterator::Next (7FF6B62C9A8Ch) 00007FF6B62CBA41 movzx r11d,ax 00007FF6B62CBA45 mov eax,0FFFFh 00007FF6B62CBA4A cmp r11w,ax 00007FF6B62CBA4E je 00007FF6B62CBD01 if (to == from) continue; // Not a real edge but a consumption sign. 00007FF6B62CBA54 cmp r11w,di 00007FF6B62CBA58 je 00007FF6B62CBCE0 Edge edge = this->job[from][to]; 00007FF6B62CBA5E mov r8,qword ptr [r15] 00007FF6B62CBA61 movzx edx,di 00007FF6B62CBA64 mov ecx,dword ptr [r8+2Ch] 00007FF6B62CBA68 imul ecx,edx 00007FF6B62CBA6B lea rcx,[rcx+rcx*2] 00007FF6B62CBA6F mov rax,qword ptr [r8+20h] 00007FF6B62CBA73 lea r9,[rax+rcx*8] 00007FF6B62CBA77 mov eax,dword ptr [r8+74h] 00007FF6B62CBA7B imul eax,edx 00007FF6B62CBA7E lea rcx,[rax+rax*2] 00007FF6B62CBA82 mov rax,qword ptr [r8+68h] 00007FF6B62CBA86 lea r10,[rax+rcx*4] 00007FF6B62CBA8A mov qword ptr [rbp-50h],r10 00007FF6B62CBA8E movzx r12d,r11w 00007FF6B62CBA92 lea r11,[r12+r12*2] 00007FF6B62CBA96 mov qword ptr [rbp-58h],r11 00007FF6B62CBA9A lea r8,[r12+r12*2] assert(edge.Distance() < UINT_MAX); uint capacity = edge.Capacity(); 00007FF6B62CBA9E mov r15d,dword ptr [r9+r8*8+4] if (this->max_saturation != UINT_MAX) { 00007FF6B62CBAA3 mov rax,qword ptr [rbp+60h] 00007FF6B62CBAA7 mov ecx,dword ptr [rax+8] 00007FF6B62CBAAA or ebx,0FFFFFFFFh 00007FF6B62CBAAD cmp ecx,ebx 00007FF6B62CBAAF je 00007FF6B62CBACA capacity *= this->max_saturation; 00007FF6B62CBAB1 imul ecx,r15d capacity /= 100; 00007FF6B62CBAB5 mov eax,51EB851Fh 00007FF6B62CBABA mul eax,ecx 00007FF6B62CBABC mov r15d,edx 00007FF6B62CBABF shr r15d,5 if (capacity == 0) capacity = 1; 00007FF6B62CBAC3 test r15d,r15d 00007FF6B62CBAC6 cmove r15d,esi } /* punish in-between stops a little */ uint distance = edge.Distance() + 1; 00007FF6B62CBACA mov r9d,dword ptr [r9+r8*8] 00007FF6B62CBACE inc r9d 00007FF6B62CBAD1 mov dword ptr [rsp+20h],r9d Tannotation *dest = static_cast(paths[to]); 00007FF6B62CBAD6 mov rax,qword ptr [r13] 00007FF6B62CBADA mov r12,qword ptr [rax+r12*8] 00007FF6B62CBADE mov qword ptr [rbp-60h],r12 if (dest->IsBetter(source, capacity, capacity - edge.Flow(), distance)) { 00007FF6B62CBAE2 mov eax,r15d 00007FF6B62CBAE5 sub eax,dword ptr [r10+r11*4+8]