def analyze_die_struct(die):
    name = (die_get_name(die) or '<anon>')
    offset = die.offset
    size = die_get_byte_size(die)
    if (not size):
        return
    if (name in kobjects):
        type_env[offset] = KobjectType(offset, name, size)
    elif (name in subsystems):
        type_env[offset] = KobjectType(offset, name, size, api=True)
    else:
        at = AggregateType(offset, name, size)
        type_env[offset] = at
        for child in die.iter_children():
            if (child.tag != 'DW_TAG_member'):
                continue
            data_member_location = child.attributes.get('DW_AT_data_member_location')
            if (not data_member_location):
                continue
            child_type = die_get_type_offset(child)
            member_offset = data_member_location.value
            cname = (die_get_name(child) or '<anon>')
            m = AggregateTypeMember(child.offset, cname, child_type, member_offset)
            at.add_member(m)
        return
def analyze_die_struct(die):
    name = (die_get_name(die) or '<anon>')
    offset = die.offset
    size = die_get_byte_size(die)
    if (not size):
        return
    if (name in kobjects):
        type_env[offset] = KobjectType(offset, name, size)
    elif (name in subsystems):
        type_env[offset] = KobjectType(offset, name, size, api=True)
    else:
        at = AggregateType(offset, name, size)
        type_env[offset] = at
        for child in die.iter_children():
            if (child.tag != 'DW_TAG_member'):
                continue
            data_member_location = child.attributes.get('DW_AT_data_member_location')
            if (not data_member_location):
                continue
            child_type = die_get_type_offset(child)
            member_offset = data_member_location.value
            cname = (die_get_name(child) or '<anon>')
            m = AggregateTypeMember(child.offset, cname, child_type, member_offset)
            at.add_member(m)
        return