1 ; heapify heap, heap_size, i, child, tmp1, tmp2, tmpd
3 %define %%heap %1 ; qword ptr
4 %define %%heap_size %2 ; dword
6 %define %%child %4 ; dword
7 %define %%tmp1 %5 ; qword
8 %define %%tmp2 %6 ; qword
9 %define %%tmpd %7 ; dword
12 lea %%child, [%%i + %%i]
13 cmp %%child, %%heap_size
15 mov %%tmp1, [%%heap + %%child]
17 mov %%tmp2, [%%heap + %%child) + 8]
18 lea %%child, [%%child + 1]
21 cmovbe %%child, %%tmpd
23 ; child is correct, %%tmp2 = heap[child]
24 mov %%tmp1, [%%heap + %%i]
27 mov [%%heap + %%i], %%tmp2
28 mov [%%heap + %%child], %%tmp1
34 ; heapify heap, heap_size, i, child, tmp1, tmp2, tmpd, tmp3
36 %define %%heap %1 ; qword ptr
37 %define %%heap_size %2 ; qword
38 %define %%i %3 ; qword
39 %define %%child %4 ; qword
40 %define %%tmp1 %5 ; qword
41 %define %%tmp2 %6 ; qword
42 %define %%tmpd %7 ; qword
46 lea %%child, [%%i + %%i]
48 ; add %%child, %%child
49 cmp %%child, %%heap_size
51 mov %%tmp1, [%%heap + %%child*8]
52 mov %%tmp2, [%%heap + %%child*8 + 8]
53 mov %%tmp3, [%%heap + %%i*8]
60 ; child is correct, tmp1 = heap[child]
64 mov [%%heap + %%i*8], %%tmp1
65 mov [%%heap + %%child*8], %%tmp3