=== lever-free bodies in ov_SC04_011 sharing a callee or global with func_8018CC24 (32 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_8018CA04 (src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13826) shares 3: func_8012AD80 func_8012C218 func_8018A7E8 ---
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 3: func_8012AD80 func_8012C218 func_8018A7E8 ---
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_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_8018C58C (src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13612) shares 2: func_8012AD80 func_8018A7E8 ---
void func_8018C58C(s32 a0) {
    s32 s0;
    s32 ptr;
    s32 v0;
    s32 v1;

    s0 = a0;

    v1 = *(s16 *)(s0 + 0x70);
    if (v1 < 2) {
        if (v1 >= 0) {
            return;
        }
    }

    func_8012AD80(a0);

    ptr = *(s32 *)(s0 + 0x20);
    v1 = *(u16 *)(s0 + 0x106);
    v0 = *(u16 *)(ptr + 0x10);
    v0 = v0 + v1;
    *(u16 *)(ptr + 0x10) = (u16)v0;

    ptr = *(s32 *)(s0 + 0x20);
    v1 = *(u16 *)(s0 + 0x108);
    v0 = *(u16 *)(ptr + 0x14);
    v0 = v0 + v1;
    *(u16 *)(ptr + 0x14) = (u16)v0;

    if ((*(s32 *)(s0 + 0x1C) & 3) == 0) {
        func_8018A7E8(a0);
    }

    v0 = *(s32 *)(s0 + 0x1C);
    v0 = v0 + 1;
    *(s32 *)(s0 + 0x1C) = v0;

    if (func_801893D4(a0) != 0) {
        func_80189108(a0);
    }

    func_80189478(a0);
}

