=== lever-free bodies in ov_SC04_011 sharing a callee or global with func_8018CCB8 (33 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_8014462C (src/shared/ov/func_8014462C.h:7) shares 2: func_8012AD80 func_8012C218 ---
void func_8014462C(u8 *a0) {
    u8 *s1 = *(u8 **)(a0 + 0xCC);
    func_8012AD80((s32)a0);
    *(u16 *)(s1 + 8) = *(u16 *)(a0 + 6);
    *(u16 *)(s1 + 0xA) = *(u16 *)(a0 + 0xA);
    *(u16 *)(s1 + 0xC) = *(u16 *)(a0 + 0xE);
    if (func_80128ED8(s1, a0 + 0xD0)) {
        func_80016714(s1, 0x38);
        func_8012C218(a0);
    }
}

--- func_8018C64C (src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13665) shares 2: func_8012AD80 func_8012C218 ---
void func_8018C64C(s32 param_1)
{
    switch (*(u16 *)(param_1 + 0x34)) {
    case 0:
        func_8012AD80(param_1);
        func_80189478(param_1);
        if (func_801893D4(param_1) != 0) {
            *(s32 *)(param_1 + 0x1C) = 0x10;
            *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1;
        }
        break;
    case 1:
        if (((s32 (*)(s32))func_8012BEE8)((s32)param_1) != 0) {
            func_8012C218((void *)param_1);
        } else if (*(s32 *)(param_1 + 0x1C) & 1) {
            *(s32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x80000000;
        } else {
            *(s32 *)(*(s32 *)(param_1 + 0x20) + 4) &= 0x7FFFFFFF;
        }
        break;
    }
}

--- func_80144458 (src/ov_SC04_011/ov_SC04_011_jr_80140608.c:2236) shares 2: func_8012AD80 func_8012C218 ---
void func_80144458(void *arg0) {
    s32 temp_s0;
    void *temp_s2;
    void *temp_v0;

    temp_s2 = M2C_FIELD(arg0, void **, 0xCC);
    if (M2C_FIELD(arg0, s16 *, 0x70) == 0) {
        temp_v0 = M2C_FIELD(M2C_FIELD(arg0, void **, 0x64), void **, 0x20);
        if (temp_v0 != NULL) {
            temp_s0 = (M2C_FIELD(temp_v0, s16 *, 0x12) - 0x400) & 0xFFF;
            M2C_FIELD(arg0, s32 *, 0x10) = (s32) (func_80047948(temp_s0) * D_80191D58 * 0x10);
            M2C_FIELD(arg0, s32 *, 0x18) = (s32) (func_8004787C(temp_s0) * -D_80191D58 * 0x10);
            func_8012AD80(arg0);
        }
    }
    M2C_FIELD(temp_s2, u16 *, 8) = (u16) M2C_FIELD(arg0, u16 *, 6);
    M2C_FIELD(temp_s2, u16 *, 0xA) = (u16) M2C_FIELD(arg0, u16 *, 0xA);
    M2C_FIELD(temp_s2, u16 *, 0xC) = (u16) M2C_FIELD(arg0, u16 *, 0xE);
    if (func_80128ED8(temp_s2, arg0 + 0xD0) != 0) {
        func_80016714(temp_s2, 0x38);
        func_8012C218(arg0);
    }
}

--- func_8018CA04 (src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13826) shares 2: func_8012AD80 func_8012C218 ---
void func_8018CA04(s32 arg0) {
    s32 a0;
    s32 a1;
    u16 val;

    // First update
    a0 = *(s32 *)(arg0 + 0x20);
    *(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x10) + (*(u16 *)(arg0 + 0x106));

    // Second update
    a1 = *(s32 *)(arg0 + 0x20);
    val = *(u16 *)(arg0 + 0x108);
    *(u16 *)(a1 + 0x14) = *(u16 *)(a1 + 0x14) + val;

    func_8012AD80(arg0);

    if ((*(s32 *)(arg0 + 0x1C) & 0x3) == 0) {
        func_8018A7E8(arg0);
    }

    *(s32 *)(arg0 + 0x1C) = *(s32 *)(arg0 + 0x1C) + 1;

    if (*(s16 *)(arg0 + 0xA) >= -0x3FF) {
        func_8012C218((void *)arg0);
    }
}

--- func_8018CB68 (src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13914) shares 2: func_8012AD80 func_8012C218 ---
void func_8018CB68(s32 arg0) {
    s32 a0;
    s32 a1;
    u16 val;

    a0 = *(s32 *)(arg0 + 0x20);
    *(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x10) + (*(u16 *)(arg0 + 0x106));

    a1 = *(s32 *)(arg0 + 0x20);
    val = *(u16 *)(arg0 + 0x108);
    *(u16 *)(a1 + 0x14) = *(u16 *)(a1 + 0x14) + val;

    func_8012AD80(arg0);

    if (*(s16 *)(arg0 + 0x70) < 0x10) {
        if (*(s32 *)(arg0 + 0x1C) & 1) {
            func_8018A7E8(arg0);
        }

        *(s32 *)(arg0 + 0x1C) = *(s32 *)(arg0 + 0x1C) + 1;
    }

    if (*(s16 *)(arg0 + 0xA) >= -0x3FF) {
        func_8012C218((void *)arg0);
    }
}

--- func_80130858 (src/shared/ov/func_80130858.h:6) shares 1: func_8012AD80 ---
void func_80130858(s32 a0) {
    func_8012AD80(a0);
    if (func_8012BEE8(a0)) {
        func_801319E0(a0);
    }
}

