=== lever-free bodies in ov_SC06_018 sharing a callee or global with func_80187DD0 (51 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80187AEC (src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:2992) shares 2: func_8012C218 func_8012E8A8 ---
void func_80187AEC(s32 param_1)
{
    s32 iVar;
    s32 t;
    u16 st;
    u16 uVar1;
    s32 pad[1];   /* see key (2): forces the 0x20 frame — never referenced */

    if (0xf < *(s16 *)(param_1 + 0xA)) {
        func_8012C218((void *)param_1);
        return;
    }
    switch (*(u16 *)(param_1 + 0x34)) {
    case 0:
        *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
            *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + *(u16 *)(param_1 + 0xFC);
        *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) =
            *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + *(u16 *)(param_1 + 0xFE);
        if ((((s32 (*)(s32, s32))func_8012CC40)(
                 param_1,
                 ((*(u16 *)(param_1 + 0x70) & 0xF) * 8) + (s32)&D_801B5400) &
             0x2000) == 0) {
            return;
        }
        iVar = *(s32 *)(param_1 + 0x1C) + 1;
        *(s32 *)(param_1 + 0x1C) = iVar;
        if (iVar >= 4) {
            if ((*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) & 0xFFFU) > 0x800U) {
                *(u16 *)(param_1 + 0x102) = 0xC00;
            } else {
                *(u16 *)(param_1 + 0x102) = 0x400;
            }
            t = *(u16 *)(param_1 + 0x70) & 0xF;
            if (t < 4 && t != 0) {
                *(u16 *)(param_1 + 0x102) = *(u16 *)(param_1 + 0x102) + 0x400;
            }
            *(s32 *)(param_1 + 0x1C) = 0x1E;
            *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
        } else {
            *(s32 *)(param_1 + 0x14) = -(0x80000 / iVar);
            func_80143B6C(param_1, 1);
        }
        return;
    case 1:
        iVar = func_8012B608((s32)*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10),
                             (s32)*(s16 *)(param_1 + 0x102), 4);
        *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
            *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + iVar;
        if (func_8012BEE8(param_1) == 0) {
            return;
        }
        st = *(u16 *)(param_1 + 0x34);
        *(s32 *)(param_1 + 0x1C) = 0x1E;
        *(u16 *)(param_1 + 0x34) = st + 1;
        if ((*(s16 *)(param_1 + 0x70) & 0x8000) != 0) {
            *(u16 *)(param_1 + 0x34) = st + 2;
        } else if ((*(s16 *)(param_1 + 0x70) & 0xF) == 4) {
            *(u16 *)(param_1 + 0x34) = 4;
            *(s32 *)(param_1 + 0x1C) = 0x1E;
        }
        return;
    case 2:
        func_8012E8C4((u8 *)param_1);
        if (func_8012BEE8(param_1) == 1) {
            func_8012C218((void *)param_1);
        }
        return;
    case 3:
        if (*(s16 *)(*(s32 *)(param_1 + 0x64) + 0x36) != *(s16 *)(param_1 + 0x10A) &&
            *(s32 *)(param_1 + 0xE0) == 0) {
            *(s32 *)(param_1 + 0x1C) = 0x1E;
            uVar1 = 2;
            if ((*(u16 *)(param_1 + 0x70) & 0xF) == 4) {
                uVar1 = 4;
            }
            *(u16 *)(param_1 + 0x34) = uVar1;
            *(s32 *)(param_1 + 0xE0) = 1;
        }
        return;
    case 4:
        if (func_8012BEE8(param_1) != 0) {
            *(s32 *)(param_1 + 0x1C) = 0xA;
            *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
            func_8012E8A8((u8 *)param_1);
            func_80189000(param_1, 1);
        }
        return;
    case 5:
        if (func_8018944C(param_1, 0x60, 0xA0) == 1) {
            func_8012C218((void *)param_1);
        }
        return;
    }
}

--- 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);
    }
}

--- func_80186894 (src/ov_SC06_018/ov_SC06_018_jr_80186270.c:3174) shares 1: func_8012E8A8 ---
void func_80186894(s32 a0) {
    s32 s0 = a0;
    *(u16 *)(s0 + 0x5C) = 0;
    func_8012E8A8(s0);
    *(s32 *)(s0 + 0x1C) = 0xA;
    func_80189000(s0, (*(u16 *)(s0 + 0x70) & 0xF) + 2);
}

--- func_80188D54 (src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:3786) shares 1: func_8012E8A8 ---
void func_80188D54(void *a0)
{
    ((void (*)(void *))func_8012E8A8)(a0);
    *(u32 *)(a0 + 0x1C) = 0xA;
    *(u16 *)(a0 + 0x5C) = 0;
    *(u16 *)(a0 + 0x2) = 0xA;
}

--- func_80142778 (src/shared/ov/func_80142778.h:4) shares 1: func_8012C218 ---
void func_80142778(u8 *a1) {
    u8 *a0 = *(u8 **)(a1 + 0x20);
    *(u16 *)(a0 + 0x18) = *(u16 *)(a0 + 0x18) - 0x800;
    *(u16 *)(a0 + 0x1A) = *(u16 *)(a0 + 0x1A) - 0x800;
    *(u16 *)(a1 + 0xA) = *(u16 *)(a1 + 0xA) + 0x10;
    if (*(s16 *)(a0 + 0x18) <= 0) {
        func_8012C218(a1);
    }
}

--- func_8012C098 (src/shared/ov/func_8012C098.h:4) shares 1: func_8012C218 ---
void func_8012C098(void *param_1)
{
    int iVar1;
    iVar1 = *(int *)((char *)param_1 + 0x68);
    if ((iVar1 != 0) && ((*(short *)((char *)param_1 + 0x72) & 0x8000) != 0)) {
        *(unsigned short *)(iVar1 + 10) = *(unsigned short *)(iVar1 + 10) & 0x7fff;
    }
    func_8012C218(param_1);
    return;
}

