=== lever-free bodies in md_SC07_004 sharing a callee or global with func_801AB818 (14 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_801AC234 (src/md_SC07_004/md_SC07_004.c:8407) shares 1: func_801292C8 ---
void func_801AC234(void *a0)
{
    extern void func_801292C8(u8 *a0);
    extern void func_8012931C(struct vec *a0);

    func_8012931C((struct vec *)a0);
    if (func_80128ED8(*(s32 *)((char *)a0 + 0x20), (s32 *)((char *)a0 + 0x24)) != 0 ||
        (*(s16 *)((char *)a0 + 0x2C) != 2 && *(s16 *)((char *)a0 + 0xA) >= -0x200)) {
        func_801292C8((u8 *)a0);
    }
}

--- func_801A72DC (src/md_SC07_004/md_SC07_004.c:4857) shares 1: func_801292C8 ---
void func_801A72DC(void *a0)
{
    extern void func_801292C8(u8 *a0);
    extern void func_8012931C(struct vec *a0);

    s32 v0;

    v0 = *(u16 *)((s32)a0 + 0x2C) + 1;
    *(u16 *)((s32)a0 + 0x2C) = v0;
    if ((s16)v0 >= 4) {
        func_801292C8((u8 *)a0);
        return;
    }
    func_8012931C((struct vec *)a0);
    *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x20) =
        (s32)D_801F8744 + (*(s16 *)((s32)a0 + 0x2C) << 6);
}

--- func_801AC940 (src/md_SC07_004/md_SC07_004.c:8702) shares 1: func_801292C8 ---
void func_801AC940(s32 arg0)
{
    extern void func_801292C8(u8 *a0);
    extern void func_8012931C(struct vec *a0);

    s32 a1 = arg0;
    s32 v0;
    s16 v1;

    v0 = *(s32 *)(a1 + 0x1C);
    if (v0 == 0) {
        func_801292C8((u8 *)a1);
        return;
    }
    v0 = v0 - 1;
    *(s32 *)(a1 + 0x1C) = v0;
    if ((v0 & 3) == 0 && *(s16 *)(a1 + 0x2C) < 3) {
        v1 = *(s16 *)(a1 + 0x2C);
        v1 = v1 + 1;
        *(s16 *)(a1 + 0x2C) = v1;
        *(s32 *)(*(s32 *)(a1 + 0x20) + 0x20) = (s32)&D_801F88B8 + (v1 << 6);
    }
    func_8012931C((struct vec *)a1);
}

--- func_801AE520 (src/md_SC07_004/md_SC07_004.c:10070) shares 1: func_801292C8 ---
void func_801AE520(void *a0) {
    u8 *s1 = D_801F8D98 + ((*(u16 *)((s32)a0 + 0x2E) & 3) << 6);

    if (*(s32 *)((s32)a0 + 0x1C) != 0) {
        U16x2L tmp;

        *(s32 *)((s32)a0 + 0x1C) -= 1;
        func_801AD55C(a0);

        *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) += 0x700;
        *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18);
        *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) += 0x60;

        *(s32 *)&tmp = *(s32 *)(s1 + 0);
        *(s32 *)&tmp -= D_801B07FC[0];
        *(U16x2L *)(s1 + 0) = tmp;

        *(s32 *)&tmp = *(s32 *)(s1 + 4);
        *(s32 *)&tmp -= D_801B0800[0];
        *(U16x2L *)(s1 + 4) = tmp;

    } else {
        func_801292C8((u8 *)a0);
    }
}

--- func_801ACA88 (src/md_SC07_004/md_SC07_004.c:8764) shares 1: func_801292C8 ---
void func_801ACA88(void *a0)
{
    extern void func_801292C8(u8 *a0);
    extern void func_8012931C(struct vec *a0);
    extern void func_8017E5D4(void *a0);
    extern void func_8017E1E8(void *a0, void *a1, void *a2);

    s16 buf[4];
    s32 v0;

    v0 = *(s32 *)((s32)a0 + 0x1C);
    if (v0 == 0) {
        if (*(void **)((s32)a0 + 0x2C) != NULL) {
            func_8017E5D4(*(void **)((s32)a0 + 0x2C));
        }
        func_801292C8((u8 *)a0);
    } else {
        *(s32 *)((s32)a0 + 0x1C) = v0 - 1;
        func_8012931C((struct vec *)a0);

        buf[0] = *(u16 *)((s32)a0 + 0x6);
        buf[1] = *(u16 *)((s32)a0 + 0xA);
        buf[2] = *(u16 *)((s32)a0 + 0xE);

        if (*(void **)((s32)a0 + 0x2C) != NULL) {
            func_8017E1E8(*(void **)((s32)a0 + 0x2C), &buf[0], NULL);
        }
    }
}

--- func_801AF1EC (src/md_SC07_004/md_SC07_004.c:10596) shares 1: func_801292C8 ---
void func_801AF1EC(void *a0) {
    if (*(u16 *)((s32)a0 + 0x2) == 0) {
        func_801AF2EC(a0);
        return;
    }

    if (*(s32 *)((s32)a0 + 0x1C) != 0) {
        *(s32 *)((s32)a0 + 0x1C) -= 1;
        func_8012931C((struct vec *)a0);

        if (*(s16 *)((s32)a0 + 0x32) == 0) {
            u16 t = *(u16 *)((s32)a0 + 0xA) + 0x1000;
            if (t >= 0x1001) {
                func_801292C8((u8 *)a0);
                return;
            }
        }
    } else {
        func_801292C8((u8 *)a0);
        return;
    }

    *(s32 *)((s32)a0 + 0x14) += *(s32 *)((s32)a0 + 0x34);
    *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) += *(u16 *)((s32)a0 + 0x30);
    *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x8) = *(u16 *)((s32)a0 + 0x6);
    *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0xA) = *(u16 *)((s32)a0 + 0xA);
    *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0xC) = *(u16 *)((s32)a0 + 0xE);
    func_801AF368((void *)*(s32 *)((s32)a0 + 0x20));
}

