=== lever-free bodies in ov_SC03_115 sharing a callee or global with func_8017FC5C (3 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_8012BCCC (src/shared/ov/func_8012BCCC.h:6) shares 1: D_80126CBA ---
s32 func_8012BCCC(s32 a0) {
    s32 *p = &D_80126B58;
    if (D_80126CBA != 0) {
        return 0x7FFFFFFF;
    }
    return func_80013478(a0 + 4, (s32)p + 0x15C);
}

--- func_8012BD3C (src/shared/ov/func_8012BD3C.h:7) shares 1: D_80126CBA ---
s32 func_8012BD3C(s32 a0, s32 a1, s32 a2) {
    s32 v;
    s32 hp;
    hp = a1;
    if (D_80126CBA != 0) {
        v = 0x7FFFFFFF;
    } else {
        v = func_80013478(a0 + 4, (s32)&D_80126CB4);
    }
    if (a2 < v) {
        return 0;
    }
    return func_8012BDBC(a0, (s16)hp);
}

--- func_8017F5B4 (src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c:4787) shares 1: func_8012B77C ---
void func_8017F5B4(s32 a0) {

    extern u16 D_80126B62;
    s32 sp10[6];
    u8 sp28[8];
    s16 q;
    s32 t;
    s32 r;

    *(s16 *)((s32)sp10 + 0x2) = *(u16 *)(a0 + 0x102);
    *(s16 *)((s32)sp10 + 0xA) = *(u16 *)(a0 + 0x106);
    q = *(u16 *)(a0 + 0x104);
    *(s16 *)((s32)sp10 + 0x6) = q;
    if ((*(u16 *)(a0 + 0x70) & 0x20) == 0) {
        *(s16 *)((s32)sp10 + 0x6) = q + D_80126B62;
    } else {
        *(s16 *)((s32)sp10 + 0x6) = q + *(u16 *)(a0 + 0x8A);
    }

    func_8012B77C((s32)sp28, a0 + 4, (s32)sp10);
    t = *(s32 *)sp28;
    *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = t;
    r = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), t >> 16,
                      *(s16 *)(a0 + 0xFE));
    *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) =
        *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + r;
    func_8012B178(a0, *(s32 *)(a0 + 0xE4));
    func_8012CBF4(a0);
    if (func_8012BEE8(a0)) {
        s32 base;
        s32 off;
        s32 val;

        *(s32 *)(a0 + 0x1C) = rand() % 128 + 0x80;
        *(s16 *)(a0 + 0xFE) = rand() % 32 + 10;
        func_8012B0B4((unsigned int *)sp28, rand() % 0x1000,
                      rand() % *(s32 *)(a0 + 0xDC));
        t = *(s32 *)sp28;
        *(s16 *)(a0 + 0x102) = *(u16 *)(a0 + 0x88) + t;
        *(s16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x8C) + (t >> 16);
        if (*(u16 *)(a0 + 0x70) & 0x20) {
            off = rand() % 256;
            base = *(s16 *)(a0 + 0xFC);
            if (rand() & 1) {
                val = base + off;
            } else {
                val = base - off;
            }
            *(s16 *)(a0 + 0x104) = val;
        } else {
            *(s16 *)(a0 + 0x104) = *(u16 *)(a0 + 0xFC) - rand() % 256;
        }
    }
}

