=== lever-free bodies in main sharing a callee or global with func_800377D8 (21 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_800373D0 (src/800_c.c:1869) shares 4: D_80076248 D_80076250 D_80076251 D_80076298 ---
void func_800373D0(void) {
    StructA4E88 *sp2;
    u8          *sp3;
    Rsc16 *p;
    s32 i;

    sp2 = &D_800A4E88;
    sp3 = D_800BA320;

    p = D_80076248;
    i = 0;
    do {
        if ((&D_80076251)[i] != 0) {
            if (D_80076250[i] != 0) {
                if (p->unk00 & 0x3000) {
                    sp2->unk00 = p->unk00 & 0xFFF;
                    sp2->unk06 |= 0x20;
                    func_8002D7FC((s32) sp3);
                    if (!(p->unk00 & 0x1000)) {
                        func_8002FDE8(D_80065438[sp2->unk00].f0, sp3 + 0x7000);
                    }
                }
            }
        }
        p++;
        i += 0x10;
    } while ((s32) p < (s32) &D_80076298);
}

--- func_8003750C (src/800_c.c:1928) shares 4: D_8006AEF4 D_80076248 D_80076298 func_8003C4F0 ---
s32 func_8003750C(void) {
    s32 i;
    s32 val;
    s32 k;
    s32 h;

    switch (D_8007629C) {
    case 0:
        if (D_8006AEF4 & 2) {
            return 0;
        }
        D_8006AEF4 |= 2;
        D_8007629C = 1;
        /* fallthrough */
    case 1:
        if (D_8006AEF4 & 1) {
            if (func_8003C4F0(0) == 0) {
                return 0;
            }
        }
        D_8007629C = D_8007629C + 1;
        /* fallthrough */
    case 2:
        for (i = 0; i < 5; i++) {
            if (D_80076248[i].unk09 == 0) {
                continue;
            }
            val = D_80076248[i].unk00;
            k = D_80076248[i].unk0A;
            if (val & 0x6000) {
                continue;
            }
            h = D_800A4640[k].unk04;
            if (h != 0 && h != D_80064D4A[val].unk00) {
                D_800C532A[D_800A4640[k].unk08 * 2] = -1;
                D_800A4640[k].unk04 = 0;
                D_800A4640[k].unk08 = 0;
            }
            if (D_800A4640[k].unk10 != 0) {
                continue;
            }
            D_800A4640[k].unk10 = 1;
            D_800C5328[D_800A4640[k].unk00 * 2] = -1;
            if (D_800A4640[i].unk02 >= 0) {
                func_800415A8(D_800A4640[i].unk02);
                D_800A4640[i].unk02 = -1;
            }
            func_80031A98();
        }
        D_8007629C = 0;
        D_80076298 = 0;
        return 1;
    default:
        return 0;
    }
}

--- func_8002FC64 (src/800_b_2.c:2743) shares 3: D_8006AEF4 func_8003C498 func_8003C4F0 ---
int   func_8002FC64(int nbytes, u32 *src)
{
    s32 s2 = nbytes;
    u32 *s1 = src;
    s32 *s0;
    s32 result;

    if (D_8006AEF4 & 1) {
        if (func_8003C4F0(0) == 0) {
            func_80037D74();
            return 0;
        }
    }

    s0 = (s32 *)(&D_800A46C8);
    result = ((s32 (*)(s32))func_8003C498)(*s0);

    if (result != 0) {
        SpuWrite((s32)s1, s2);
        *s0 += s2;
        D_8006AEF4 |= 1;
        return 1;
    }

    func_80037D74();
    return 0;
}

--- func_800304C8 (src/800_b_2.c:3175) shares 2: D_8006AEF4 func_8003C4F0 ---
s32 func_800304C8(void) {
    s16 *p;

    if (D_8006AEF4 & 1) {
        if (func_8003C4F0(0) != 0) {
            D_8006AEF4 &= 0xFE;
        }
    } else {
        p = &D_800A46CC;
        (*p)++;
    }
    return 0;
}

--- func_8003775C (src/800_c.c:1992) shares 2: D_8006AEF4 func_8003C4F0 ---
int func_8003775C(void) {
    u32 t;

    if (D_80076242_.v != 0) {
        if (func_8003C4F0(0) == 0) {
            return 0;
        }
        D_80076242_.v = 0;
        t = D_8006AEF4;
    } else {
        t = D_8006AEF4;
    }
    D_8006AEF4 = t & 0xFC;
    func_800373D0();
    return 1;
}

--- func_80037368 (src/800_c.c:1827) shares 2: D_80076250 D_80076251 ---
void *func_80037368(int *out) {
    int count = 0;
    u8 *ptr = D_80076220;
    int i;

    for (i = 0; i < 0x50; i += 0x10) {
        *ptr = 0;
        ptr++;

        if ((&D_80076251)[i] != 0) {
            D_80076220[count] = D_80076250[i];
            count++;
        }
    }

    *out = count;
    return D_80076220;
}

