import pymem

pm = pymem.Pymem(43084)
base = 0x7ff6afc20000
igs = pm.read_ulonglong(base + 0x4430108)
area = pm.read_ulonglong(igs + 0x290)
if not (0x10000 <= area <= 0x7fffffffffff):
    area = pm.read_ulonglong(igs + 0x2a0)

p1 = pm.read_ulonglong(area + 0x938)
p2 = pm.read_ulonglong(area + 0x938 + 8)
cnt = (p2 - p1) // 8

for i in range(cnt):
    ptr = pm.read_ulonglong(p1 + i * 8)
    if ptr == 0: continue
    print(f"\nObject [{i}] at {hex(ptr)}:")
    for off in range(0, 0x80, 8):
        v = pm.read_ulonglong(ptr + off)
        extra = ""
        if 0x100000000 <= v <= 0x7fffffffffff:
            try:
                s = pm.read_bytes(v, 64).decode("ascii", errors="ignore").split('\x00')[0]
                if len(s) >= 3 and s.isprintable():
                    extra = f" -> \"{s}\""
            except: pass
        f1 = pm.read_float(ptr + off)
        f2 = pm.read_float(ptr + off + 4)
        print(f"  +0x{off:x}: {hex(v)}{extra} | floats({round(f1,2)}, {round(f2,2)})")
