import pymem

pm = pymem.Pymem(43084)
base = 0x7ff6afc20000
igs = pm.read_ulonglong(base + 0x4430108)
ui_root = pm.read_ulonglong(igs + 0x2f0)
p1 = pm.read_ulonglong(ui_root + 0x48)
c7 = pm.read_ulonglong(p1 + 7 * 8)
print(f"Child [7] Minimap: {hex(c7)}")

# Sub elements
sub_p1 = pm.read_ulonglong(c7 + 0x48)
sub_p2 = pm.read_ulonglong(c7 + 0x50)
sub_cnt = (sub_p2 - sub_p1) // 8
print(f"Sub elements count: {sub_cnt}")

for i in range(sub_cnt):
    sub = pm.read_ulonglong(sub_p1 + i * 8)
    vt = pm.read_ulonglong(sub) - base
    sp1 = pm.read_ulonglong(sub + 0x48)
    sp2 = pm.read_ulonglong(sub + 0x50)
    scnt = (sp2 - sp1) // 8 if 0x100000000 <= sp1 <= sp2 else 0
    print(f"  Sub [{i}] at {hex(sub)} (VT RVA: {hex(vt)}): has {scnt} sub-children")
    for j in range(scnt):
        ch = pm.read_ulonglong(sp1 + j * 8)
        ch_vt = pm.read_ulonglong(ch) - base
        # read text or name
        txt = ""
        for off in range(0x40, 0x180, 8):
            sp = pm.read_ulonglong(ch + off)
            if 0x100000000 <= sp <= 0x7fffffffffff:
                try:
                    s = pm.read_bytes(sp, 64).decode("ascii", errors="ignore").split('\x00')[0]
                    if len(s) >= 3 and s.isprintable():
                        txt = s
                        break
                except: pass
        print(f"    Child [{j}] at {hex(ch)} (VT RVA: {hex(ch_vt)}): {txt}")
