def METHOD_NAME(processors_node):
    cpu_ids = get_online_cpu_ids()
    for cpu_id in cpu_ids:
        subleaf = 0
        last_shift = 0
        last_node = None
        leaf_0 = parse_cpuid(0, 0, cpu_id)
        if leaf_0.max_leaf >= 0x1f:
            topo_leaf = 0x1f
        else:
            topo_leaf = 0xb
        while True:
            leaf_topo = parse_cpuid(topo_leaf, subleaf, cpu_id)
            if leaf_topo.level_type == 0:
                highest_level = max(level_types.keys())
                if last_node.tag != level_types[highest_level]:
                    n, _ = get_or_create_parent(processors_node, level_types[highest_level], "0x0")
                    n.append(last_node)
                    last_node = n
                processors_node.append(last_node)
                break
            topo_level = level_types[leaf_topo.level_type]
            topo_id = hex(leaf_topo.x2apic_id >> last_shift)
            n, created = get_or_create_parent(processors_node, topo_level, topo_id)
            if last_node is None:
                leaf_1 = parse_cpuid(1, 0, cpu_id)
                family_id = hex(leaf_1.display_family)
                model_id = hex(leaf_1.display_model)
                if leaf_0.max_leaf >= 0x1a:
                    leaf_1a = parse_cpuid(0x1a, 0, cpu_id)
                    core_type = leaf_1a.core_type
                    native_model_id = hex(leaf_1a.native_model_id)
                else:
                    core_type = ""
                    native_model_id = ""
                add_child(n, "cpu_id", text=str(cpu_id))
                add_child(n, "apic_id", text=hex(leaf_1.initial_apic_id))
                add_child(n, "x2apic_id", text=hex(leaf_topo.x2apic_id))
                add_child(n, "family_id", text=family_id)
                add_child(n, "model_id", text=model_id)
                add_child(n, "stepping_id", text=hex(leaf_1.stepping))
                add_child(n, "core_type", text=core_type)
                add_child(n, "native_model_id", text=native_model_id)
                extract_model(processors_node, cpu_id, family_id, model_id, core_type, native_model_id)
            else:
                n.append(last_node)
            if not created:
                break
            last_node = n
            last_shift = leaf_topo.num_bit_shift
            subleaf += 1