=== lever-free bodies in ov_SC06_008 sharing a callee or global with func_8017FB10 (49 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80183BF4 (src/ov_SC06_008/ov_SC06_008_jr_8017C294.c:7150) shares 3: func_8012B23C func_8012C218 func_8012CBCC ---
void func_80183BF4(s32 a0)
{
    s32 s0 = a0;
    s32 ret;
    u16 val;

    if (*(u16 *)(s0 + 2) == 0) {
        *(u8 *)(s0 + 0xC0) = 1;
        *(u16 *)(s0 + 2) = *(u16 *)(s0 + 2) + 1;
        func_8012B23C(s0);
        *(s32 *)(s0 + 0x1C) = 1;
        return;
    }

    *(s32 *)(s0 + 0xDC) = *(s32 *)(s0 + 0x14);
    ret = ((s32 (*)(s32))func_8012CBCC)(s0);
    if (ret != 0 && (ret & 0x6000) != 0) {
        s32 cnt = *(s32 *)(s0 + 0x1C) - 1;
        *(s32 *)(s0 + 0x1C) = cnt;
        if (cnt == 0) {
            goto L80183CF4;
        }
        *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0xDC) >> 2;
    }

    val = *(u16 *)(s0 + 0xFC) + 1;
    *(u16 *)(s0 + 0xFC) = val;
    if ((val & 1) != 0) {
        s32 np = (s32)func_8012913C(0x23);
        if (np != 0) {
            *(u16 *)(np + 6) = *(u16 *)(s0 + 6);
            *(u16 *)(np + 0xA) = *(u16 *)(s0 + 0xA);
            {
                u16 t = *(u16 *)(s0 + 0xE);
                *(u32 *)(np + 0x18) = 0;
                *(u32 *)(np + 0x14) = 0;
                *(u32 *)(np + 0x10) = 0;
                *(u16 *)(np + 0x34) = 0x3000;
                *(u16 *)(np + 0xE) = t;
            }
        }
    }

    if (*(s16 *)(s0 + 0xA) < 0x20) {
        return;
    }

L80183CF4:
    func_8012C218((void *)s0);
}

--- func_8018037C (src/ov_SC06_008/ov_SC06_008_jr_8017C294.c:4875) shares 2: func_8012B14C func_8012C218 ---
void func_8018037C(s32 a0)
{
    s32 v0;

    if (*(s16 *)(a0 + 6) == *(s16 *)(a0 + 0xDE) &&
        *(s16 *)(a0 + 0xE) == *(s16 *)(a0 + 0xE2)) {
        func_8012C218((void *)a0);
    } else {
        *(s32 *)(a0 + 0xDC) = *(s32 *)(a0 + 4);
        *(s32 *)(a0 + 0xE0) = *(s32 *)(a0 + 0xC);
        func_8012B14C(a0, (s32)&D_8019C954);
        func_8012AD80(a0);

        if (func_8012D5E4(a0, (s32)&D_8019C960, (s32)&D_800D3918, 0x30) != 0) {
            func_8012C218((void *)a0);
        } else {
            v0 = *(s32 *)(a0 + 0x1c) - 1;
            *(s32 *)(a0 + 0x1c) = v0;
            if (v0 == 0) {
                func_8012C218((void *)a0);
            } else {
                func_8012B370(a0);
            }
        }
    }
}

--- func_80181220 (src/ov_SC06_008/ov_SC06_008_jr_8017C294.c:5474) shares 2: func_8012B23C func_8012C218 ---
void func_80181220(int param_1) {

    extern u8 D_8019EE50[];
    extern u8 D_8019ED94[];
    extern u8 D_8019ED54[];
    extern u8 D_8019ED9C[];
    extern u8 D_8019ED74[];
    extern u8 D_801A30BC[];
    extern u8 D_801A636C[];
    extern u8 D_8019EE90[];
    extern u8 D_801A61D4[];
    extern u8 D_801A625C[];
    extern u8 D_801A62E4[];
    int iVar1;

    iVar1 = func_8012C354(param_1, D_8019EE50);
    if (iVar1 != 0) {
        if (*(short *)(param_1 + 0x70) != 0) {
            func_800599B8(D_8019ED94, D_8019ED54);
            func_800599B8(D_8019ED9C, D_8019ED74);
            func_8001C214(*(int *)(param_1 + 0x20), D_801A30BC);
        }
        *(u8 *)(param_1 + 0xc0) = 1;
        *(int *)(param_1 + 0xb4) = 0xffffdfde;
        func_80143970(param_1);
        func_8012B030(param_1);
        *(short *)(param_1 + 0xae) = 0x2100;
        func_8012A828(param_1, D_801A636C);
        *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1;
        func_8012B23C(param_1);
        *(u32 *)(param_1 + 0xc4) = *(u32 *)(param_1 + 0xc4) | 2;
        iVar1 = func_8012C658(0x26f, (int)*(short *)(param_1 + 0x70), param_1);
        if (iVar1 != 0) {
            *(int *)(param_1 + 0xcc) = iVar1;
            iVar1 = func_8012C658(0x270, (int)*(short *)(param_1 + 0x70), param_1);
            if (iVar1 != 0) goto big;
            func_8012C218(*(int *)(param_1 + 0xcc));
        }
        func_8012CAE4(param_1);
    }
    return;
big:
    *(int *)(param_1 + 0xd0) = iVar1;
    *(u32 *)(param_1 + 0xbc) = (u32)D_8019EE90;
    *(u16 *)(*(int *)(param_1 + 0x20) + 0x2c) =
        *(u16 *)(*(int *)(param_1 + 0x20) + 0x2c) | 0x10;
    *(short *)(*(int *)(param_1 + 0x20) + 0x18) = 0x2400;
    *(short *)(*(int *)(param_1 + 0x20) + 0x1a) = 0x2400;
    *(short *)(*(int *)(param_1 + 0x20) + 0x1c) = 0x2400;
    *(u16 *)(param_1 + 2) = 8;
    func_8012A828(param_1, D_801A61D4);
    func_8012A828(*(int *)(param_1 + 0xcc), D_801A625C);
    func_8012A828(*(int *)(param_1 + 0xd0), D_801A62E4);
    return;
}

--- func_80131B14 (src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c:1692) shares 2: func_8012B23C func_8012B2CC ---
void func_80131B14() {
    extern void func_8002A520(void *);
    extern void func_8002A790(void *);
    extern u8 D_80185CD4;

    u8 *a0v;
    u8 *p = a0v;


    s32 e = *(u8 *)(p + 0x5E);

    if (*(s16 *)(p + 0x60) != 0) {
        if (e == 0x1D) {
            *(s16 *)(p + 0x82) = 0;
            *(s16 *)(p + 0x7C) = *(u16 *)(p + 0x06);
            *(s16 *)(p + 0x7E) = *(u16 *)(p + 0x0A);
            *(s16 *)(p + 0x80) = *(u16 *)(p + 0x0E);
        }
        {
            s32 dec;
            s32 q = *(s32 *)(p + 0x78);
            if (q != 0) {
                dec = ((s32)*(s16 *)(p + 0x60) * (s32)*(s16 *)(q + 0x30)) >> 12;
                if (dec <= 0) dec = 1;
            }
            *(u16 *)(p + 0x76) = *(u16 *)(p + 0x76) - dec;
        }
        ((void (*)(void *))func_8016AA50)(p);
        if (*(u16 *)(p + 0x82) & 1) {
            ((void (*)(void *))func_8016B428)(p);
            ((void(*)(void *))func_80019064)(&D_80185CD4);
        }
    }

    *(u16 *)(p + 0x5C) = *(u16 *)(p + 0x5C) & 0xFFFE;

    if (e != 0x1D) {
        if (*(u8 *)(p + 0xC8)) func_8002A520(p);
        if (*(u8 *)(p + 0xC9)) func_8002A790(p);
    }

    if (*(s16 *)(p + 0x76) <= 0) *(s16 *)(p + 0x5C) = 0;

    {
        s32 r = *(s32 *)(p + 0x20);
        *(s16 *)(r + 0x12) = (*(u16 *)(p + 0x62) + 0x800) & 0xFFF;
        {
            s32 r2 = *(s32 *)(p + 0x20);
            *(s16 *)(r2 + 0x14) = 0;
            *(s16 *)(r2 + 0x10) = 0;
        }
    }

    ((void (*)(void *))func_8012B2CC)(p);
    ((void (*)(void *))func_8012B23C)(p);
}

--- func_80185394 (src/ov_SC06_008/ov_SC06_008_jr_8017C294.c:8339) shares 1: func_8012C218 ---
    s32 func_80185394(void * arg0)
    {
        *(short *)((char *)arg0 + 0x2) = 2;
        ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc));
    }

--- func_801439C0 (src/shared/ov/func_801439C0.h:5) shares 1: func_8012C218 ---
void func_801439C0(u8 *a0) {
    if (a0 != 0) {
        func_80016714(*(void **)(a0 + 0xCC), 0x38);
        func_8012C218(a0);
    }
}

