=== lever-free bodies in main sharing a callee or global with func_8003324C (21 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80031CC8 (src/800_b_2.c:4266) shares 2: D_800A46E8 func_80034650 ---
void func_80031CC8(void) {
    extern u16 D_800A46E8[];
    extern void func_8003350C(s32 a0, s32 a1);
    extern void func_80034650(u8 *a0, s32 a1);
    u8 *p;
    s32 i;

    p = (u8 *)D_800A46E8;
    i = 0;
    do {
        switch (*(u16 *)p & 0x3F) {
        case 1:
            if (p[0xA] != 0) {
                func_8003350C(i, 1);
            }
            break;
        case 5:
            func_80034650(p, 0);
            break;
        }
        i += 1;
        p += 0x54;
    } while (i < 8);
}

--- func_800346D0 (src/800_b_2.c:6925) shares 2: D_800A46E8 func_80030D80 ---
void func_800346D0(s32 arg0) {
    S54 *p;
    S54 *q;
    Ent30D80 *e;
    Ent30D80 *ebase;
    s32 i;
    s32 j;
    s32 lo;
    s32 hi;

    p = (S54 *)D_800A46E8;
    i = 0;
    lo = (arg0 << 16) >> 16;
    hi = arg0 >> 16;
    ebase = (Ent30D80 *)((u8 *)D_800A46E8 + 0x2A0);
    q = (S54 *)((u8 *)D_800A46E8 + 6);
    do {
        if (*(u16 *)p == 5 && *((u16 *)q - 1) == lo && (hi == 0 || hi == *(u16 *)q)) {
            j = 0;
            e = ebase;
            do {
                if (p->flg[j] != 0) {
                    func_80030D80(e, 0);
                }
                j++;
                e++;
            } while (j < 8);
            *(u16 *)p = 0;
        }
        i++;
        q++;
        p++;
    } while (i < 8);
}

--- func_80034314 (src/800_b_2.c:6768) shares 2: D_800A46E8 func_80034650 ---
s32 func_80034314(u32 arg0, u8 *p, u32 arg2) {
    u32 flags;
    Snd54 *e;
    Rec12 *rec;
    u8 *q;
    s16 *pa;
    s32 idx;
    s32 ret;
    s32 i;
    s32 j;
    s32 b1;
    u32 x;
    u32 y;

    y = arg0 >> 16;
    flags = arg2;
    x = arg0;
    b1 = p[1];
    if (b1 == 0) {
        rec = &D_80068A54[p[3]];
    } else {
        if (D_800A4EE8 == 0) {
            return 0;
        }
        if (D_800A4EF0 != b1) {
            return 0;
        }
        rec = *(Rec12 **)((u8 *)D_800A4EE8 + 0x18) + p[3];
    }

    idx = func_800348A8(arg0);
    if (idx != 0) {
        ret = idx;
        idx--;
        e = (Snd54 *)((u8 *)D_800A46E8 + idx * 0x54);
        if (flags & 0x1000) {
            e->unk1C[0].unk06 = 1;
            e->unk1C[0].unk02 = 0x100;
            e->unk1C[0].unk04 = ((s32)(flags & 0x7F) * 0x3FFF) >> 7;
            if (flags & 0x2000) {
                e->unk38 = D_8006AED8[(flags >> 8) & 0xF];
            } else {
                e->unk38 = 0;
                e->unk39 = 0;
            }
            return ret;
        }
        if (e->unk08 != 0) {
            return 0;
        }
        func_80034650(e, 0);
    } else {
        idx = func_8003310C(rec->unk04);
        if (idx == 0) {
            return 0;
        }
        ret = idx;
        idx--;
        e = (Snd54 *)((u8 *)D_800A46E8 + idx * 0x54);
    }

    e->unk37 = rec->unk08;
    e->unk34 = b1;
    e->unk0C = rec->unk00;
    e->unk02 = rec->unk04;
    e->unk10 = e->unk0C;
    e->unk04 = x;
    e->unk06 = y;
    e->unk14 = 1;
    e->unk17 = p[2];
    e->unk16 = 0;
    e->unk18 = 0x7FFF;
    e->unk08 = rec->unk06;
    e->unk50 = 0;
    e->unk52 = 0;

    if (rec->unk08 & 0x10) {
        e->unk48 = 1;
    } else {
        e->unk48 = 0;
    }

    if (rec->unk08 & 4) {
        e->unk1A = 0x400;
    } else if (rec->unk08 & 8) {
        e->unk1A = 0x200;
    } else {
        e->unk1A = 0x5F;
    }
    e->unk36 = 0;

    pa = &e->unk1C[0].unk00;
    for (i = 0; i < 3; i++, pa = (s16 *)((u8 *)pa + 8)) {
        pa[1] = 0x100;
        *((u8 *)pa + 6) = 0;
        if (i != 0) {
            pa[0] = 0x3FFF;
            pa[2] = 0x3FFF;
        } else if (flags & 0x1000) {
            pa[0] = ((flags & 0x7F) * 0x3FFF) >> 7;
            pa[2] = ((flags & 0x7F) * 0x3FFF) >> 7;
            if (flags & 0x2000) {
                u8 tv = D_8006AED8[(flags >> 8) & 0xF];
                e->unk38 = tv;
                e->unk39 = tv;
            }
        } else {
            pa[0] = 0x3FFF;
            pa[2] = 0x3FFF;
            e->unk38 = 0;
            e->unk39 = 0;
        }
    }

    q = e->unk3A;
    for (j = 7; j >= 0; j--) {
        *q++ = 0;
    }

    e->unk00 = 5;
    return ret;
}

--- func_800342E8 (src/800_b_2.c:6687) shares 1: D_800A46E8 ---
void func_800342E8(u8 *a0, s32 a1) {
    u32 t = a1 * 84 + (u32)D_800A46E8;
    *(u8 *)(t + (u32)a0 + 0x3A) = 0;
}

--- func_800331D4 (src/800_b_2.c:5624) shares 1: D_800A46E8 ---
s32 func_800331D4(s32 arg0) {
    u16 *p;
    s32 i;

    p = D_800A46E8;
    for (i = 0; i < 8; i++, p += 0x2A) {
        if ((*p & 0x3F) == 1 && p[2] == (arg0 & 0xFFFF) && (((u32)arg0 >> 16) == 0 || ((u32)arg0 >> 16) == p[3])) {
            return ++i;
        }
    }
    return 0;
}

--- func_800347C8 (src/800_b_2.c:6975) shares 1: D_800A46E8 ---
void func_800347C8(s32 arg0) {
    Sl *e;
    s32 i;

    e = (Sl *)D_800A46E8;
    for (i = 0; i < 8; i++, e++) {
        if (e->state == 5 && e->id == (s16)arg0 &&
            ((arg0 >> 16) == 0 || (arg0 >> 16) == e->group)) {
            e->active = 1;
        }
    }
}

