import struct,bisect
exec(open('/tmp/claude-0/-root-ants/f0a0d69c-fbe4-4887-8c0d-a5302a0da398/scratchpad/x86bridge.py').read().split("print('\\n--- registration")[0])

CODEREG=0x1d3728c
mpCount=u32(CODEREG); mpPtr=u32(CODEREG+4)
MP=struct.unpack_from('<%dI'%mpCount,B,va2off(mpPtr))
sm=open(SYM,'rb').read(); n,=struct.unpack_from('<I',sm,0)
size={}
for i in range(n):
    a,s=struct.unpack_from('<QI',sm,4+i*12); size[a]=s
print('methodPointers=0x%x count=%d ; symbolmap=%d'%(mpPtr,mpCount,n))

def maddr(mi): return MP[mi] if 0<=mi<mpCount else 0
# find Gu3.Debug
for ti,t in enumerate(TYPES):
    ns,nm=S(t[1]),S(t[0])
    if ns=='Gu3' and nm=='Debug':
        print('\nGu3.Debug typeIndex=%d methods=%d'%(ti,t[20]))
        for k in range(t[20]):
            m=METHODS[t[13]+k]
            a=maddr(m[6]); sz=size.get(a,0)
            mn=S(m[0])
            if mn.startswith(('Log','Info','ILog')):
                print('  %-14s params=%d  @0x%08x  size=%-5d %s'%(mn,m[15],a,sz,'<-- STUB' if sz<=8 else ''))
        break
