=== lever-free bodies in ov_SC04_015 sharing a callee or global with func_80180EDC (7 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80180F18 (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:6876) shares 1: D_80078EB1 ---
s32 func_80180F18(s32 arg0, s32 arg1) {

    extern u8 D_80078EB1;
    return (D_80078EB1 >= arg0) && (D_80078EB1 < arg1);
}

--- func_80180E30 (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:6815) shares 1: D_80078EB1 ---
void func_80180E30(void *a0) {

    extern u16 D_80078EAC;
    extern u8 D_80078EB1;
    extern short D_800BA2BA;
    u16 idx1 = D_80078EAC;
    u8 idx2 = D_80078EB1;
    s32 ptr = *(s32 *)((char *)a0 + 0xD0);
    s16 offset = *(s16 *)((char *)ptr + 0x10);

    *(short *)((char *)&D_800BA2BA + (offset << 2)) = idx2 + (idx1 * 24);
}

--- func_80183C3C (src/ov_SC04_015/ov_SC04_015_jr_801820DC.c:4314) shares 1: D_80078EB1 ---
void func_80183C3C(void)
{
    s32 i;

    D_801C923C = (((D_80078EB1 << 4) - D_80078EB1) << 2) + D_80078EB0;
    for (i = 0; i < 6; i++) {
        *(s32 *)(D_801C90A0[i] + 4) |= 0x80000000;
    }
    for (i = 2; i < 18; i++) {
        func_80182E1C((void *)i);
    }
    func_801837C4();
    if (D_801C9254 != 0) {
        D_801C9254 -= 1;
    }
}

--- func_80180618 (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:6313) shares 1: D_80078EB1 ---
void func_80180618(void *arg0) {

    extern u8 D_80078EB1;
    extern Ent_8017D6EC_80180618 D_801C9010[];
    s32 i;

    if (D_80078EB1 == 7) {
        for (i = 0; i < 4; i++) {
            Ent_8017D6EC_80180618 *p = &D_801C9010[i];

            p->unk16 = i;
            func_80180934(p);
            if (i & 1) {
                p->unk1C = 1;
            }
        }
        func_8012AD50(arg0);
    }
}

--- func_80180CCC (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:6755) shares 1: D_80078EB1 ---
s32 func_80180CCC(s32 a0) {

    extern u8 D_80078E78[];
    extern u8 D_80078EB1;
    extern u16 D_80078EAC;
    extern s32 D_801C9250;
    extern s16 D_801B28F0[];
    extern s16 D_801B2924[];
    extern s32 D_801B27F0[][8];
    u8 *p;
    s32 s0;
    s32 t;
    s32 q;
    s32 r;
    s32 b;
    s32 c;
    s32 idx;

    p = D_80078E78;
    s0 = D_801B28F0[*(s16 *)(*(s32 *)(a0 + 0xD0) + 0x10)];
    if (s0 == -1) {
        D_801C9250 = 0;
        return 0;
    }

    t = func_80180E70(a0);
    q = t / 24;
    r = t % 24;
    b = D_80078EB1;
    c = D_80078EAC;

    if (t == 0) {
        idx = D_801B2924[b] - 1;
    } else if (c - q >= 5) {
        idx = 7;
    } else if (c == q && b - r >= 2) {
        idx = 6;
    } else {
        idx = p[0x39];
        idx = D_801B2924[idx] - 1;
    }

    ((struct { s32 w; } *)&D_801C9250)->w = 1;
    return D_801B27F0[idx][s0];
}

--- func_801621CC (src/ov_SC04_015/ov_SC04_015_jr_8015C32C.c:3688) shares 1: D_80078EB1 ---
s32 func_801621CC(s32 arg0) {
    s32 s0 = arg0;       /* $s0: arg0, crosses the call */
    u8 *s1 = D_80078E78; /* $s1: base, hoisted for the loop */
    s32 i;
    u32 a2;
    s32 d;                                       /* $a0: natural alloc; load via $v0 temp */
    s32 v, last, hi, lo;
    char pad[8];                                 /* phantom 8B local -> frame 0x28 (vars=8) */

    a2 = func_800291DC(8);
    if ((a2 & 0x8000) == 0) {
        return 0;
    }
    a2 &= 0x7FFF;
    if (((a2 >> 8) == D_80078EB1) && ((a2 & 0xFF) <= (u32)D_80078EB0)) {
        return (s32)&D_80187074;
    }
    d = s1[0x39] - 1;
    i = 0;
    if (s0 <= 0) {
        return 0;
    }
    hi = (a2 >> 8) & 0xFF;
    last = s0 - 1;
    lo = a2 & 0xFF;
    do {
        if ((s8)d < 0) {
            d = 0x17;
        }
        v = (s8)d;
        if (hi == v) {
            if (i != last) {
                return (s32)&D_80187074;
            }
            i++;
            if ((u32)s1[0x38] < (u32)lo) {
                return (s32)&D_80187074;
            }
            goto bot;
        }
        i++;
    bot:
        do { d--; } while (0);
    } while (i < s0);
    return 0;
}

