=== lever-free bodies in md_SC07_004 sharing a callee or global with func_801AB78C (16 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_801AC234 (src/md_SC07_004/md_SC07_004.c:8400) 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_801AB818 (src/md_SC07_004/md_SC07_004.c:7958) shares 1: func_801292C8 ---
void func_801AB818(void *a0) {
    u8 *s1 = *(u8 **)((s32)a0 + 0x24);

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

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

        *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) -= 0x370;
        *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18);

        /* tmp is stored twice and the target keeps both stores: the addend read between them resets flow.c's
         * last_mem_set; as ((s32 *)a0)[12] it is an in-struct access, which sched1 hoists above the frame store. */
        *(s32 *)&tmp = *(s32 *)(s1 + 0);
        *(s32 *)&tmp += ((s32 *)a0)[12];
        *(U16x2N *)(s1 + 0) = tmp;
    } else {
        func_801292C8((u8 *)a0);
    }
}

--- func_801AC940 (src/md_SC07_004/md_SC07_004.c:8695) 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:10063) 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:8757) 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);
        }
    }
}

