=== lever-free bodies in ov_SC01_080 sharing a callee or global with func_80180598 (39 found; top 6 by shared symbols) — read them for the SHAPE ===
--- func_801827B4 (src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:7402) shares 4: func_8001D0E8 func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_801827B4(void *a0) {
    s32 ret;

    ret = ((s32 (*)(void))func_8012C1B8)();
    *(s32 *)((s32)a0 + 0x20) = ret;
    if (ret == 0) {
        func_8012CAE4(a0);
        return;
    }
    func_8001C214(ret, (s32)D_8018A2E8[*(s16 *)((s32)a0 + 0x70)]);
    func_8001D0E8(*(s32 *)((s32)a0 + 0x20), 0xC0, 0x94);
    *(s32 *)((s32)a0 + 0x58) =
        (*(s16 *)((s32)a0 + 0x70) == 2 ? (s32)&D_8018A2D8 : (s32)&D_8018A2C8) | 0x40000000;
    *(s16 *)((s32)a0 + 0x5C) = 0x800;
    ((void (*)(void *, void *))func_8012A828)(a0, &(*(u8 *)&D_80183884));
    *(s16 *)((s32)a0 + 2) = 1;
    *(s32 *)((s32)a0 + 0xDC) = 0;
}

--- func_8018045C (src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:5784) shares 4: func_8001D0E8 func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_8018045C(s32 arg0)
{
    extern void func_8012C1B8(void);
    extern void func_8012CAE4(void *a0);
    extern void func_8001C214(s32 a0, s32 a1);
    extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
    extern void func_8012A828(s32 a0, void *a1);
    extern u8 D_801AE850;
    extern u8 D_8018A044;

    s32 s0;
    s32 s1;
    s32 v0;

    v0 = ((s32 (*)(void))func_8012C1B8)();
    s1 = v0;
    *(s32 *)(arg0 + 0x20) = v0;
    if (v0 == 0) {
        func_8012CAE4((void *)arg0);
        return;
    }
    func_8001C214(s1, &D_801AE850);
    func_8001D0E8(s1, 0x800, 0x800);
    func_8012A828((void *)arg0, &D_8018A044);
    *(s32 *)(s1 + 4) = *(s32 *)(s1 + 4) | 0x40;
    *(s32 *)(arg0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4);
    *(s32 *)(arg0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xF0);
    *(s32 *)(arg0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC);
    *(u16 *)(arg0 + 2) = *(u16 *)(arg0 + 2) + 1;
}

--- func_8017DCF8 (src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:4110) shares 4: func_8001D0E8 func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_8017DCF8(s32 arg0) {

    extern u8 D_80188970;
    extern u8 D_80186FC4;
    extern s32 D_80186FB0[];
    extern u8 D_80186F6C;
    extern u8 D_80186F5C;
    s32 param_1 = arg0;
    s32 iVar1;
    s32 ret;
    s32 iVar2;

    ret = ((s32 (*)(void))func_8012C1B8)();
    iVar1 = ret;
    *(s32 *)(param_1 + 0x20) = ret;
    if (ret == 0) {
        ((void (*)(s32))func_8012CAE4)(param_1);
    } else {
        ((void (*)(s32, void *))func_8001C214)(iVar1, &D_80188970);
        func_8001D0E8(iVar1, 0x104, 0x190);
        *(u16 *)(iVar1 + 0x1c) = 0x1c00;
        *(u16 *)(iVar1 + 0x1a) = 0x1c00;
        *(u16 *)(iVar1 + 0x18) = 0x1c00;
        *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0x10;
        *(u16 *)(param_1 + 0x76) = 4;
        *(s32 *)(param_1 + 0x78) = (s32)&D_80186FC4;
        *(u16 *)(param_1 + 0xdc) = *(u16 *)(param_1 + 6);
        *(u16 *)(param_1 + 0xde) = *(u16 *)(param_1 + 0xe);
        ((void (*)(s32, s32))func_8012A828)(param_1, D_80186FB0[*(s16 *)(param_1 + 0x76)]);
        *(u16 *)(param_1 + 2) = 1;
        if (*(s16 *)(param_1 + 0x70) == 4) {
            *(s32 *)(param_1 + 0x58) = (s32)&D_80186F6C;
        } else {
            *(s32 *)(param_1 + 0x58) = (s32)&D_80186F5C;
        }
        iVar2 = *(s32 *)(param_1 + 0x20);
        *(u32 *)(param_1 + 0x58) = *(u32 *)(param_1 + 0x58) | 0x60000000;
        *(u16 *)(iVar2 + 0x1c) = 0x1c00;
        *(u16 *)(iVar2 + 0x1a) = 0x1c00;
        *(u16 *)(iVar2 + 0x18) = 0x1c00;
        *(u16 *)(param_1 + 0x5e) = 0;
        *(u16 *)(param_1 + 0x5c) = *(u16 *)(param_1 + 0x5c) | 0x8800;
        *(u16 *)(param_1 + 6) = *(u16 *)(param_1 + 0xdc);
        *(u16 *)(param_1 + 0xe) = *(u16 *)(param_1 + 0xde);
    }
}

--- func_8017FFB4 (src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:5612) shares 4: func_8001D0E8 func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_8017FFB4(s32 arg0)
{
    extern void func_8012C1B8(void);
    extern void func_8012CAE4(void *a0);
    extern void func_8001C214(s32 a0, s32 a1);
    extern void func_8001D0E8(s32 a0, s32 a1, s32 a2);
    extern void func_8012A828(s32 a0, void *a1);
    extern void func_8001D074(s32, s32);
    extern void func_800233CC(void *a0, u16 a1);
    extern void func_8001CD9C(s32 a0, void *a1);
    extern u8 D_801AE2D8;
    extern u8 D_8018A02C;
    extern u8 D_80189974;
    extern s32 D_801C7EC0;

    s32 s0;
    s32 s1;
    s32 s2 = arg0;
    s32 v0;

    do { v0 = ((s32 (*)(void))func_8012C1B8)(); } while (0);
    s0 = v0;
    *(s32 *)(s2 + 0x20) = v0;
    if (v0 == 0) {
        func_8012CAE4((void *)s2);
        return;
    }
    func_8001C214(s0, &D_801AE2D8);
    func_8001D0E8(s0, 0x800, 0x800);
    func_8012A828((void *)s2, &D_8018A02C);
    D_801C7EC0 = 0;
    s1 = ((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D);
    *(s32 *)(s2 + 0xF4) = s1;
    if (s1 != 0) {
        func_800233CC(&D_80189974, 0x50);
        func_8001CD9C(s1, &D_80189974);
    }
    s1 = ((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D);
    *(s32 *)(s2 + 0xF8) = s1;
    if (s1 != 0) {
        func_800233CC(&D_80189974, 0x40);
        func_8001CD9C(s1, &D_80189974);
    }
    *(u16 *)(s2 + 0x34) = 0;
    *(s32 *)(s2 + 4) = *(s32 *)(*(s32 *)(s2 + 0x64) + 4);
    *(s32 *)(s2 + 8) = *(s32 *)(*(s32 *)(s2 + 0x64) + 8) - *(s32 *)(*(s32 *)(s2 + 0x64) + 0xF0);
    *(s32 *)(s2 + 0xC) = *(s32 *)(*(s32 *)(s2 + 0x64) + 0xC);
    *(u16 *)(s2 + 2) = *(u16 *)(s2 + 2) + 1;
}

--- func_80182A00 (src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:7483) shares 3: func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_80182A00(void *a0) {
    s32 v0;

    v0 = ((s32 (*)(void))func_8012C1B8)();
    *(s32 *)((s32)a0 + 0x20) = v0;
    if (v0 == 0) {
        func_8012CAE4(a0);
    } else {
        func_8001CA1C((void *)v0, &D_8018A338);
        func_8012A828((s32)a0, &D_8018A3B0);
        *(u16 *)((s32)a0 + 2) = 1;
        *(s32 *)((s32)a0 + 0x1C) = 0xA;
    }
}

--- func_8014305C (src/ov_SC01_080/ov_SC01_080_jr_80140608.c:1897) shares 3: func_8012A828 func_8012C1B8 func_8012CAE4 ---
void func_8014305C(int param_1)
{
    int s0_param = param_1;
    int s1_copy;
    int iVar2;
    short sVar1;

    do { iVar2 = ((int (*)(void))func_8012C1B8)(); } while (0);
    s1_copy = iVar2;
    *(int *)(s0_param + 0x20) = iVar2;
    if (iVar2 == 0) {
        ((void (*)(int))func_8012CAE4)(s0_param);
    } else {
        ((void (*)(int, void *))func_8001CA1C)(s1_copy, D_80184B9C);
        sVar1 = (*(unsigned short *)(s0_param + 0x70) & 0xf) * 0x600 + 0xc00;
        *(short *)(s1_copy + 0x1a) = sVar1;
        *(short *)(s1_copy + 0x18) = sVar1;
        *(short *)(s0_param + 0xfc) = 0;
        func_8012A828(s0_param, D_80184BFC);
        ((void (*)(int))func_80142B2C)(s0_param);
    }
}

