=== lever-free bodies in ov_SC06_018 sharing a callee or global with func_8018B9D4 (81 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_80191320 (src/ov_SC06_018/ov_SC06_018_jr_8019059C.c:3282) shares 3: D_80126B96 func_80016714 func_8012C218 ---
void func_80191320(s32 arg0) {
    s32 h;
    s32 e;
    s32 e2;
    u16 tmp;
    u16 tmp2;
    u16 t34d;
    u16 t34a;
    u16 t34b;
    u16 t34c;
    s16 hn0;
    s16 hn4;
    s32 cnt;
    u8 *p;
    u8 *src;
    s32 i;
    s32 c;
    u16 *v;
    SV_80191320 sp10;
    SV_80191320 sp18;
    SV_80191320 sp20;
    SV_80191320 sp28;
    u32 col[2];
    s32 pad1[2];

    if (*(s16 *)(arg0 + 0x100) != *(s16 *)(*(s32 *)(arg0 + 0x64) + 0x36)) {
        h = *(s32 *)(arg0 + 0xCC);
        if (h != 0) {
            func_80016714((void *)h, 0x38);
        }
        goto kill;
    }

    switch (*(u16 *)(arg0 + 0x34)) {
    case 0:
        ((s32 *)*(s32 *)(arg0 + 0x64))[7] = ((s32 *)*(s32 *)(arg0 + 0x64))[7] + 1;
        src = (u8 *)(arg0 + 0xDC);
        *(u32 *)((u8 *)col + 4) = 0x4040FF;
        p = D_801D57F0;
        i = 0;
        do {
            i++;
            if (*(s16 *)(p + 0xE) == 0) {
                *(Blk8_80191320 *)(p + 8) = *(Blk8_80191320 *)src;
                *(Blk4_80191320 *)p = *(Blk4_80191320 *)((u8 *)col + 4);
                c = p[0] >> 3;
                p[4] = c;
                if (c == 0) {
                    p[4] = 1;
                }
                c = p[1] >> 3;
                p[5] = c;
                if (c == 0) {
                    p[5] = 1;
                }
                c = p[2] >> 3;
                p[6] = c;
                if (c == 0) {
                    p[6] = 1;
                }
                break;
            }
            p += 0x10;
        } while (i < 0x20);
        hn0 = *(u16 *)(src + 6) - 0x100;
        *(s16 *)(src + 6) = hn0;
        if (hn0 == 0) {
            e = func_8012C194();
            if (e != 0) {
                *(s32 *)(arg0 + 0xCC) = e;
                func_8001CD9C(e, &D_801D59F0);
                *(u16 *)(e + 8) = *(u16 *)(arg0 + 6);
                *(u16 *)(e + 0xA) = *(u16 *)(arg0 + 0xA);
                tmp = *(u16 *)(arg0 + 0xE);
                *(s32 *)(e + 4) = *(s32 *)(e + 4) | 0x50000000;
                *(u16 *)(e + 0x18) = *(u16 *)(e + 0x1A) = 0x80;
                *(u16 *)(e + 0x2C) = 0xC006;
                *(u16 *)(e + 0xC) = tmp;
            }
            t34a = *(u16 *)(arg0 + 0x34);
            *(s32 *)(arg0 + 0x1C) = 8;
            *(u16 *)(arg0 + 0x34) = t34a + 1;
        }
        break;

    case 1:
        ((s32 *)*(s32 *)(arg0 + 0x64))[7] = ((s32 *)*(s32 *)(arg0 + 0x64))[7] + 1;
        e = *(s32 *)(arg0 + 0xCC);
        if (*(s16 *)(e + 0x18) < 0x500) {
            *(s16 *)(e + 0x18) = *(s16 *)(e + 0x18) + 0xC0;
            *(u16 *)(e + 0x1A) = *(u16 *)(e + 0x1A) + 0xC0;
        }
        if (func_8012BEE8(arg0) != 0) {
            *(u16 *)(arg0 + 0x102) = 0;
            *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1;
            func_8002D4C8(0x9B9, 0);
        }
        break;

    case 2:
        v = (u16 *)(arg0 + 0xE4);
        ((s32 *)*(s32 *)(arg0 + 0x64))[7] = ((s32 *)*(s32 *)(arg0 + 0x64))[7] + 1;
        func_8018F060(arg0, 0, v, 0x81818);
        func_8018F060(arg0, 1, v, 0x204040);
        sp10.vx = sp10.vy = 0;
        sp10.vz = -*(u16 *)(arg0 + 0xE4);
        sp18.vx = sp18.vy = 0;
        sp18.vz = -*(u16 *)(arg0 + 0xE6);
        if (func_8012D5E4(arg0, (s32)&sp10, (s32)&sp18, 0x96) != 0) {
            D_80126B96 = 0x4018;
        }
        sp10.vx = sp10.vy = 0;
        sp10.vz = -*(u16 *)(arg0 + 0xE6);
        *(u16 *)(arg0 + 0xE6) = *(u16 *)(arg0 + 0xE6) + 0x40;
        sp18.vx = sp18.vy = 0;
        sp18.vz = -*(u16 *)(arg0 + 0xE6);
        func_8012F214(arg0, (s32)&sp10, (s32)&sp20);
        func_8012F214(arg0, (s32)&sp18, (s32)&sp28);
        if (func_80133784(0x11, &sp20, (s32)&sp28) != 0) {
            func_8012F038(*(s32 *)(arg0 + 0x20) + 0x34, (short *)&sp28, (short *)&sp20);
            t34d = *(u16 *)(arg0 + 0x34) + 1;
            *(u16 *)(arg0 + 0xE6) = -sp20.vz;
            *(u16 *)(arg0 + 0x34) = t34d;
            *(u16 *)(arg0 + 0xDC) = sp28.vx;
            *(u16 *)(arg0 + 0xDE) = sp28.vy;
            *(u16 *)(arg0 + 0xE0) = sp28.vz;
            e2 = func_80132EF4(arg0, 0x23);
            if (e2 != 0) {
                *(u16 *)(e2 + 6) = *(u16 *)(arg0 + 0xDC);
                *(u16 *)(e2 + 0xA) = *(u16 *)(arg0 + 0xDE);
                tmp2 = *(u16 *)(arg0 + 0xE0);
                *(u16 *)(e2 + 0x34) = 0x3001;
                *(u16 *)(e2 + 0xE) = tmp2;
                *(u16 *)(*(s32 *)(e2 + 0x20) + 0x2C) = 0xC008;
                *(s32 *)(*(s32 *)(e2 + 0x20) + 4) = *(s32 *)(*(s32 *)(e2 + 0x20) + 4) | 0x50000000;
            }
            *(s32 *)(arg0 + 0x1C) = 0x1E;
            *(u16 *)(arg0 + 0x102) = 1;
            break;
        }
        if (*(s16 *)(arg0 + 0xE6) < 0x800) {
            break;
        }
        t34b = *(u16 *)(arg0 + 0x34);
        *(s32 *)(arg0 + 0x1C) = 0x1E;
        *(u16 *)(arg0 + 0x34) = t34b + 1;
        break;

    case 3:
        v = (u16 *)(arg0 + 0xE4);
        ((s32 *)*(s32 *)(arg0 + 0x64))[7] = ((s32 *)*(s32 *)(arg0 + 0x64))[7] + 1;
        func_8018F060(arg0, 0, v, 0x81818);
        func_8018F060(arg0, 1, v, 0x204040);
        sp10.vx = sp10.vy = 0;
        sp10.vz = -*(u16 *)(arg0 + 0xE4);
        sp18.vx = sp18.vy = 0;
        sp18.vz = -*(u16 *)(arg0 + 0xE6);
        if (*(s16 *)(arg0 + 0x102) != 0) {
            func_8012F214(arg0, (s32)&sp18, (s32)&sp28);
            e = func_80143C74(arg0, 0);
            if (e != 0) {
                *(u16 *)(e + 6) = sp28.vx;
                *(u16 *)(e + 0xA) = sp28.vy;
                *(u16 *)(e + 0xE) = sp28.vz;
                *(s32 *)(e + 0x10) = ((rand() & 0x7F) - 0x40) << 12;
                *(s16 *)(e + 0x16) = -0x10;
                *(s32 *)(e + 0x18) = ((rand() & 0x7F) - 0x40) << 12;
            }
        }
        if (func_8012D5E4(arg0, (s32)&sp10, (s32)&sp18, 0x96) != 0) {
            D_80126B96 = 0x4018;
        }
        cnt = *(s32 *)(arg0 + 0x1C) - 1;
        *(s32 *)(arg0 + 0x1C) = cnt;
        if (cnt == 0) {
            e = *(s32 *)(arg0 + 0xCC);
            if (e != 0) {
                func_80016714((void *)e, 0x38);
                t34c = *(u16 *)(arg0 + 0x34);
                *(s32 *)(arg0 + 0xCC) = 0;
                *(u16 *)(arg0 + 0x34) = t34c + 1;
            }
        }
        break;

    case 4:
        v = (u16 *)(arg0 + 0xE4);
        func_8018F060(arg0, 0, v, 0x81818);
        func_8018F060(arg0, 1, v, 0x204040);
        sp10.vx = sp10.vy = 0;
        sp10.vz = -*(u16 *)(arg0 + 0xE4);
        sp18.vx = sp18.vy = 0;
        sp18.vz = -*(u16 *)(arg0 + 0xE6);
        if (*(s16 *)(arg0 + 0x102) != 0) {
            func_8012F214(arg0, (s32)&sp18, (s32)&sp28);
            e = func_80143C74(arg0, 0);
            if (e != 0) {
                *(u16 *)(e + 6) = sp28.vx;
                *(u16 *)(e + 0xA) = sp28.vy;
                *(u16 *)(e + 0xE) = sp28.vz;
                *(s32 *)(e + 0x10) = ((rand() & 0x7F) - 0x40) << 12;
                *(s16 *)(e + 0x16) = -0x10;
                *(s32 *)(e + 0x18) = ((rand() & 0x7F) - 0x40) << 12;
            }
        }
        if (func_8012D5E4(arg0, (s32)&sp10, (s32)&sp18, 0x96) != 0) {
            D_80126B96 = 0x4018;
        }
        hn4 = v[0] + 0x40;
        v[0] = hn4;
        if (hn4 < *(s16 *)(v + 1)) {
            break;
        }
    kill:
        func_8012C218((void *)arg0);
        return;
    }

    func_8018F694();
    if (D_801D59F0 == 0xFF) {
        *(Blk4_80191320 *)&D_801D59F0 = *(Blk4_80191320 *)D_801D3B1C;
    } else {
        *(Blk4_80191320 *)&D_801D59F0 = *(Blk4_80191320 *)D_801D3B14;
    }
}

--- func_801439C0 (src/shared/ov/func_801439C0.h:5) shares 2: func_80016714 func_8012C218 ---
void func_801439C0(u8 *a0) {
    if (a0 != 0) {
        func_80016714(*(void **)(a0 + 0xCC), 0x38);
        func_8012C218(a0);
    }
}

--- func_8012D5E4 (src/shared/ov/func_8012D5E4.h:5) shares 2: D_80126B98 func_8012DEB8 ---
s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3) {
    if (func_8012DEB8(a0, a1, a2) != 0) {
        D_80126B98 = a3;
        return 1;
    }
    return 0;
}

--- func_8012F568 (src/shared/ov/func_8012F568.h:10) shares 2: D_80126B96 D_80126B98 ---
void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6)
{
    do { memcpy(&D_80126C38, param_5, 8); } while (0);
    memcpy(&D_80126C40, param_6, 8);
    D_80126B96 = param_2;
    D_80126B9A = param_3;
    D_80126B98 = param_4;
    D_80126B94 = D_80126B94 | param_1;
}

--- func_8014462C (src/shared/ov/func_8014462C.h:7) shares 2: func_80016714 func_8012C218 ---
void func_8014462C(u8 *a0) {
    u8 *s1 = *(u8 **)(a0 + 0xCC);
    func_8012AD80((s32)a0);
    *(u16 *)(s1 + 8) = *(u16 *)(a0 + 6);
    *(u16 *)(s1 + 0xA) = *(u16 *)(a0 + 0xA);
    *(u16 *)(s1 + 0xC) = *(u16 *)(a0 + 0xE);
    if (func_80128ED8(s1, a0 + 0xD0)) {
        func_80016714(s1, 0x38);
        func_8012C218(a0);
    }
}

--- func_8018BB18 (src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:5957) shares 2: func_80016714 func_8012C218 ---
void func_8018BB18(void *a0) {
    D_801CD4D0[*(u16 *)((s32)a0 + 0x2)]();
    if (*(u16 *)a0 != 0) {
        if ((*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x36) != *(s16 *)((s32)a0 + 0x100)) ||
            (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) == 4)) {
            if (*(s32 *)((s32)a0 + 0xCC) != 0) {
                func_80016714((void *)(*(s32 *)((s32)a0 + 0xCC)), 0x38);
            }
            func_8012C218(a0);
        }
    }
}

