=== lever-free bodies in ov_SC01_008 sharing a callee or global with func_8017DD70 (35 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_8017DBEC (src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c:3772) shares 7: D_8011511A D_80115138 D_801A3458 func_80014ED4 func_8002D4C8 func_8014168C func_8017EC68 ---
void func_8017DBEC(void) {
    extern s16 D_800B9A02;
    extern s16 D_801A3320;
    extern u8  D_800B9A15;
    extern u8  D_801151C8[];
    extern s32 D_801151D0;
    extern u32 D_801A3458;
    extern s32 D_801A345C;
    extern u16 D_8011511A;
    extern u8  D_80115138[];
    extern u16 D_80115112;
    extern s32 func_80014ED4(s32 a0);
    extern void func_80139954(void);
    extern s16 func_8014168C(s16 a0);
    extern s32 func_8017EC68();
    extern void func_8017E050(void);
    extern void func_80137B80(void);

    u16 idx;
    s32 pad[2];

    D_801151D0 = *(s32 *)&D_801151C8[(*(u16 *)&D_800B9A02) * 4];

    if (D_801A3458 != 0) {
        if (func_801399F0(D_801A345C) != 0) {
            D_801A3458 = 0;
        }
    } else {
        if ((func_80014ED4(0) & 0x50) != 0) {
            idx = *(u16 *)&D_8011511A;
            if (D_80115138[idx] == 8) {
                func_8017EC68(0xF, func_8014168C(idx));
            }
            if (D_801A3320 != 0) {
                func_80139954();
                D_800B9A15 = 0;
                func_8002D4C8(0x474, 0);
                D_80115112 = D_80115112 + 1;
            } else {
                D_80115112 = D_80115112 - 1;
            }
        }
    }

    func_8017E050();
    func_80137B80();
}

--- func_8013EB7C (src/ov_SC01_008/ov_SC01_008_jr_8013C98C.c:1968) shares 3: D_8011511A func_8002D4C8 func_8014168C ---
void func_8013EB7C(void) {
    s32 sp10[2];
    short sVar1;
    s32 iVar4;

    if ((s16)func_80141C50() == 0) {
        D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4];
        sVar1 = ((short (*)(void))func_8013F350)();
        if (D_8011511A >= 4) {
            func_8013FAF8((s16)D_8011511A, (s16)(D_8011511A + 1));
        }
        func_8013FAF8(0, 5);
        if (D_8011511A == 5) {
            iVar4 = func_8014032C((2), (((short (*)(s32))func_8014168C)(2)));
        } else {
            iVar4 = func_8014032C(((s16)D_8011511A), (((short (*)(s32))func_8014168C)((s16)D_8011511A)));
        }
        if (iVar4 != 0) {
            s32 *p130 = &D_80115130;
            if (iVar4 != *p130) {
                *p130 = iVar4;
                func_80139954();
                func_801376E8(iVar4, (s32)&(*(u8 *)&D_80180B0C));
            }
        }
        func_80137B80();
        if ((D_8011511E & 0x10) != 0 && D_8011511A < 5 && sVar1 == 0) {
            (*(s16 *)&D_80115128) = 0;
            func_8002D4C8(0x466, 0);
            if (D_8011511A != 4) {
                func_801376E8((s32)((s32 (*)(void))func_80141CA4)(), (s32)&(*(u8 *)&D_80180B0C));
            }
            (*(unsigned short *)&D_80115112) -= 1;
        } else {
            if ((D_8011511E & 0x800) != 0 || D_8011512A != 0) {
                func_8013E958();
            }
        }
    }
    (void)sp10;
}

--- func_8017D5DC (src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c:3448) shares 3: D_80115138 D_80115140 func_8017D890 ---
void func_8017D5DC(void) {
    extern s16 D_80115118;
    extern s16 D_80115126;
    extern s32 D_80115134;
    extern u8  D_80115138[];
    extern u8  D_80115140[];
    extern s16 D_80115148[][1];
    extern u8  D_80115158[];
    extern u16 D_8011514A;
    extern u16 D_8011514C;
    extern u16 D_8011515A;
    extern s32 D_8019EE8C[];
    extern u8  D_8019EED8[];
    extern u8 *D_8019EEE0[];
    extern s16 D_801A3320;
    extern s16 D_801A3324;
    extern s16 D_801A3328;
    extern u16 D_801A332C;
    extern u16 D_801A3330;
    extern u8  D_801A3464[];
    extern s32 func_80029504(void);
    extern s32 func_800291B4(s32 arg);
    extern void func_8017D890(void);

    /* COMPONENT_REF -> unconditional MEM_IN_STRUCT_P on the base store, so the
       fixed-address D_80115126 load may hoist above it (sched.c true_dependence
       escape: /s + varying vs non-/s + fixed). */

    u8 *base;
    u16 *q;
    s16 i;

    i = 0;
    base = (u8 *)&D_80115118;
    ((struct Hd4a4_8017D5DC *)base)->h = 0;
    D_80115134 = D_8019EE8C[D_80115126];
    D_801A3320 = 0;
    q = (u16 *)(base + 0x40);

    for (; i < 3; i++) {
        D_80115138[i] = *(u16 *)(D_80115134 + i * 0x20);
        /* q[i]: INDIRECT_REF of a top-level PLUS_EXPR through a TYPED pointer
           -> /s, so the D_801A3328 load hoists above this store. */
        q[i] = *(u16 *)(D_80115134 + i * 0x20 + 2);
        if (D_801A3328 == 0) {
            D_80115148[i][0] = 0;
            if (*(s16 *)((u8 *)q - 0x32) == 0) {
                D_80115140[i] = 0;
            }
        }
    }

    if (D_80115126 == 0) {
        if ((u32)func_80029504() > 0x3B5) {
            *(s16 *)D_80115158 = 0x106;
        }
    }

    if (D_80115126 == 3) {
        s16 found;
        s16 got;
        s16 j;
        u8 *p;

        found = 0;
        for (i = 0; i < 7; i++) {
            D_801A3464[i] = 0;
        }
        for (i = 0; i < 7; i++) {
            got = 0;
            p = D_8019EEE0[i];
            for (j = 0; j < D_8019EED8[i]; j++) {
                if ((func_800291B4(*p++ + 0x62) & 0x40) != 0) {
                    got = 1;
                    break;
                }
            }
            if (got != 0) {
                D_801A3464[found++] = i;
            }
        }
        D_8011515A = found | 0x100;
        if (D_801A3328 != 0) {
            D_80115148[0][0] = 1;
            D_8011514A = D_801A332C;
            D_8011514C = D_801A3330;
        }
        D_801A3324 = 0;
    }
    func_8017D890();
}

--- func_80141874 (src/ov_SC01_008/ov_SC01_008_jr_80140608.c:1351) shares 2: func_80014ED4 func_80015018 ---
void func_80141874(void) {

    extern u16 D_8011511C[];
    extern u16 D_80115116;
    extern void (*D_80180B90[])(void);
    func_801754A8();
    D_8011511E = func_80014ED4(0);
    D_8011511C[0] = func_80015018(0);
    D_80180B90[D_80115112]();
    func_80141C04();
    D_80115116 += 1;
}

--- func_8013E5E8 (src/ov_SC01_008/ov_SC01_008_jr_8013C98C.c:1754) shares 2: func_80014ED4 func_80015018 ---
void func_8013E5E8(void)
{
    extern u16 D_8011511E;
    extern u16 D_8011511C;
    extern unsigned short D_80115112;
    extern u16 D_80115116;
    extern void (*D_80180B44[])(void);
    void (**new_var)(void);
    void (*fp)(void);
    func_80029444();
    func_801754A8();
    D_8011511E = func_80014ED4(0);
    D_8011511C = func_80015018(0);
    new_var = &D_80180B44[D_80115112];
    fp = *new_var;
    fp();
    func_800190AC();
    func_80141C04();
    D_80115116 += 1;
}

--- func_8017D554 (src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c:3413) shares 2: D_8011511A D_801A3458 ---
void func_8017D554(void) {
    extern void func_800D24A0(s32 a0);
    extern void func_8017D5DC(void);
    extern s16 D_801A3328;
    extern u16 D_8011511A;
    extern u16 D_80115112;
    extern u32 D_801A3458;
    extern void *D_801A3460;
    extern s32 D_80115130;

    func_800D24A0(4);
    func_8017D5DC();
    if (D_801A3328 == 0) {
        D_8011511A = 0;
    } else {
        D_8011511A = D_801A3328;
    }
    D_801A3460 = 0;
    D_801A3458 = 0;
    D_80115130 = 0;
    D_801A3328 = 0;
    D_80115112++;
}

