=== lever-free bodies in ov_SC02_026 sharing a callee or global with func_8017DAB8 (72 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_8017DDC4 (src/ov_SC02_026/ov_SC02_026_jr_8017C180.c:3365) shares 4: func_8001C214 func_8012AD50 func_8012C1B8 func_8012CAE4 ---
void func_8017DDC4(void *a0)
{
    s32 v0;
    s32 s1;
    s32 t;

    /* §162: fold the store AND the test into ONE expression so cc1 keeps both
     * on the call's native $v0 instead of coalescing them into a fresh copy. */
    if ((*(s32 *)((s32)a0 + 0x20) = ((s32 (*)(void))func_8012C1B8)()) == 0) {
        func_8012CAE4(a0);
        return;
    }

    s1 = *(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0xDC);
    if (s1 != 0) {
        t = *(s32 *)(s1 + 0x8);
        if (t != 0) {
            D_801D0120[*(s16 *)((s32)a0 + 0x70)].a =
                ((s32 *)t)[*(s16 *)((s32)a0 + 0x70)];
        }
    }
    D_801D0120[*(s16 *)((s32)a0 + 0x70)].b = 0;
    func_8001C214(*(s32 *)((s32)a0 + 0x20),
                  (s32)&D_801D0120[*(s16 *)((s32)a0 + 0x70)]);

    if (*(s32 *)(s1 + 0xC) != 0) {
        *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x1000000;
    }

    /* source order is DESCENDING here (0xE, 0xA, 0x6) — the emitted stores keep
     * source order, and the target's are 0xE/0xA/0x6 with 0x6 in the delay slot. */
    *(s16 *)((s32)a0 + 0xE) = 0;
    *(s16 *)((s32)a0 + 0xA) = 0;
    *(s16 *)((s32)a0 + 0x6) = 0;
    func_80132784((s32)a0, *(s32 *)((s32)a0 + 0x64), *(u16 *)((s32)a0 + 0x70));

    *(s16 *)((s32)a0 + 0x6) = *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x48);
    *(s16 *)((s32)a0 + 0xA) = *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4C);
    *(s16 *)((s32)a0 + 0xE) = *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x50);

    *(Rec8_8017DDC4 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) =
        *(Rec8_8017DDC4 *)(*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x20) + 0x10);

    func_8012B23C(a0);

    func_800484EC(*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x20) + 0x34,
                  (s32)&D_801A42B8[*(s16 *)((s32)a0 + 0x70)],
                  (s32)a0 + 0x10);

    *(s16 *)((s32)a0 + 0xFC) = rand() & 0xF0;
    *(s16 *)((s32)a0 + 0xFE) = rand() & 0x1F0;
    *(s16 *)((s32)a0 + 0x100) = rand() & 0x30;

    v0 = func_80132EF4((s32)a0, 0x22);
    if (v0 != 0) {
        *(s16 *)(v0 + 0x34) = 0x4001;
        *(s32 *)(v0 + 0x10) = *(s32 *)((s32)a0 + 0x10) >> 2;
        *(s32 *)(v0 + 0x14) = *(s32 *)((s32)a0 + 0x14) >> 2;
        *(s32 *)(v0 + 0x18) = *(s32 *)((s32)a0 + 0x18) >> 2;
    }
    *(s32 *)((s32)a0 + 0x1C) = 0x20;
    func_8012AD50(a0);
}

--- func_80144A98 (src/shared/ov/func_80144A98.h:6) shares 3: func_8001C214 func_8012C1B8 func_8012CAE4 ---
void func_80144A98(u8 *a0) {
    s32 v0;
    v0 = ((s32 (*)(void))func_8012C1B8)();
    *(s32 *)(a0 + 0x20) = v0;
    if (v0 == 0) {
        func_8012CAE4(a0);
    } else {
        func_8001C214(v0, 0);
        *(s16 *)(a0 + 0x2) = 1;
    }
}

--- func_801320D8 (src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c:1913) shares 3: func_8001C214 func_8012C1B8 func_8012CAE4 ---
void func_801320D8(int param_1)
{
    int v0;

    v0 = ((int (*)(void))func_8012C1B8)();
    *(int *)(param_1 + 0x20) = v0;
    if (v0 == 0) {
        ((void (*)(int))func_8012CAE4)(param_1);
    } else {
        func_8001C214(v0, 0);
        *(int *)(param_1 + 0x58) = (int)&D_8018664C;
        *(short *)(param_1 + 0x5c) = 0x80;
        *(unsigned short *)(param_1 + 2) += 1;
    }
}

--- func_801321B0 (src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c:1960) shares 3: func_8001C214 func_8012C1B8 func_8012CAE4 ---
void func_801321B0(int param_1)
{
    int v0;

    v0 = ((int (*)(void))func_8012C1B8)();
    *(int *)(param_1 + 0x20) = v0;
    if (v0 == 0) {
        ((void (*)(int))func_8012CAE4)(param_1);
    } else {
        func_8001C214(v0, 0);
        *(int *)(param_1 + 0x58) = (int)&D_8018666C;
        *(short *)(param_1 + 0x5c) = 0x80;
        *(unsigned short *)(param_1 + 2) += 1;
    }
}

--- func_8013221C (src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c:1986) shares 3: func_8001C214 func_8012C1B8 func_8012CAE4 ---
void func_8013221C(int param_1)
{
    int v0;

    v0 = ((int (*)(void))func_8012C1B8)();
    *(int *)(param_1 + 0x20) = v0;
    if (v0 == 0) {
        ((void (*)(int))func_8012CAE4)(param_1);
    } else {
        func_8001C214(v0, 0);
        *(int *)(param_1 + 0x58) = (int)&D_8018667C;
        *(short *)(param_1 + 0x5c) = 0x80;
        *(unsigned short *)(param_1 + 2) += 1;
    }
}

--- func_80132144 (src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c:1931) shares 3: func_8001C214 func_8012C1B8 func_8012CAE4 ---
s32 func_80132144(s32 param_1)
{
    extern int D_8018665C;

    int v0;

    v0 = ((int (*)(void))func_8012C1B8)();
    *(int *)(((int)param_1) + 0x20) = v0;
    if (v0 == 0) {
        ((void (*)(int))func_8012CAE4)(((int)param_1));
    } else {
        ((void(*)(int, int))func_8001C214)(v0, 0);
        *(int *)(((int)param_1) + 0x58) = (int)&D_8018665C;
        *(short *)(((int)param_1) + 0x5c) = 0x80;
        *(unsigned short *)(((int)param_1) + 2) += 1;
    }
}

