=== lever-free bodies in ov_SC06_010 sharing a callee or global with func_8017F600 (37 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_801815B4 (src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c:6839) shares 3: D_801151D4 func_8012913C func_8012C588 ---
void func_801815B4(s32 a0)
{

    extern s32  D_801151D4;
    u16 nv[4];
    s32 g;
    s32 s0;
    s32 idx;

    g = D_801151D4;

    if (*(u16 *)a0 != 0) {
        idx = *(s32 *)(a0 + 0x1C) & 3;
        switch (idx) {
        case 0:
            s0 = func_8012C588(0x281, a0);
            if (s0 != 0) {
                *(s32 *)(s0 + 0x1C) = 2;
                *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;
                *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);
                *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;
            }
            break;
        case 1:
            break;
        case 2:
        case 3:
            s0 = (s32)func_8012913C(0x23);
            if (s0 != 0) {
                *(s16 *)(s0 + 0x6) = *(u16 *)(a0 + 0x6) + (rand() & 0x3F) - 0x20;
                *(s16 *)(s0 + 0xA) = *(u16 *)(a0 + 0xA) + (rand() & 0x3F) - 0x30;
                {
                    s32 r = rand();
                    s32 t = *(u16 *)(a0 + 0xE);
                    *(s32 *)(s0 + 0x18) = 0;
                    *(s32 *)(s0 + 0x14) = 0;
                    *(s32 *)(s0 + 0x10) = 0;
                    *(s16 *)(s0 + 0xE) = t + (r & 0x3F) - 0x20;
                }
                *(s16 *)(s0 + 0x34) = (rand() & 0x17FF) + 0x800;
                nv[0] = *(s32 *)(g + 0x5C) - *(u16 *)(s0 + 0x6);
                nv[1] = *(s32 *)(g + 0x60) - *(u16 *)(s0 + 0xA);
                nv[2] = *(s32 *)(g + 0x64) - *(u16 *)(s0 + 0xE);
                VectorNormalSS(nv, nv);
                *(s16 *)(s0 + 0x6) = *(u16 *)(s0 + 0x6) + ((s16)nv[0] >> 6);
                *(s16 *)(s0 + 0xA) = *(u16 *)(s0 + 0xA) + ((s16)nv[1] >> 6);
                *(s16 *)(s0 + 0xE) = *(u16 *)(s0 + 0xE) + ((s16)nv[2] >> 6);
            }
            break;
        }
        ((void (*)(s32))func_80181234)(a0);
    }
}

--- func_8012F968 (src/shared/ov/func_8012F968.h:8) shares 2: D_801151D4 func_8012C588 ---
void func_8012F968(s32 param_1) {
    s32 iVar3;
    s32 iVar2;
    u32 uVar4;
    struct { s16 a; s16 b; s16 c; } sp;
    iVar3 = D_801151D4;
    *(u8 *)(param_1 + 0xc1) = 0x12;
    if ((*(u32 *)(param_1 + 0xb4) & 0x10000) != 0) {
        sp.a = *(s32 *)(iVar3 + 0x5c);
        sp.b = *(s32 *)(iVar3 + 0x60);
        sp.c = *(s32 *)(iVar3 + 0x64);
        iVar2 = *(s32 *)(param_1 + 0x20);
        *(s16 *)(param_1 + 0x5c) = 0;
        *(s16 *)(param_1 + 0x54) = 0;
        *(s16 *)(param_1 + 0x52) = 0;
        *(s16 *)(param_1 + 0x50) = 0;
        *(s16 *)(iVar2 + 0x14) = 0;
        *(s16 *)(iVar2 + 0x10) = 0;
        *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = ((s16 (*)(s32, s32))func_8012B744)(param_1 + 4, (s32)&sp);
        *(s32 *)(param_1 + 0x1c) = 0x2d;
        if (*(u32 *)(param_1 + 0x58) != 0) {
            uVar4 = *(u32 *)(param_1 + 0x58) & 0xfffffff | 0x80000000;
            *(s16 *)(param_1 + 0xac) =
                (s16)((s32)*(s16 *)(uVar4 + 8) + (s32)*(s16 *)(uVar4 + 10) >> 1);
        } else {
            *(s16 *)(param_1 + 0xac) = 0;
        }
        *(s32 *)(param_1 + 0x10) =
            ((*(s32 *)(iVar3 + 0x5c) - (s32)*(s16 *)(param_1 + 6)) * 0x10000) / 0x1e;
        *(s32 *)(param_1 + 0x14) =
            (((*(s32 *)(iVar3 + 0x60) - (s32)*(s16 *)(param_1 + 10)) -
              (s32)*(s16 *)(param_1 + 0xac)) * 0x10000) / 0x1e;
        *(s32 *)(param_1 + 0x18) =
            ((*(s32 *)(iVar3 + 0x64) - (s32)*(s16 *)(param_1 + 0xe)) * 0x10000) / 0x1e;
        *(s16 *)(param_1 + 0x98) = 0;
        if (func_80131A34(param_1, 0x24) == 0) {
            *(u32 *)(param_1 + 0xc4) = *(u32 *)(param_1 + 0xc4) & 0xfffffffb;
            if (func_80131A34(param_1, 0x20) != 0) {
                *(u32 *)(param_1 + 0xc4) = *(u32 *)(param_1 + 0xc4) | 4;
            } else {
                *(s16 *)(param_1 + 0x98) = 0;
            }
        }
        ((void (*)(s32, s32))func_8012C588)(0x289, param_1);
    }
    func_80131CA8(param_1, 0x35);
}

--- func_80143970 (src/shared/ov/func_80143970.h:4) shares 1: func_8012C588 ---
s32 func_80143970(s32 a0) {
    return func_8012C588(0x1B, a0);
}

--- func_8012A464 (src/shared/ov/func_8012A464.h:5) shares 1: D_801151D4 ---
void func_8012A464(void)
{
    D_80114F24 = *(Vec8 *)(*(s32 *)&D_801151D4 + 0x3C);
}

--- func_801829FC (src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c:7776) shares 1: func_8012C588 ---
s32 func_801829FC(s32 a0, s32 a1) {
    D_801B2B08 = a1;
    return func_8012C588(0x85, a0);
}

--- func_8012A4BC (src/shared/ov/func_8012A4BC.h:7) shares 1: D_801151D4 ---
void func_8012A4BC(void) {
    D_80126DB8 = *(struct BigCopy *)D_801151D4;
    *(struct BigCopy *)D_801151D4 = D_80114EE8;
    D_80127504 = 0x30;
}

