=== lever-free bodies in ov_SC01_077 sharing a callee or global with func_80168828 (18 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_801670E4 (src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c:5393) shares 3: func_80017DC4 func_80017E68 func_80048EAC ---
s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {

    extern u8  D_80189A20[];
    extern u8  D_80189A0C[];
    extern u8  D_80189A34[];
    extern s32 D_801269A4;
    extern s32 D_801269A8;
    extern s32 D_801269AC;
    extern u16 D_80126CE0;
    Fr_801670E4 f;
    u8 *p;   /* $s2 */
    s32 ent;   /* $s3 */
    s16 i;
    s32 d;
    s32 node;
    u16 c;
    u8 cv;
    u8 cv2;

    ent = arg0;
    node = *(s32 *)(ent + 0x34);
    f.v[1].z = 0;
    f.v[1].y = 0;
    f.v[1].x = 0;
    f.v[3].z = 0;
    f.v[2].z = 0;
    f.v[0].z = 0;
    f.col[1].b = 0x70;
    cv = *(u8 *)(ent + 0x12);
    f.cx = arg1;
    f.cy = arg2;
    f.col[0].b = 0;
    f.col[0].g = 0;
    f.col[0].r = 0;
    f.col[2].b = 0;
    f.col[2].g = 0;
    f.col[2].r = 0;
    f.col[3].b = 0;
    f.col[3].g = 0;
    f.col[3].r = 0;
    f.code = 0x50000000;
    f.cz = arg3;
    f.col[1].g = cv;
    f.col[1].r = cv;
    ((void (*)(s32, void *, void *))func_80149350)(node, &f.cx, &f.cx);

    c = f.cx;
    *(s16 *)(ent + 0x06) = c;
    *(s32 *)(ent + 0x4C) = (s16)c;
    c = f.cy;
    *(s16 *)(ent + 0x0A) = c;
    *(s32 *)(ent + 0x50) = (s16)c;
    c = f.cz;
    *(s16 *)(ent + 0x0E) = c;
    *(s32 *)(ent + 0x54) = (s16)c;
    func_800D20C0(&f.cx, f.a8, 7);
    func_80017E68(&f.cx, f.m1);
    func_800D23D0(f.a8);
    RotMatrixYXZ(f.a8, f.m1);
    p = D_80189A20;
    i = 0;

    do {
        f.v[0].x = (s8)*p++;
        f.v[0].y = (s8)*p++;
        f.v[2].x = (s8)*p++;
        f.v[2].y = (s8)*p++;
        f.v[3].x = (s8)*p++;
        f.v[3].y = (s8)*p--;
        func_80017758(f.v, f.m1);
    } while ((i = i + 1) < 4);

    p = D_80189A0C;
    i = 0;
    f.v[3].y = 0;
    f.v[2].y = 0;
    f.v[0].y = 0;
    f.col[1].g = 0xA0;
    f.col[1].b = 0x10;
    f.col[1].r = 0x10;
    f.pos[0] = D_801269A4 - (s16)f.cx;
    f.pos[1] = D_801269A8 - (s16)f.cy;
    f.pos[2] = D_801269AC - (s16)f.cz;

    do {
        f.v[0].x = (s8)*p++;
        f.v[0].z = (s8)*p++;
        f.v[2].x = (s8)*p++;
        f.v[2].z = (s8)*p++;
        f.v[3].x = (s8)*p++;
        f.v[3].z = (s8)*p--;
        func_80017758(f.v, (void *)(ent + 0x38));
    } while ((i = i + 1) < 4);

    if (*(s32 *)(ent + 0x30) > 0) {
        d = (s16)f.a8[0] >> 6;
        f.cx += d;
        f.cy += d;
        f.cz += d;
        func_80017E68(&f.cx, f.m1);
        f.cx = f.cy = f.cz = ((u32)*(s32 *)(ent + 0x30) >> 1) + D_80126CE0 * 0x20;
        func_80017DC4(&f.cx, f.m2);
        func_80048EAC(f.m2, f.m1);
        f.v[3].z = 0;
        f.v[2].z = 0;
        f.v[0].z = 0;
        cv2 = *(u8 *)(ent + 0x12);
        f.col[1].b = 0x20;
        f.col[1].r = 0x20;
        f.col[3].b = 0;
        f.col[3].r = 0;
        f.col[2].b = 0;
        f.col[2].r = 0;
        f.col[0].b = 0;
        f.col[0].r = 0;
        f.col[3].g = 0;
        f.col[2].g = 0;
        f.col[0].g = 0;
        f.col[1].g = cv2 + 0x60;
        p = D_80189A34;
        i = 0;
        do {
            f.v[0].x = (s8)*p++;
            f.v[0].y = (s8)*p++;
            f.v[2].x = (s8)*p++;
            f.v[2].y = (s8)*p++;
            f.v[3].x = (s8)*p++;
            f.v[3].y = (s8)*p--;
            func_80017758(f.v, f.m1);
        } while ((i = i + 1) < 8);
    }
}

--- func_801696D8 (src/shared/ov/func_801696D8.h:6) shares 2: func_80017DC4 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);
}

--- func_8016E460 (src/shared/ov/func_8016E460.h:6) shares 2: func_80017DC4 func_80048EAC ---
void func_8016E460(void *arg0, void *arg1) {
    u8 buf[0x5C];               /* spans $sp+0x10 .. $sp+0x6B */
    u8 *p = buf + 0x38;          /* $sp+0x48, passed to calls */
    u8 *q = buf + 0x58;          /* $sp+0x68, first call a0 */
    u8 v1;
    u8 v0;
    u8 w;
    u16 t2c;
    s32 c7  = 7;
    s32 cm7 = -7;
    s32 c3  = 3;
    s32 cm3 = -3;
    *(s16 *)(buf + 0x00) = c7;    /* 0x10 */
    *(s16 *)(buf + 0x10) = 0;     /* 0x20 */
    *(s16 *)(buf + 0x08) = 0;     /* 0x18 */
    *(s16 *)(buf + 0x18) = cm7;   /* 0x28 */
    *(s16 *)(buf + 0x0a) = c3;    /* 0x1A */
    *(s16 *)(buf + 0x1a) = 0;     /* 0x2A */
    *(s16 *)(buf + 0x02) = 0;     /* 0x12 */
    *(s16 *)(buf + 0x12) = cm3;   /* 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 = v1 >> 2;
    w  = v0 >> 2;
    *(u8 *)(buf + 0x2a) = v1;     /* 0x3A */
    *(u8 *)(buf + 0x26) = v1;     /* 0x36 */
    *(u8 *)(buf + 0x28) = v1;     /* 0x38 */
    *(u8 *)(buf + 0x24) = v1;     /* 0x34 */
    *(u8 *)(buf + 0x29) = v0;     /* 0x39 */
    *(u8 *)(buf + 0x25) = v0;     /* 0x35 */
    *(u8 *)(buf + 0x2c) = w;      /* 0x3C */
    *(u8 *)(buf + 0x20) = w;      /* 0x30 */
    *(u8 *)(buf + 0x2e) = w;      /* 0x3E */
    *(u8 *)(buf + 0x22) = w;      /* 0x32 */
    *(u8 *)(buf + 0x2d) = w;      /* 0x3D */
    *(u8 *)(buf + 0x21) = w;      /* 0x31 */
    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) = c3;    /* 0x10 */
    *(s16 *)(buf + 0x10) = 0;     /* 0x20 */
    *(s16 *)(buf + 0x08) = 0;     /* 0x18 */
    *(s16 *)(buf + 0x18) = cm3;   /* 0x28 */
    *(s16 *)(buf + 0x0a) = c7;    /* 0x1A */
    *(s16 *)(buf + 0x1a) = 0;     /* 0x2A */
    *(s16 *)(buf + 0x02) = 0;     /* 0x12 */
    *(s16 *)(buf + 0x12) = cm7;   /* 0x22 */
    func_80017758(buf + 0x00, p);
}

--- func_80168664 (src/shared/ov/func_80168664.h:7) 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) = D_800AE620;
    blk = (u8 *)arg0 + 0x38;
    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_8012B2CC (src/shared/ov/func_8012B2CC.h:4) shares 1: func_80049CAC ---
void func_8012B2CC(s32 a0)
{
    s32 a1;
    s32 p;
    s16 v;
    a1 = *(s32 *)(a0 + 0x20);
    if (a1 != 0) {
        func_80049CAC(a1 + 0x10, a1 + 0x34);
        p = *(s32 *)(a0 + 0x20);
        v = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50);
        *(s16 *)(p + 0x8) = v;
        *(s32 *)(p + 0x48) = v;
        v = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52);
        *(s16 *)(p + 0xA) = v;
        *(s32 *)(p + 0x4C) = v;
        v = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x54);
        *(s16 *)(p + 0xC) = v;
        *(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 1;
        *(s32 *)(p + 0x50) = v;
    }
}

--- func_80165240 (src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c:4815) shares 1: func_80017DC4 ---
void func_80165240(void *param_1, void *param_2, void *param_3)
{
    u8 prim[0x40];   /* $sp+0x10 .. 0x50 */
    u8 mat[0x20];    /* $sp+0x50 .. 0x70 */
    u8 *p = prim;

    func_80017DC4(param_2, mat);
    ApplyMatrixSV(mat, &D_80189750[0x00], p);
    ApplyMatrixSV(mat, &D_80189750[0x08], prim + 0x08);
    ApplyMatrixSV(mat, &D_80189750[0x10], prim + 0x10);
    ApplyMatrixSV(mat, &D_80189750[0x18], prim + 0x18);

    *(s16 *)(prim + 0x04) = 3;
    prim[0x38] = 0x2c;
    *(u32 *)(prim + 0x20) = D_80189778;
    *(u32 *)(prim + 0x24) = D_80189770;
    *(u32 *)(prim + 0x28) = D_8018977C;
    *(u32 *)(prim + 0x2c) = D_80189774;
    *(struct W4 *)(prim + 0x30) = *(struct W4 *)param_3;
    *(u32 *)(prim + 0x34) = 0x50000000;

    func_80016ED4(p);
}

