what algorithm is being implemented here
Records *asdfg123 = initRecords(graph, startVertex);
while (!isEmpty(asdfg123->heap)) {
    HeapNode min = extractMin(asdfg123->heap);
    asdfg123->finished[min.id] = true;
    addTreeEdge(asdfg123, asdfg123->numTreeEdges, min.id, asdfg123->predecessors[min.id], min.priority);
    AdjList *neighbours = graph->vertices[min.id];
    while (neighbours != NULL) {
        if (asdfg123->finished[neighbours->edge->toVertex] == false) {
            int index = asdfg123->heap->arr[neighbours->edge->toVertex] if (neighbours->edge->weight < asdfg123->heap->arr[index].priority) {
                decreasePriority(asdfg123->heap, neighbours->edge->toVertex, neighbours->edge->weight);
                asdfg123->predecessors[neighbours->edge->toVertex] = min.id;
            }
        }
        neighbours = neighbours->next;
    }
}
return asdfg123->tree;