=== lever-free bodies in ov_MAIN_012 sharing a callee or global with func_80168D94 (9 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80168664 (src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:8051) shares 1: func_80048EAC ---
void func_80168664(void *arg0) {
    s32 iVar3;
    void *blk;
    iVar3 = *(s32 *)((u8 *)arg0 + 0x34);
    *(s32 *)((u8 *)arg0 + 0x1c) = 0x20;
    *(s16 *)((u8 *)arg0 + 0x10) = 0x80;
    *(s16 *)((u8 *)arg0 + 0x12) = 0;
    *(s32 *)((u8 *)arg0 + 0x30) = 0x1800;
    *(Blk20 *)((u8 *)arg0 + 0x38) = (*(Blk20 *)&D_800AE620);
    blk = (u8 *)arg0 + 0x38;
    ((s32 (*)(s32, void *))RotMatrixX)(0x400, blk);
    func_80048EAC((void *)(*(s32 *)((u8 *)iVar3 + 0x20) + 0x34), blk);
    func_801670E4((s32)arg0, -6, -0x44, -0x18);
    *(s16 *)((u8 *)arg0 + 2) = *(s16 *)((u8 *)arg0 + 2) + 1;
}

--- func_8016A73C (src/shared/ov/func_8016A73C.h:3) shares 1: func_80048EAC ---
s32 func_8016A73C(s32 arg0) {
    int sp10[8];
    short v[3];   /* sp30, sp32, sp34 */
    int r;
    short tmp;

    r = ((int(*)())rand)();
    v[1] = ((r & 0x7F) << 4) + 0x400;
    v[0] = ((unsigned)(r & 0x7F00) >> 5) - 0x300;
    v[2] = 0;
    ((void(*)(short *, void *))RotMatrixYXZ)(v, sp10);
    ((void(*)(int, void *))func_80048EAC)(((Obj_8016A73C *)arg0)->unk34->unk34->unk20 + 0x34, sp10);
    v[0] = 0;
    v[1] = 0;
    v[2] = -0x50;
    ((int(*)(void *, short *, short *))ApplyMatrixSV)(sp10, v, v);

    ((Obj_8016A73C *)arg0)->mat = (*(Mat_8016A73C*)&D_800AE620);

    tmp = ((Obj_8016A73C *)arg0)->unk6 + v[0];
    ((Obj_8016A73C *)arg0)->unk6 = tmp;
    ((Obj_8016A73C *)arg0)->mat.w[5] = tmp;
    tmp = ((Obj_8016A73C *)arg0)->unkA + v[1];
    ((Obj_8016A73C *)arg0)->unkA = tmp;
    ((Obj_8016A73C *)arg0)->mat.w[6] = tmp;
    tmp = ((Obj_8016A73C *)arg0)->unkE + v[2];
    ((Obj_8016A73C *)arg0)->unkE = tmp;
    ((Obj_8016A73C *)arg0)->unk2 = ((Obj_8016A73C *)arg0)->unk2 + 1;
    ((Obj_8016A73C *)arg0)->mat.w[7] = tmp;
}

--- func_80169408 (src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:8441) shares 1: func_80048EAC ---
void func_80169408(s32 a0) {
    s32 s2 = a0;
    s32 s1;
    s16 v10[4];   /* sp+0x10 SVECTOR */
    s16 out[4];   /* sp+0x18 SVECTOR */
    s16 m[32];    /* sp+0x20 MATRIX_L48 (+ trailing reserve to 0x60 — matches target frame) */
    if (*(s32 *)(s2 + 0x2C) == 0) {
        s32 r = rand();
        s1 = s2 + 0x38;
        v10[0] = (r & 0x7F) << 5;
        v10[1] = ((u32)(r & 0x7F00)) >> 3;
        v10[2] = 0;
        RotMatrixYXZ(v10, m);
        func_80048EAC((void *)s1, m);
        v10[0] = 0;
        v10[1] = 0;
        v10[2] = 2;
        ((void (*)(void *, void *, void *))ApplyMatrixSV)(m, v10, v10);
        *(u16 *)(s2 + 0x12) = v10[0];
        *(u16 *)(s2 + 0x16) = v10[1];
        *(u16 *)(s2 + 0x1A) = v10[2];
        v10[0] = *(u16 *)(s2 + 0x6);
        v10[1] = *(u16 *)(s2 + 0xA);
        v10[2] = *(u16 *)(s2 + 0xE);
        func_800D20C0(v10, out, 1);
        func_800D23D0(out);
        RotMatrixYXZ(out, (void *)s1);
    }
    do { func_80169584(s2); } while (0);
    *(u16 *)(s2 + 0x2) = *(u16 *)(s2 + 0x2) + 1;
}

--- func_801678F0 (src/shared/ov/func_801678F0.h:10) shares 1: func_80048EAC ---
void func_801678F0(s32 a0) {
    s32 p;
    s32 r;
    s16 buf[4];
    p = *(s32 *)(a0 + 0x34);
    if ((*(s32 *)(p + 0x44) & 0x10) != 0) {
        if (*(s16 *)(a0 + 0x12) > *(s16 *)(a0 + 0x10)) {
            if (*(s32 *)(a0 + 0x1C) > 0) {
                *(u16 *)(a0 + 0x10) = rand() & 0x30;
                *(s32 *)(a0 + 0x1C) = -0x30;
            }
        } else {
            if (*(s32 *)(a0 + 0x1C) < 0) {
                *(u16 *)(a0 + 0x10) = (rand() & 0x30) + 0x40;
                *(s32 *)(a0 + 0x1C) = 0x30;
            }
        }
        *(s16 *)(a0 + 0x12) = *(u16 *)(a0 + 0x12) + *(s32 *)(a0 + 0x1C);
        if (*(s32 *)(a0 + 0x30) != 0) {
            *(s32 *)(a0 + 0x30) = *(s32 *)(a0 + 0x30) - 0xC0;
        }
        buf[0] = 0x400;
        buf[1] = 0;
        buf[2] = D_800B99DA << 8;
        RotMatrixYXZ((void *)buf, (void *)(a0 + 0x38));
        ((void (*)(s32, s32))func_80048EAC)(*(s32 *)(p + 0x20) + 0x34, a0 + 0x38);
        func_801670E4(a0, -6, -0x44, -0x18);
        r = ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0xE, a0, *(s16 *)(a0 + 6), *(s16 *)(a0 + 0xA), *(s16 *)(a0 + 0xE), 0, 0);
        if (r != 0) {
            *(Blk32 *)(r + 0x38) = *(Blk32 *)(a0 + 0x38);
        }
    } else {
        ((void (*)(s32))func_80146C3C)(a0);
    }
}

--- func_8016986C (src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:8498) shares 1: func_80048EAC ---
void func_8016986C(s32 a0) {
    s32 s1 = a0;
    s16 v10[4];   /* sp+0x10 SVECTOR */
    s16 v18[4];   /* sp+0x18 SVECTOR */
    s16 v20[16];  /* sp+0x20 MATRIX_L48 */
    s16 v40[16];  /* sp+0x40 MATRIX_L48 */
    s32 v1;
    s32 t;
    v10[0] = *(u16 *)(s1 + 0x6);
    v10[1] = *(u16 *)(s1 + 0xA);
    v10[2] = *(u16 *)(s1 + 0xE);
    func_800D20C0(v10, v18, 1);
    func_800D23D0(v18);
    RotMatrixYXZ(v18, (void *)(s1 + 0x38));
    v10[0] = *(u16 *)(s1 + 0x12);
    v10[1] = *(u16 *)(s1 + 0x16);
    v10[2] = *(u16 *)(s1 + 0x1A);
    RotMatrixYXZ(v10, v40);
    v1 = rand();
    v10[0] = (v1 & 0x1FC) + 0x180;
    if (*(s32 *)(s1 + 0x2C) & 0x2) {
        v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0x200;
    } else {
        v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0xC00;
    }
    v10[2] = 0;
    RotMatrixYXZ(v10, v20);
    func_80048EAC(v40, v20);
    if ((*(s32 *)(s1 + 0x2C) & 0x1) == 0) {
        *(s32 *)(s1 + 0x2C) = 0xE00;
    } else {
        *(s32 *)(s1 + 0x2C) = 0xA00;
    }
    v10[0] = 0;
    v10[1] = 0;
    v10[2] = 0xA;
    ((void (*)(void *, void *, void *))ApplyMatrixSV)(v20, v10, v10);
    *(u16 *)(s1 + 0x12) = v10[0];
    *(u16 *)(s1 + 0x16) = v10[1];
    {
        s32 tmp = *(u16 *)(s1 + 0x2);
        s32 z = (u16)v10[2];
        *(s32 *)(s1 + 0x1C) = 0;
        *(u16 *)(s1 + 0x2) = tmp + 1;
        *(u16 *)(s1 + 0x1A) = z;
    }
}

--- func_801696D8 (src/shared/ov/func_801696D8.h:6) shares 1: func_80048EAC ---
void func_801696D8(s32 a0, s32 a1) {
    void *arg0 = (void *)a0;
    void *arg1 = (void *)a1;
    u8 buf[0x5C];               /* spans $sp+0x10 .. $sp+0x6B */
    u8 *p = buf + 0x38;          /* $sp+0x48, passed to first 3 calls */
    u8 v1;
    u8 v0;
    u8 a1b;
    u16 t2c;
    u8 *q = buf + 0x58;          /* $sp+0x68, first call a0 */
    *(s16 *)(buf + 0x00) = 8;    /* 0x10 */
    *(s16 *)(buf + 0x10) = 0;    /* 0x20 */
    *(s16 *)(buf + 0x08) = 0;    /* 0x18 */
    *(s16 *)(buf + 0x18) = -8;   /* 0x28 */
    *(s16 *)(buf + 0x0a) = 2;    /* 0x1A */
    *(s16 *)(buf + 0x1a) = 0;    /* 0x2A */
    *(s16 *)(buf + 0x02) = 0;    /* 0x12 */
    *(s16 *)(buf + 0x12) = -2;   /* 0x22 */
    *(s16 *)(buf + 0x1c) = 0;    /* 0x2C */
    *(s16 *)(buf + 0x14) = 0;    /* 0x24 */
    *(s16 *)(buf + 0x0c) = 0;    /* 0x1C */
    *(s16 *)(buf + 0x04) = 0;    /* 0x14 */
    v1 = *(u8 *)((u8 *)arg0 + 0x30);
    *(s32 *)(buf + 0x30) = 0x50000000;  /* 0x40 */
    v0 = (u8)(v1 >> 1);
    a1b = (u8)(v0 >> 2);
    *(u8 *)(buf + 0x2a) = v1;     /* 0x3A */
    *(u8 *)(buf + 0x26) = v1;     /* 0x36 */
    *(u8 *)(buf + 0x2e) = v0;     /* 0x3E */
    *(u8 *)(buf + 0x22) = v0;     /* 0x32 */
    *(u8 *)(buf + 0x29) = v0;     /* 0x39 */
    *(u8 *)(buf + 0x25) = v0;     /* 0x35 */
    *(u8 *)(buf + 0x28) = v0;     /* 0x38 */
    *(u8 *)(buf + 0x24) = v0;     /* 0x34 */
    *(u8 *)(buf + 0x2d) = a1b;    /* 0x3D */
    *(u8 *)(buf + 0x21) = a1b;    /* 0x31 */
    *(u8 *)(buf + 0x2c) = a1b;    /* 0x3C */
    *(u8 *)(buf + 0x20) = a1b;    /* 0x30 */
    t2c = *(u16 *)((u8 *)arg0 + 0x2c);
    *(u16 *)(q + 0x02) = t2c;  /* 0x6A */
    *(u16 *)(q + 0x00) = t2c;  /* 0x68 */
    func_80017DC4(q, p);
    func_80048EAC(arg1, p);
    *(s32 *)(buf + 0x4c) = (s32)*(s16 *)((u8 *)arg0 + 6);   /* 0x5C */
    *(s32 *)(buf + 0x50) = (s32)*(s16 *)((u8 *)arg0 + 0xa); /* 0x60 */
    *(s32 *)(buf + 0x54) = (s32)*(s16 *)((u8 *)arg0 + 0xe); /* 0x64 */
    func_80017758(buf + 0x00, p);
    *(s16 *)(buf + 0x00) = 2;    /* 0x10 */
    *(s16 *)(buf + 0x10) = 0;    /* 0x20 */
    *(s16 *)(buf + 0x08) = 0;    /* 0x18 */
    *(s16 *)(buf + 0x18) = -2;   /* 0x28 */
    *(s16 *)(buf + 0x0a) = 8;    /* 0x1A */
    *(s16 *)(buf + 0x1a) = 0;    /* 0x2A */
    *(s16 *)(buf + 0x02) = 0;    /* 0x12 */
    *(s16 *)(buf + 0x12) = -8;   /* 0x22 */
    func_80017758(buf + 0x00, p);
}

