=== lever-free bodies in ov_SC04_015 sharing a callee or global with func_8017EE80 (21 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80144558 (src/shared/ov/func_80144558.h:10) shares 3: func_8001CC3C func_80128EA8 func_8012C194 ---
void func_80144558(u8 *param_1) {
    s32 s0;
    s0 = ((s32 (*)(void))func_8012C194)();
    if (s0 == 0) {
        func_8012CAE4(param_1);
    } else {
        *(s32 *)(param_1 + 0xCC) = s0;
        func_8001CC3C(s0, 0, 0, 0);
        *(s32 *)(s0 + 0x20) = (s32)D_800D387C;
        *(u8 *)(s0 + 0x27) = 0x9C;
        *(u16 *)(s0 + 0x1A) = 0x3000;
        *(u16 *)(s0 + 0x18) = 0x3000;
        *(u32 *)(s0 + 4) = *(u32 *)(s0 + 4) | 0x50000000;
        func_80128EA8(s0, (s32)(param_1 + 0xD0), (s32)D_800D3888);
        *(u16 *)(s0 + 8) = *(u16 *)(param_1 + 6);
        *(u16 *)(s0 + 0xA) = *(u16 *)(param_1 + 0xA);
        *(u16 *)(s0 + 0xC) = *(u16 *)(param_1 + 0xE);
        *(u16 *)(param_1 + 2) = 1;
        func_8012B200(param_1);
    }
}

--- func_801446A4 (src/shared/ov/func_801446A4.h:9) shares 3: func_8001CC3C func_80128EA8 func_8012C194 ---
void func_801446A4(int param_1)
{
    int s1;
    int iVar1;
    int param_12;
    param_12 = param_1;
    s1 = param_12;
    iVar1 = ((int (*)(void))func_8012C194)();
    if (iVar1 == 0) {
        ((void (*)(int))func_8012CAE4)(s1);
    } else {
        *(int *)(s1 + 0xcc) = iVar1;
        ((void (*)(int, int, int, int))func_8001CC3C)(iVar1, 0, 0, 0);
        *(int *)(iVar1 + 0x20) = (int)&D_800D387C;
        *(unsigned char *)(iVar1 + 0x27) = 0x9c;
        *(short *)(iVar1 + 0x1a) = 0x3000;
        *(short *)(iVar1 + 0x18) = 0x3000;
        *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000;
        func_80128EA8(iVar1, s1 + 0xd0, (int)&D_800D3888);
        *(short *)(iVar1 + 8) = *(unsigned short *)(s1 + 6);
        *(short *)(iVar1 + 0xa) = *(unsigned short *)(s1 + 0xa);
        *(short *)(iVar1 + 0xc) = *(unsigned short *)(s1 + 0xe);
        *(short *)(s1 + 2) = *(short *)(s1 + 2) + 1;
    }
}

--- func_8017F7E4 (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:5571) shares 3: func_8001CC3C func_80128EA8 func_8012C194 ---
void func_8017F7E4(s32 a0) {
    s32 s1;
    s32 v0;

    s1 = ((s32 (*)(void))func_8012C194)();
    if (s1 != 0) {
        v0 = ((s32 (*)(void))func_8012C1B8)();
        *(s32 *)(a0 + 0x20) = v0;
    }
    if (s1 == 0 || v0 == 0) {
        func_8012CAE4((void *)a0);
        return;
    }
    func_8001C214(v0, 0);
    func_8012E8E0(a0, (s32)(D_80188748 + *(s16 *)(a0 + 0x70) * 8));
    *(u32 *)(a0 + 0x58) = (u32)&D_80188858 | 0x40000000;
    *(u16 *)(a0 + 0x5C) = 0x8000;
    *(s32 *)(a0 + 0xCC) = s1;
    func_8001CC3C(s1, 0, 0, 0);
    *(s32 *)(s1 + 0x20) = (s32)D_80188868;
    *(u8 *)(s1 + 0x27) = 0x4C;
    *(u16 *)(s1 + 0x2C) = 0xC020;
    *(u16 *)(s1 + 0x1A) = 0x3000;
    *(u16 *)(s1 + 0x18) = 0x3000;
    *(u32 *)(s1 + 4) |= 0x50000000;
    func_80128EA8(s1, a0 + 0xD0, (s32)D_80188874);
    func_8017EE80(a0);
    *(u16 *)(a0 + 0x76) = 100;
    *(s32 *)(a0 + 0x1C) = 0;
    *(u16 *)(a0 + 0x34) = 0;
    *(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1;
}

--- func_80183DE8 (src/ov_SC04_015/ov_SC04_015_jr_801820DC.c:4342) shares 3: func_8001CC3C func_80128EA8 func_8012C194 ---
void func_80183DE8(u8 *arg0)
{

    extern u8 D_800D387C[];
    extern u8 D_800D3888[];
    u8 *param_1;
    s32 raw;
    u32 buf[6];

    do { param_1 = arg0; } while (0);
    {
        s32 s0;   /* $s1 -- scoped: dead after func_80128EA8 */
        s0 = ((s32 (*)(void))func_8012C194)();
        if (s0 == 0) {
            func_8012CAE4(param_1);
            return;
        }
        *(s32 *)(param_1 + 0xCC) = s0;
        func_8001CC3C(s0, 0, 0, 0);
        *(s32 *)(s0 + 0x20) = (s32)D_800D387C;
        *(u8 *)(s0 + 0x27) = 0x9C;
        *(u16 *)(s0 + 0x1A) = 0x3000;
        *(u16 *)(s0 + 0x18) = 0x3000;
        *(u32 *)(s0 + 4) = *(u32 *)(s0 + 4) | 0x50000000;
        func_80128EA8(s0, (s32)(param_1 + 0xD0), (s32)D_800D3888);
    }
    {
        s32 obj = *(s32 *)(param_1 + 0xCC);
        *(u16 *)(obj + 8) = *(u16 *)(param_1 + 6);
        *(u16 *)(obj + 0xA) = *(u16 *)(param_1 + 0xA);
        *(u16 *)(obj + 0xC) = *(u16 *)(param_1 + 0xE);
    }
    raw = *(s16 *)(param_1 + 0x70);
    *(s32 *)(param_1 + 0x1C) = 0x5A;
    *(u16 *)(param_1 + 2) = 1;
    *(s32 *)(param_1 + 0x10) = 0;
    *(s32 *)(param_1 + 0x14) = 0xFFF80000;
    *(s32 *)(param_1 + 0x18) = 0;
    func_8012B0B4((unsigned int *)buf, (raw & 0xFF00) >> 4, (raw & 0xFF) << 6);
    {
        s32 full;
        s32 low;
        full = *(s32 *)buf;
        low = *(s16 *)buf;
        *(s32 *)(param_1 + 0x48) = 0;
        *(s32 *)(param_1 + 0x44) = low;
        *(s32 *)(param_1 + 0x4C) = full >> 16;
    }
}

--- func_8016DA7C (src/ov_SC04_015/ov_SC04_015_jr_8016AB6C.c:3243) shares 2: func_8001CC3C func_80128EA8 ---
void func_8016DA7C(s32 param_1)
{
    s32 iVar1;

    iVar1 = ((s32 (*)(void))func_801465C0)();
    if (iVar1 == 0) {
        ((void (*)(s32))func_80146C3C)(param_1);
    } else {
        *(s32 *)(param_1 + 0x20) = iVar1;
        ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_801877D8, 0x250, 0x100);
        *(u8 *)(iVar1 + 0x27) = 0x90;
        *(u16 *)(iVar1 + 0x18) = 0x3000;
        *(u16 *)(iVar1 + 0x1a) = 0x4000;
        *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000;
        func_80128EA8(iVar1, param_1 + 0x24, (s32)&D_801877E4);
        *(s32 *)(param_1 + 0x10) = 0;
        *(s32 *)(param_1 + 0x14) = 0xfff40000;
        *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1;
    }
}

--- func_8017ED00 (src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c:5104) shares 1: D_801C8C64 ---
void func_8017ED00(void) {
    func_80016714(&D_801C8C64, 0x380);
}

