From af963cbf811de46e46a59bd65af5eaefcaad2b48 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 11 Sep 2026 02:28:24 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S104=20s104=5Fe14=20=E2=80=94=20fun?= =?UTF-8?q?c=5F80180A88=20banked=20at=200=20through=20the=20whole-object?= =?UTF-8?q?=20gate=20+=20propagated=20=E2=80=94=20$16=20pin=20=E2=86=92=20?= =?UTF-8?q?0:=20a=20block-scoped=20pointer=20per=20group=20(a=2012-death?= =?UTF-8?q?=20p=20is=20refused,=20local-alloc.c:471)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/delever/calibration.json | 330 +++++++++++----------- .run/P36/delever/ledger.jsonl | 1 + src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c | 173 ++++++++---- 3 files changed, 288 insertions(+), 216 deletions(-) diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 2369ef646..ab032c23d 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "219feff28", + "head": "8a344a8c3", "stamp": "15956e4a96c4", - "generated": "2026-09-11 02:27", + "generated": "2026-09-11 02:28", "aliases": [ "main", "ov_SC03_014", @@ -21,206 +21,206 @@ "main": { "objects": 85, "identical": 85, - "seconds": 6.397000000000002, + "seconds": 6.401, "mean_s": 0.075 }, "ov_SC03_014": { "objects": 32, "identical": 32, - "seconds": 4.476, - "mean_s": 0.14 + "seconds": 4.447999999999999, + "mean_s": 0.139 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 4.3469999999999995, - "mean_s": 0.136 + "seconds": 4.4670000000000005, + "mean_s": 0.14 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 3.7049999999999996, - "mean_s": 0.132 + "seconds": 3.9239999999999995, + "mean_s": 0.14 } }, "per_object_seconds": { - "build/src/800.o": 0.706, - "build/src/800_b.o": 0.075, - "build/src/800_b_2.o": 0.278, - "build/src/800_b_o0a.o": 0.057, - "build/src/800_c.o": 0.173, - "build/src/800b2.o": 0.085, - "build/src/apicard1.o": 0.073, - "build/src/apicard2.o": 0.065, - "build/src/apicard3.o": 0.062, - "build/src/apicard4.o": 0.072, + "build/src/800.o": 0.695, + "build/src/800_b.o": 0.101, + "build/src/800_b_2.o": 0.296, + "build/src/800_b_o0a.o": 0.06, + "build/src/800_c.o": 0.191, + "build/src/800b2.o": 0.066, + "build/src/apicard1.o": 0.07, + "build/src/apicard2.o": 0.071, + "build/src/apicard3.o": 0.071, + "build/src/apicard4.o": 0.077, "build/src/apicard5.o": 0.058, - "build/src/apicard6.o": 0.065, - "build/src/apicard7.o": 0.074, - "build/src/boot.o": 0.095, - "build/src/gap.o": 0.072, - "build/src/libapi1.o": 0.064, - "build/src/libapi2.o": 0.051, - "build/src/libc2_1.o": 0.061, - "build/src/libc2_2.o": 0.058, - "build/src/libcd1.o": 0.07, - "build/src/libcd2.o": 0.062, - "build/src/libetc.o": 0.062, - "build/src/libgpu.o": 0.066, + "build/src/apicard6.o": 0.071, + "build/src/apicard7.o": 0.058, + "build/src/boot.o": 0.083, + "build/src/gap.o": 0.065, + "build/src/libapi1.o": 0.071, + "build/src/libapi2.o": 0.062, + "build/src/libc2_1.o": 0.06, + "build/src/libc2_2.o": 0.061, + "build/src/libcd1.o": 0.066, + "build/src/libcd2.o": 0.064, + "build/src/libetc.o": 0.06, + "build/src/libgpu.o": 0.068, "build/src/libgpu2.o": 0.075, - "build/src/libgs1.o": 0.053, - "build/src/libgs2.o": 0.055, - "build/src/libgs3.o": 0.06, - "build/src/libgs4.o": 0.066, - "build/src/libgs5.o": 0.054, - "build/src/libgs6.o": 0.073, - "build/src/libgs7.o": 0.054, - "build/src/libgs8.o": 0.056, - "build/src/libgte1.o": 0.064, - "build/src/libgte10.o": 0.057, + "build/src/libgs1.o": 0.059, + "build/src/libgs2.o": 0.058, + "build/src/libgs3.o": 0.056, + "build/src/libgs4.o": 0.061, + "build/src/libgs5.o": 0.063, + "build/src/libgs6.o": 0.07, + "build/src/libgs7.o": 0.058, + "build/src/libgs8.o": 0.06, + "build/src/libgte1.o": 0.065, + "build/src/libgte10.o": 0.065, "build/src/libgte11.o": 0.059, - "build/src/libgte12.o": 0.067, + "build/src/libgte12.o": 0.06, "build/src/libgte13.o": 0.057, - "build/src/libgte14.o": 0.064, - "build/src/libgte15.o": 0.06, + "build/src/libgte14.o": 0.051, + "build/src/libgte15.o": 0.068, "build/src/libgte16.o": 0.066, - "build/src/libgte17.o": 0.054, + "build/src/libgte17.o": 0.063, "build/src/libgte18.o": 0.063, "build/src/libgte19.o": 0.06, - "build/src/libgte2.o": 0.067, - "build/src/libgte20.o": 0.057, + "build/src/libgte2.o": 0.059, + "build/src/libgte20.o": 0.058, "build/src/libgte21.o": 0.058, - "build/src/libgte22.o": 0.069, - "build/src/libgte23.o": 0.06, - "build/src/libgte24.o": 0.062, - "build/src/libgte25.o": 0.063, - "build/src/libgte26.o": 0.056, + "build/src/libgte22.o": 0.059, + "build/src/libgte23.o": 0.056, + "build/src/libgte24.o": 0.061, + "build/src/libgte25.o": 0.067, + "build/src/libgte26.o": 0.061, "build/src/libgte27.o": 0.065, - "build/src/libgte28.o": 0.062, - "build/src/libgte29.o": 0.067, - "build/src/libgte3.o": 0.064, - "build/src/libgte30.o": 0.066, - "build/src/libgte4.o": 0.064, - "build/src/libgte5.o": 0.054, + "build/src/libgte28.o": 0.06, + "build/src/libgte29.o": 0.061, + "build/src/libgte3.o": 0.058, + "build/src/libgte30.o": 0.057, + "build/src/libgte4.o": 0.062, + "build/src/libgte5.o": 0.06, "build/src/libgte6.o": 0.06, - "build/src/libgte7.o": 0.071, + "build/src/libgte7.o": 0.061, "build/src/libgte8.o": 0.062, - "build/src/libgte9.o": 0.069, - "build/src/libmcrd1.o": 0.075, - "build/src/libmcrd2.o": 0.065, - "build/src/libpad1.o": 0.067, - "build/src/libpad2.o": 0.064, - "build/src/sgap.o": 0.061, - "build/src/sgap_2.o": 0.067, - "build/src/sgap_3.o": 0.061, - "build/src/sgap_4.o": 0.065, - "build/src/sgap_5.o": 0.073, - "build/src/sgap_6.o": 0.061, - "build/src/sgap_8.o": 0.065, - "build/src/snd1.o": 0.081, + "build/src/libgte9.o": 0.068, + "build/src/libmcrd1.o": 0.072, + "build/src/libmcrd2.o": 0.057, + "build/src/libpad1.o": 0.065, + "build/src/libpad2.o": 0.068, + "build/src/sgap.o": 0.062, + "build/src/sgap_2.o": 0.059, + "build/src/sgap_3.o": 0.062, + "build/src/sgap_4.o": 0.064, + "build/src/sgap_5.o": 0.06, + "build/src/sgap_6.o": 0.066, + "build/src/sgap_8.o": 0.067, + "build/src/snd1.o": 0.07, "build/src/snd10.o": 0.064, - "build/src/snd11.o": 0.063, - "build/src/snd12.o": 0.061, + "build/src/snd11.o": 0.057, + "build/src/snd12.o": 0.06, "build/src/snd2.o": 0.069, - "build/src/snd3.o": 0.061, - "build/src/snd4.o": 0.062, - "build/src/snd5.o": 0.053, - "build/src/snd6.o": 0.059, - "build/src/snd7.o": 0.062, - "build/src/snd8.o": 0.06, - "build/src/snd9.o": 0.061, - "build/src/ov_SC03_014/ov_SC03_014.o": 0.12, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.492, + "build/src/snd3.o": 0.064, + "build/src/snd4.o": 0.06, + "build/src/snd5.o": 0.058, + "build/src/snd6.o": 0.077, + "build/src/snd7.o": 0.061, + "build/src/snd8.o": 0.056, + "build/src/snd9.o": 0.068, + "build/src/ov_SC03_014/ov_SC03_014.o": 0.124, + "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.506, "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.373, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.061, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.055, "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.059, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.12, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.146, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.115, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.072, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.064, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.204, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.077, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.155, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.104, - "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.07, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.115, + "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.156, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.113, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.081, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.067, + "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.158, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.074, + "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.172, + "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.093, + "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.062, "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.07, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.079, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.47, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.255, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.099, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.192, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.081, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.463, + "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.245, + "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.078, + "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.208, "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.054, "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.101, "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.06, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.159, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.186, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.049, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.245, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.055, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.164, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.195, + "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.048, + "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.241, + "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.06, "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.055, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.048, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.067, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.109, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.498, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.36, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.052, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.05, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.118, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.142, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.101, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.079, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.058, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.177, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.069, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.152, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.083, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.061, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.062, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.093, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.451, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.259, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.083, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.179, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.055, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.102, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.06, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.153, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.197, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.046, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.263, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.061, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.056, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.053, + "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.051, + "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.066, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.119, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.506, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.379, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.049, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.051, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.121, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.14, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.115, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.069, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.06, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.157, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.068, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.164, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.08, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.067, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.07, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.092, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.466, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.248, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.096, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.206, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.059, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.098, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.065, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.166, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.198, + "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.05, + "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.272, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.062, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.055, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.054, "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.065, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.106, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.417, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.319, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.048, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.056, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.121, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.155, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.102, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.061, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.058, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.152, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.067, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.158, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.081, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.054, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.057, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.088, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.356, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.219, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.085, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.163, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.058, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.081, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.057, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.1, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.397, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.042, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.047 + "build/src/ov_SC04_011/ov_SC04_011.o": 0.113, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.426, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.34, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.044, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.054, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.119, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.147, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.076, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.062, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.176, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.072, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.162, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.089, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.063, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.068, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.097, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.352, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.22, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.171, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.06, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.089, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.07, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.11, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.428, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.054, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.054 }, "ok": true, "seconds": 2.2 diff --git a/.run/P36/delever/ledger.jsonl b/.run/P36/delever/ledger.jsonl index b5169af4d..bf32a4975 100644 --- a/.run/P36/delever/ledger.jsonl +++ b/.run/P36/delever/ledger.jsonl @@ -29432,3 +29432,4 @@ {"ts": "2026-09-11 02:27:29", "label": "s104_e14", "rung": "E", "calib": {"head": "a9438364b", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c", "fn": "func_8017F10C", "addr": 2149052684, "aliases": null, "header": false, "includers": 0, "nhash_before": "2543d02e93b1fa0e2ac18eed519b1bb9ca11717e", "nhash_after": "a064d7e394abc84b358bf7b739f67696a499e683", "source": ".run/P36/agents/ov_SC06_010__func_8017F10C/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.264, "objects": ["build/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.o"], "before_text": "void func_8017F10C(s32 a0, s32 a1)\n{\n extern void func_8004914C(void *a0);\n extern void func_800491AC(void *a0);\n extern void func_8002D4C8(s32 a0, s32 a1);\n extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);\n extern u8 D_800AF648;\n extern u16 D_80126B66;\n\n struct {\n s16 v[3]; /* sp+0x10 */\n s16 pad1; /* sp+0x16 */\n u16 sxy[2]; /* sp+0x18 */\n s32 z; /* sp+0x1C */\n s32 flag; /* sp+0x20 */\n } L;\n\n register s32 sid __asm__(\"$18\"); // !FAKE: pin $18 \u2014 NEEDED DIFFERS (P36 rung B tus7)\n void *snd = &D_800AF648;\n\n L.v[0] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48);\n L.v[1] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C);\n L.v[2] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x50);\n sid = a1;\n func_8004914C(snd);\n func_800491AC(snd);\n RotTransPers((s32)L.v, (s32)L.sxy, &L.z, &L.flag);\n\n if (L.flag >= 0 && (u32)((L.sxy[0] + 0xEF) & 0xFFFF) < 0x1DF\n && (u32)((L.sxy[1] + 0xB3) & 0xFFFF) < 0x167) {\n s32 x = (s16)L.sxy[0];\n s32 t = *(s16 *)(a0 + 0xE) - 0x680;\n s32 d = *(s16 *)&D_80126B66 - t;\n\n if ((u32)d < 0x901) {\n d = (d * 0x7F) / 0x900;\n x = (x + 0xF0) / 0x1E;\n if (x == 0x10) {\n x = 0xF;\n }\n x = x << 8;\n {\n s32 flg = 0x3000;\n func_8002D4C8(sid & 0xFFFF, ((d | flg) | x) & 0xFFFF);\n }\n }\n }\n}\n", "after_text": "void func_8017F10C(s32 a0, s32 a1)\n{\n extern void func_8004914C(void *a0);\n extern void func_800491AC(void *a0);\n extern void func_8002D4C8(s32 a0, s32 a1);\n extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);\n extern u8 D_800AF648;\n extern u16 D_80126B66;\n\n struct {\n s16 v[3]; /* sp+0x10 */\n s16 pad1; /* sp+0x16 */\n u16 sxy[2]; /* sp+0x18 */\n s32 z; /* sp+0x1C */\n s32 flag; /* sp+0x20 */\n } L;\n\n /* u16: the copy into a HImode local survives cse as its own insn after the\n * parameter copy, so the scheduler places `move s2,a1` next to the first call. */\n u16 sid = a1;\n\n L.v[0] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48);\n L.v[1] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C);\n L.v[2] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x50);\n func_8004914C(&D_800AF648);\n func_800491AC(&D_800AF648);\n RotTransPers((s32)L.v, (s32)L.sxy, &L.z, &L.flag);\n\n if (L.flag >= 0 && (u32)((L.sxy[0] + 0xEF) & 0xFFFF) < 0x1DF\n && (u32)((L.sxy[1] + 0xB3) & 0xFFFF) < 0x167) {\n s32 x = (s16)L.sxy[0];\n s32 t = *(s16 *)(a0 + 0xE) - 0x680;\n s32 d = *(s16 *)&D_80126B66 - t;\n\n if ((u32)d < 0x901) {\n d = (d * 0x7F) / 0x900;\n x = (x + 0xF0) / 0x1E;\n if (x == 0x10) {\n x = 0xF;\n }\n x = x << 8;\n func_8002D4C8(sid, (d | (0x3000 | x)) & 0xFFFF);\n }\n }\n}\n"} {"ts": "2026-09-11 02:27:46", "label": "s104_e14", "rung": "E", "calib": {"head": "42d3f035e", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c", "fn": "func_8017BEBC", "addr": 2149039804, "aliases": null, "header": false, "includers": 0, "nhash_before": "62628c1d831a73cef4e51f4db31a535b30e9735a", "nhash_after": "da24a5185aee342b1774b9e958d338764d96ad96", "source": ".run/P36/agents/ov_SC06_010__func_8017BEBC/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.26, "objects": ["build/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.o"], "before_text": "void func_8017BEBC(s32 arg0)\n{\n XDV2 tmpxy[4];\n XSV2 box[8];\n XSV2 sxy[8];\n XV8 vt[3];\n XV8 vd8;\n XMTX2 mtx;\n struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g;\n\n s32 lim;\n s32 nparts;\n XV8 *vtp;\n s32 j;\n u32 nprim;\n u32 i;\n XPart *part;\n XPrim *prim;\n u8 *pkt;\n u32 ot;\n u8 *vtx;\n u8 *vd;\n u8 *va, *vb, *vc;\n u32 w;\n u32 m24;\n s32 code;\n u32 wx, wy, wz, wzh;\n s32 xa32, xb32, t32;\n s32 xmn1, xmx1, xmn2, xmx2;\n s32 mnc, mxc;\n s16 my, mny, mx, mn;\n\n if (*(s32 *)arg0 != 0) {\n return;\n }\n\n lim = func_800491EC() + *(s32 *)(arg0 + 0x64);\n func_800547D8(arg0 + 0x10, &mtx);\n func_80052E38(&mtx);\n\n pkt = D_800A5E60;\n part = *(XPart **)(arg0 + 0xC);\n nparts = *(s32 *)(*(s32 *)(arg0 + 8) + 8);\n vtx = *(u8 **)(*(s32 *)(arg0 + 8) + 0x10);\n ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14];\n\n for (j = 0; j < nparts; j++, part++) {\n vtp = &vt[0];\n wx = part->xx;\n mn = wx;\n mx = wx >> 16;\n wy = part->yy;\n mny = wy;\n my = wy >> 16;\n wz = part->zz;\n wzh = wz >> 16;\n box[0].vx = mn; box[0].vy = mny; box[0].vz = wz;\n box[1].vx = mx; box[1].vy = mny; box[1].vz = wz;\n box[2].vx = mn; box[2].vy = mny; box[2].vz = wzh;\n box[3].vx = mx; box[3].vy = mny; box[3].vz = wzh;\n\n gte_ldv3c(&box[0]);\n gte_rtpt();\n gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]);\n gte_ldv0(&box[3]);\n gte_rtps();\n box[4].vx = mn; box[4].vy = my; box[4].vz = wz;\n box[5].vx = mx; box[5].vy = my; box[5].vz = wz;\n box[6].vx = mn; box[6].vy = my; box[6].vz = wzh;\n box[7].vx = mx; box[7].vy = my; box[7].vz = wzh;\n gte_stsxy(&sxy[3]);\n gte_ldv3c(&box[4]);\n gte_rtpt();\n gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]);\n gte_ldv0(&box[7]);\n gte_rtps();\n gte_stsxy(&sxy[7]);\n gte_stszotz(&g.otz);\n\n if (lim >= g.otz) {\n xa32 = sxy[0].vx;\n xb32 = sxy[1].vx;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vx;\n xb32 = sxy[5].vx;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) {\n xa32 = sxy[0].vy;\n xb32 = sxy[1].vy;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vy;\n xb32 = sxy[5].vy;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) {\n prim = (XPrim *)part->prim;\n nprim = part->nprim;\n i = 0;\n if (i >= nprim) goto noprim;\n m24 = 0xFFFFFF;\n do {\n w = prim->w1;\n va = vtx + (w & 0xFFFF);\n vb = vtx + (w >> 16);\n w = prim->w2;\n vt[0] = *(XV8 *)va;\n vt[1] = *(XV8 *)vb;\n vc = vtx + (w & 0xFFFF);\n w = w >> 16;\n vt[2] = *(XV8 *)vc;\n gte_ldv3c(vtp);\n gte_rtpt();\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_nclip();\n code = w & 7;\n vd = vtx + (w & 0xFFF8);\n gte_stopz(&g.opz);\n if (g.opz > 0) {\n switch (code) {\n case 6:\n case 7:\n gte_stsxy3_ft3(pkt);\n gte_stsz3(&g.sz0, &g.sz1, &g.sz2);\n if (((XFT3 *)pkt)->x0 > ((XFT3 *)pkt)->x1) {\n mx = ((XFT3 *)pkt)->x0;\n mn = ((XFT3 *)pkt)->x1;\n } else {\n mn = ((XFT3 *)pkt)->x0;\n mx = ((XFT3 *)pkt)->x1;\n }\n if (((XFT3 *)pkt)->x2 > mx) mx = ((XFT3 *)pkt)->x2;\n else if (((XFT3 *)pkt)->x2 < mn) mn = ((XFT3 *)pkt)->x2;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT3 *)pkt)->y0 > ((XFT3 *)pkt)->y1) {\n my = ((XFT3 *)pkt)->y0;\n mny = ((XFT3 *)pkt)->y1;\n } else {\n mny = ((XFT3 *)pkt)->y0;\n my = ((XFT3 *)pkt)->y1;\n }\n if (((XFT3 *)pkt)->y2 > my) my = ((XFT3 *)pkt)->y2;\n else if (((XFT3 *)pkt)->y2 < mny) mny = ((XFT3 *)pkt)->y2;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n if (g.sz0 > g.sz1) {\n za = g.sz0;\n if (za < g.sz2) za = g.sz2;\n } else {\n za = g.sz1;\n if (za < g.sz2) za = g.sz2;\n }\n g.opz = za;\n if (code == 7) g.opz = za + 0x200;\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT3 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT3 *)pkt)->uvc0 = tp[1];\n ((XFT3 *)pkt)->uvp1 = tp[2];\n ((XFT3 *)pkt)->uv2 = tp[3];\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x7000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x20;\n }\n }\n break;\n case 2:\n case 3:\n gte_stsxy3c(&tmpxy[0]);\n vd8 = *(XV8 *)vd;\n gte_ldv0(&vd8);\n gte_rtps();\n if (tmpxy[0].vx > tmpxy[1].vx) {\n mx = tmpxy[0].vx;\n mn = tmpxy[1].vx;\n } else {\n mn = tmpxy[0].vx;\n mx = tmpxy[1].vx;\n }\n if (tmpxy[2].vx > mx) mx = tmpxy[2].vx;\n else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx;\n if (tmpxy[0].vy > tmpxy[1].vy) {\n my = tmpxy[0].vy;\n mny = tmpxy[1].vy;\n } else {\n mny = tmpxy[0].vy;\n my = tmpxy[1].vy;\n }\n if (tmpxy[2].vy > my) my = tmpxy[2].vy;\n else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy;\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3);\n gte_stsxy((long *)&((XFT4 *)pkt)->x3);\n if (((XFT4 *)pkt)->x3 < mn) mn = ((XFT4 *)pkt)->x3;\n else if (mx < ((XFT4 *)pkt)->x3) mx = ((XFT4 *)pkt)->x3;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT4 *)pkt)->y3 < mny) mny = ((XFT4 *)pkt)->y3;\n else if (my < ((XFT4 *)pkt)->y3) my = ((XFT4 *)pkt)->y3;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, zb, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n u32 uvw;\n zb = g.sz2;\n if (zb < g.sz3) zb = g.sz3;\n za = g.sz0;\n if (za < g.sz1) za = g.sz1;\n if (za < zb) za = zb;\n g.opz = za;\n if (code == 3) g.opz = za + 0x200;\n *(u32 *)&((XFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0];\n *(u32 *)&((XFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1];\n *(u32 *)&((XFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2];\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT4 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT4 *)pkt)->uvc0 = tp[1];\n ((XFT4 *)pkt)->uvp1 = tp[2];\n uvw = tp[3];\n ((XFT4 *)pkt)->uv2 = uvw;\n ((XFT4 *)pkt)->uv3 = uvw >> 16;\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x9000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x28;\n }\n }\n }\n break;\n }\n }\n }\n i++;\n prim++;\n } while (i < nprim);\n __asm__ __volatile__(\"\" : \"=r\"(m24) : \"0\"(m24)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B tus7)\n noprim: ;\n }\n }\n }\n }\n D_800A5E60 = pkt;\n}\n", "after_text": "void func_8017BEBC(s32 arg0)\n{\n XDV2 tmpxy[4];\n XSV2 box[8];\n XSV2 sxy[8];\n XV8 vt[3];\n XV8 vd8;\n XMTX2 mtx;\n struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g;\n\n s32 lim;\n s32 nparts;\n XV8 *vtp;\n s32 j;\n u32 nprim;\n u32 i;\n XPart *part;\n XPrim *prim;\n u8 *pkt;\n u32 ot;\n u8 *vtx;\n u8 *vd;\n u8 *va, *vb, *vc;\n u32 w;\n u32 m24;\n s32 code;\n u32 wx, wy, wz, wzh;\n s32 xa32, xb32, t32;\n s32 xmn1, xmx1, xmn2, xmx2;\n s32 mnc, mxc;\n s16 my, mny, mx, mn;\n\n if (*(s32 *)arg0 != 0) {\n return;\n }\n\n lim = func_800491EC() + *(s32 *)(arg0 + 0x64);\n func_800547D8(arg0 + 0x10, &mtx);\n func_80052E38(&mtx);\n\n pkt = D_800A5E60;\n part = *(XPart **)(arg0 + 0xC);\n nparts = *(s32 *)(*(s32 *)(arg0 + 8) + 8);\n vtx = *(u8 **)(*(s32 *)(arg0 + 8) + 0x10);\n ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14];\n\n for (j = 0; j < nparts; j++, part++) {\n vtp = &vt[0];\n wx = part->xx;\n mn = wx;\n mx = wx >> 16;\n wy = part->yy;\n mny = wy;\n my = wy >> 16;\n wz = part->zz;\n wzh = wz >> 16;\n box[0].vx = mn; box[0].vy = mny; box[0].vz = wz;\n box[1].vx = mx; box[1].vy = mny; box[1].vz = wz;\n box[2].vx = mn; box[2].vy = mny; box[2].vz = wzh;\n box[3].vx = mx; box[3].vy = mny; box[3].vz = wzh;\n\n gte_ldv3c(&box[0]);\n gte_rtpt();\n gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]);\n gte_ldv0(&box[3]);\n gte_rtps();\n box[4].vx = mn; box[4].vy = my; box[4].vz = wz;\n box[5].vx = mx; box[5].vy = my; box[5].vz = wz;\n box[6].vx = mn; box[6].vy = my; box[6].vz = wzh;\n box[7].vx = mx; box[7].vy = my; box[7].vz = wzh;\n gte_stsxy(&sxy[3]);\n gte_ldv3c(&box[4]);\n gte_rtpt();\n gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]);\n gte_ldv0(&box[7]);\n gte_rtps();\n gte_stsxy(&sxy[7]);\n gte_stszotz(&g.otz);\n\n if (lim >= g.otz) {\n xa32 = sxy[0].vx;\n xb32 = sxy[1].vx;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vx;\n xb32 = sxy[5].vx;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) {\n xa32 = sxy[0].vy;\n xb32 = sxy[1].vy;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vy;\n xb32 = sxy[5].vy;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) {\n prim = (XPrim *)part->prim;\n nprim = part->nprim;\n i = 0;\n if (i >= nprim) goto noprim;\n m24 = 0xFFFFFF;\n do {\n w = prim->w1;\n va = vtx + (w & 0xFFFF);\n vb = vtx + (w >> 16);\n w = prim->w2;\n vt[0] = *(XV8 *)va;\n vt[1] = *(XV8 *)vb;\n vc = vtx + (w & 0xFFFF);\n w = w >> 16;\n vt[2] = *(XV8 *)vc;\n gte_ldv3c(vtp);\n gte_rtpt();\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_nclip();\n code = w & 7;\n vd = vtx + (w & 0xFFF8);\n gte_stopz(&g.opz);\n if (g.opz > 0) {\n switch (code) {\n case 6:\n case 7:\n gte_stsxy3_ft3(pkt);\n gte_stsz3(&g.sz0, &g.sz1, &g.sz2);\n if (((XFT3 *)pkt)->x0 > ((XFT3 *)pkt)->x1) {\n mx = ((XFT3 *)pkt)->x0;\n mn = ((XFT3 *)pkt)->x1;\n } else {\n mn = ((XFT3 *)pkt)->x0;\n mx = ((XFT3 *)pkt)->x1;\n }\n if (((XFT3 *)pkt)->x2 > mx) mx = ((XFT3 *)pkt)->x2;\n else if (((XFT3 *)pkt)->x2 < mn) mn = ((XFT3 *)pkt)->x2;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT3 *)pkt)->y0 > ((XFT3 *)pkt)->y1) {\n my = ((XFT3 *)pkt)->y0;\n mny = ((XFT3 *)pkt)->y1;\n } else {\n mny = ((XFT3 *)pkt)->y0;\n my = ((XFT3 *)pkt)->y1;\n }\n if (((XFT3 *)pkt)->y2 > my) my = ((XFT3 *)pkt)->y2;\n else if (((XFT3 *)pkt)->y2 < mny) mny = ((XFT3 *)pkt)->y2;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n /* g.opz stored in each arm: post-reload cross-jump merges the two\n * stores back into one, but flow counted both (the &g.sz0/&g.sz1\n * allocno tie then falls the target's way). */\n if (g.sz0 > g.sz1) {\n za = g.sz0;\n if (za < g.sz2) za = g.sz2;\n g.opz = za;\n } else {\n za = g.sz1;\n if (za < g.sz2) za = g.sz2;\n g.opz = za;\n }\n if (code == 7) g.opz = za + 0x200;\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT3 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT3 *)pkt)->uvc0 = tp[1];\n ((XFT3 *)pkt)->uvp1 = tp[2];\n ((XFT3 *)pkt)->uv2 = tp[3];\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x7000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x20;\n }\n }\n break;\n case 2:\n case 3:\n gte_stsxy3c(&tmpxy[0]);\n vd8 = *(XV8 *)vd;\n gte_ldv0(&vd8);\n gte_rtps();\n if (tmpxy[0].vx > tmpxy[1].vx) {\n mx = tmpxy[0].vx;\n mn = tmpxy[1].vx;\n } else {\n mn = tmpxy[0].vx;\n mx = tmpxy[1].vx;\n }\n if (tmpxy[2].vx > mx) mx = tmpxy[2].vx;\n else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx;\n if (tmpxy[0].vy > tmpxy[1].vy) {\n my = tmpxy[0].vy;\n mny = tmpxy[1].vy;\n } else {\n mny = tmpxy[0].vy;\n my = tmpxy[1].vy;\n }\n if (tmpxy[2].vy > my) my = tmpxy[2].vy;\n else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy;\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3);\n gte_stsxy((long *)&((XFT4 *)pkt)->x3);\n if (((XFT4 *)pkt)->x3 < mn) mn = ((XFT4 *)pkt)->x3;\n else if (mx < ((XFT4 *)pkt)->x3) mx = ((XFT4 *)pkt)->x3;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT4 *)pkt)->y3 < mny) mny = ((XFT4 *)pkt)->y3;\n else if (my < ((XFT4 *)pkt)->y3) my = ((XFT4 *)pkt)->y3;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, zb, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n u32 uvw;\n zb = g.sz2;\n if (zb < g.sz3) zb = g.sz3;\n za = g.sz0;\n if (za < g.sz1) za = g.sz1;\n if (za < zb) za = zb;\n g.opz = za;\n if (code == 3) g.opz = za + 0x200;\n *(u32 *)&((XFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0];\n *(u32 *)&((XFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1];\n *(u32 *)&((XFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2];\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT4 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT4 *)pkt)->uvc0 = tp[1];\n ((XFT4 *)pkt)->uvp1 = tp[2];\n uvw = tp[3];\n ((XFT4 *)pkt)->uv2 = uvw;\n ((XFT4 *)pkt)->uv3 = uvw >> 16;\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x9000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x28;\n }\n }\n }\n break;\n }\n }\n }\n i++;\n prim++;\n } while (i < nprim);\n noprim: ;\n }\n }\n }\n }\n D_800A5E60 = pkt;\n}\n"} {"ts": "2026-09-11 02:28:04", "label": "s104_e14", "rung": "E", "calib": {"head": "219feff28", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c", "fn": "func_8017CAD4", "addr": 2149042900, "aliases": null, "header": false, "includers": 0, "nhash_before": "aefeceacd4cb55f0f0ff5441fe97c2a3c1edee22", "nhash_after": "cc90fa84d018d93ce376d74d9bc16ba5892ce5c4", "source": ".run/P36/agents/ov_SC06_010__func_8017CAD4/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.262, "objects": ["build/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.o"], "before_text": "void func_8017CAD4(s32 *ctx, s32 *model, s32 mtxsrc)\n{\n XDV2 tmpxy[4];\n XSV2 box[8];\n XSV2 sxy[8];\n XV8 vt[3];\n XV8 vd8;\n XMTX2 mtx;\n struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g;\n\n s32 lim;\n s32 cl;\n s32 nparts;\n XV8 *vtp;\n s32 j;\n u32 nprim;\n u32 i;\n XPart *part;\n XPrim *prim;\n u8 *pkt;\n u32 ot;\n u8 *vtx;\n u8 *vd;\n u8 *va, *vb, *vc;\n u32 w;\n u32 m24;\n s32 code;\n u32 wx, wy, wz, wzh;\n s32 xa32, xb32, t32;\n s32 xmn1, xmx1, xmn2, xmx2;\n s32 mnc, mxc;\n s16 my, mny, mx, mn;\n\n if (*ctx != 0) {\n return;\n }\n\n lim = func_800491EC() + *(s32 *)((u8 *)ctx + 0x64);\n func_800547D8(mtxsrc, &mtx);\n func_80052E38(&mtx);\n\n pkt = D_800A5E60;\n part = (XPart *)((u8 *)model + 0x14);\n nparts = *(s32 *)((u8 *)model + 8);\n vtx = *(u8 **)((u8 *)model + 0x10);\n ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14];\n\n for (j = 0; j < nparts; j++, part++) {\n vtp = &vt[0];\n wx = part->xx;\n mn = wx;\n mx = wx >> 16;\n wy = part->yy;\n mny = wy;\n my = wy >> 16;\n wz = part->zz;\n wzh = wz >> 16;\n box[0].vx = mn; box[0].vy = mny; box[0].vz = wz;\n box[1].vx = mx; box[1].vy = mny; box[1].vz = wz;\n box[2].vx = mn; box[2].vy = mny; box[2].vz = wzh;\n box[3].vx = mx; box[3].vy = mny; box[3].vz = wzh;\n\n gte_ldv3c(&box[0]);\n gte_rtpt();\n gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]);\n gte_ldv0(&box[3]);\n gte_rtps();\n box[4].vx = mn; box[4].vy = my; box[4].vz = wz;\n box[5].vx = mx; box[5].vy = my; box[5].vz = wz;\n box[6].vx = mn; box[6].vy = my; box[6].vz = wzh;\n box[7].vx = mx; box[7].vy = my; box[7].vz = wzh;\n gte_stsxy(&sxy[3]);\n gte_ldv3c(&box[4]);\n gte_rtpt();\n gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]);\n gte_ldv0(&box[7]);\n gte_rtps();\n gte_stsxy(&sxy[7]);\n gte_stszotz(&g.otz);\n\n if (lim >= g.otz) {\n xa32 = sxy[0].vx;\n xb32 = sxy[1].vx;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vx;\n xb32 = sxy[5].vx;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) {\n xa32 = sxy[0].vy;\n xb32 = sxy[1].vy;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vy;\n xb32 = sxy[5].vy;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) {\n prim = (XPrim *)part->prim;\n nprim = part->nprim;\n i = 0;\n if (i >= nprim) goto noprim;\n m24 = 0xFFFFFF;\n do {\n w = prim->w1;\n va = vtx + (w & 0xFFFF);\n vb = vtx + (w >> 16);\n w = prim->w2;\n vt[0] = *(XV8 *)va;\n vt[1] = *(XV8 *)vb;\n vc = vtx + (w & 0xFFFF);\n w = w >> 16;\n vt[2] = *(XV8 *)vc;\n gte_ldv3c(vtp);\n gte_rtpt();\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_nclip();\n code = w & 7;\n vd = vtx + (w & 0xFFF8);\n gte_stopz(&g.opz);\n if (g.opz > 0) {\n switch (code) {\n case 6:\n case 7:\n gte_stsxy3_ft3(pkt);\n gte_stsz3(&g.sz0, &g.sz1, &g.sz2);\n if (((XFT3 *)pkt)->x0 > ((XFT3 *)pkt)->x1) {\n mx = ((XFT3 *)pkt)->x0;\n mn = ((XFT3 *)pkt)->x1;\n } else {\n mn = ((XFT3 *)pkt)->x0;\n mx = ((XFT3 *)pkt)->x1;\n }\n if (((XFT3 *)pkt)->x2 > mx) mx = ((XFT3 *)pkt)->x2;\n else if (((XFT3 *)pkt)->x2 < mn) mn = ((XFT3 *)pkt)->x2;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT3 *)pkt)->y0 > ((XFT3 *)pkt)->y1) {\n my = ((XFT3 *)pkt)->y0;\n mny = ((XFT3 *)pkt)->y1;\n } else {\n mny = ((XFT3 *)pkt)->y0;\n my = ((XFT3 *)pkt)->y1;\n }\n if (((XFT3 *)pkt)->y2 > my) my = ((XFT3 *)pkt)->y2;\n else if (((XFT3 *)pkt)->y2 < mny) mny = ((XFT3 *)pkt)->y2;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n if (g.sz0 > g.sz1) {\n za = g.sz0;\n if (za < g.sz2) za = g.sz2;\n } else {\n za = g.sz1;\n if (za < g.sz2) za = g.sz2;\n }\n g.opz = za;\n if (code == 7) g.opz = za + 0x40;\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT3 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT3 *)pkt)->uvc0 = tp[1] + (cl << 22);\n ((XFT3 *)pkt)->uvp1 = tp[2];\n ((XFT3 *)pkt)->uv2 = tp[3];\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x7000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x20;\n }\n }\n break;\n case 2:\n case 3:\n gte_stsxy3c(&tmpxy[0]);\n vd8 = *(XV8 *)vd;\n gte_ldv0(&vd8);\n gte_rtps();\n if (tmpxy[0].vx > tmpxy[1].vx) {\n mx = tmpxy[0].vx;\n mn = tmpxy[1].vx;\n } else {\n mn = tmpxy[0].vx;\n mx = tmpxy[1].vx;\n }\n if (tmpxy[2].vx > mx) mx = tmpxy[2].vx;\n else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx;\n if (tmpxy[0].vy > tmpxy[1].vy) {\n my = tmpxy[0].vy;\n mny = tmpxy[1].vy;\n } else {\n mny = tmpxy[0].vy;\n my = tmpxy[1].vy;\n }\n if (tmpxy[2].vy > my) my = tmpxy[2].vy;\n else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy;\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3);\n gte_stsxy((long *)&((XFT4 *)pkt)->x3);\n if (((XFT4 *)pkt)->x3 < mn) mn = ((XFT4 *)pkt)->x3;\n else if (mx < ((XFT4 *)pkt)->x3) mx = ((XFT4 *)pkt)->x3;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT4 *)pkt)->y3 < mny) mny = ((XFT4 *)pkt)->y3;\n else if (my < ((XFT4 *)pkt)->y3) my = ((XFT4 *)pkt)->y3;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, zb, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n u32 uvw;\n zb = g.sz2;\n if (zb < g.sz3) zb = g.sz3;\n za = g.sz0;\n if (za < g.sz1) za = g.sz1;\n if (za < zb) za = zb;\n g.opz = za;\n if (code == 3) g.opz = za + 0x40;\n *(u32 *)&((XFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0];\n *(u32 *)&((XFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1];\n *(u32 *)&((XFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2];\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT4 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT4 *)pkt)->uvc0 = tp[1];\n ((XFT4 *)pkt)->uvp1 = tp[2];\n uvw = tp[3];\n ((XFT4 *)pkt)->uv2 = uvw;\n ((XFT4 *)pkt)->uv3 = uvw >> 16;\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x9000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x28;\n }\n }\n }\n break;\n }\n }\n }\n i++;\n prim++;\n } while (i < nprim);\n __asm__ __volatile__(\"\" : \"=r\"(m24) : \"0\"(m24)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B tus7)\n noprim: ;\n }\n }\n }\n }\n D_800A5E60 = pkt;\n}\n", "after_text": "void func_8017CAD4(s32 *ctx, s32 *model, s32 mtxsrc)\n{\n XDV2 tmpxy[4];\n XSV2 box[8];\n XSV2 sxy[8];\n XV8 vt[3];\n XV8 vd8;\n XMTX2 mtx;\n struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g;\n\n s32 lim;\n s32 cl;\n s32 nparts;\n XV8 *vtp;\n s32 j;\n u32 nprim;\n u32 i;\n XPart *part;\n XPrim *prim;\n u8 *pkt;\n u32 ot;\n u8 *vtx;\n u8 *vd;\n u8 *va, *vb, *vc;\n u32 w;\n u32 m24;\n s32 code;\n u32 wx, wy, wz, wzh;\n s32 xa32, xb32, t32;\n s32 xmn1, xmx1, xmn2, xmx2;\n s32 mnc, mxc;\n s16 my, mny, mx, mn;\n\n if (*ctx != 0) {\n return;\n }\n\n lim = func_800491EC() + *(s32 *)((u8 *)ctx + 0x64);\n func_800547D8(mtxsrc, &mtx);\n func_80052E38(&mtx);\n\n pkt = D_800A5E60;\n part = (XPart *)((u8 *)model + 0x14);\n nparts = *(s32 *)((u8 *)model + 8);\n vtx = *(u8 **)((u8 *)model + 0x10);\n ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14];\n\n for (j = 0; j < nparts; j++, part++) {\n vtp = &vt[0];\n wx = part->xx;\n mn = wx;\n mx = wx >> 16;\n wy = part->yy;\n mny = wy;\n my = wy >> 16;\n wz = part->zz;\n wzh = wz >> 16;\n box[0].vx = mn; box[0].vy = mny; box[0].vz = wz;\n box[1].vx = mx; box[1].vy = mny; box[1].vz = wz;\n box[2].vx = mn; box[2].vy = mny; box[2].vz = wzh;\n box[3].vx = mx; box[3].vy = mny; box[3].vz = wzh;\n\n gte_ldv3c(&box[0]);\n gte_rtpt();\n gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]);\n gte_ldv0(&box[3]);\n gte_rtps();\n box[4].vx = mn; box[4].vy = my; box[4].vz = wz;\n box[5].vx = mx; box[5].vy = my; box[5].vz = wz;\n box[6].vx = mn; box[6].vy = my; box[6].vz = wzh;\n box[7].vx = mx; box[7].vy = my; box[7].vz = wzh;\n gte_stsxy(&sxy[3]);\n gte_ldv3c(&box[4]);\n gte_rtpt();\n gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]);\n gte_ldv0(&box[7]);\n gte_rtps();\n gte_stsxy(&sxy[7]);\n gte_stszotz(&g.otz);\n\n if (lim >= g.otz) {\n xa32 = sxy[0].vx;\n xb32 = sxy[1].vx;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vx;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vx;\n xb32 = sxy[5].vx;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vx;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) {\n xa32 = sxy[0].vy;\n xb32 = sxy[1].vy;\n if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; }\n t32 = sxy[2].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n t32 = sxy[3].vy;\n if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32;\n xa32 = sxy[4].vy;\n xb32 = sxy[5].vy;\n if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; }\n t32 = sxy[6].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n t32 = sxy[7].vy;\n if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32;\n mnc = xmn1;\n if (xmn2 < xmn1) mnc = xmn2;\n mxc = xmx1;\n if (mxc < xmx2) mxc = xmx2;\n if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) {\n prim = (XPrim *)part->prim;\n nprim = part->nprim;\n i = 0;\n if (i >= nprim) goto noprim;\n m24 = 0xFFFFFF;\n do {\n w = prim->w1;\n va = vtx + (w & 0xFFFF);\n vb = vtx + (w >> 16);\n w = prim->w2;\n vt[0] = *(XV8 *)va;\n vt[1] = *(XV8 *)vb;\n vc = vtx + (w & 0xFFFF);\n w = w >> 16;\n vt[2] = *(XV8 *)vc;\n gte_ldv3c(vtp);\n gte_rtpt();\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_nclip();\n code = w & 7;\n vd = vtx + (w & 0xFFF8);\n gte_stopz(&g.opz);\n if (g.opz > 0) {\n switch (code) {\n case 6:\n case 7:\n gte_stsxy3_ft3(pkt);\n gte_stsz3(&g.sz0, &g.sz1, &g.sz2);\n if (((XFT3 *)pkt)->x0 > ((XFT3 *)pkt)->x1) {\n mx = ((XFT3 *)pkt)->x0;\n mn = ((XFT3 *)pkt)->x1;\n } else {\n mn = ((XFT3 *)pkt)->x0;\n mx = ((XFT3 *)pkt)->x1;\n }\n if (((XFT3 *)pkt)->x2 > mx) mx = ((XFT3 *)pkt)->x2;\n else if (((XFT3 *)pkt)->x2 < mn) mn = ((XFT3 *)pkt)->x2;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT3 *)pkt)->y0 > ((XFT3 *)pkt)->y1) {\n my = ((XFT3 *)pkt)->y0;\n mny = ((XFT3 *)pkt)->y1;\n } else {\n mny = ((XFT3 *)pkt)->y0;\n my = ((XFT3 *)pkt)->y1;\n }\n if (((XFT3 *)pkt)->y2 > my) my = ((XFT3 *)pkt)->y2;\n else if (((XFT3 *)pkt)->y2 < mny) mny = ((XFT3 *)pkt)->y2;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n /* g.opz stored in each arm: post-reload cross-jump merges the two\n * stores back into one, but flow counted both (the &g.sz0/&g.sz1\n * allocno tie then falls the target's way). */\n if (g.sz0 > g.sz1) {\n za = g.sz0;\n if (za < g.sz2) za = g.sz2;\n g.opz = za;\n } else {\n za = g.sz1;\n if (za < g.sz2) za = g.sz2;\n g.opz = za;\n }\n if (code == 7) g.opz = za + 0x40;\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT3 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT3 *)pkt)->uvc0 = tp[1] + (cl << 22);\n ((XFT3 *)pkt)->uvp1 = tp[2];\n ((XFT3 *)pkt)->uv2 = tp[3];\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x7000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x20;\n }\n }\n break;\n case 2:\n case 3:\n gte_stsxy3c(&tmpxy[0]);\n vd8 = *(XV8 *)vd;\n gte_ldv0(&vd8);\n gte_rtps();\n if (tmpxy[0].vx > tmpxy[1].vx) {\n mx = tmpxy[0].vx;\n mn = tmpxy[1].vx;\n } else {\n mn = tmpxy[0].vx;\n mx = tmpxy[1].vx;\n }\n if (tmpxy[2].vx > mx) mx = tmpxy[2].vx;\n else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx;\n if (tmpxy[0].vy > tmpxy[1].vy) {\n my = tmpxy[0].vy;\n mny = tmpxy[1].vy;\n } else {\n mny = tmpxy[0].vy;\n my = tmpxy[1].vy;\n }\n if (tmpxy[2].vy > my) my = tmpxy[2].vy;\n else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy;\n gte_stflg(&g.flag);\n if (!(g.flag & 0x7F85E000)) {\n gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3);\n gte_stsxy((long *)&((XFT4 *)pkt)->x3);\n if (((XFT4 *)pkt)->x3 < mn) mn = ((XFT4 *)pkt)->x3;\n else if (mx < ((XFT4 *)pkt)->x3) mx = ((XFT4 *)pkt)->x3;\n if (mx >= -0xA0 && mn < 0xA1) {\n if (((XFT4 *)pkt)->y3 < mny) mny = ((XFT4 *)pkt)->y3;\n else if (my < ((XFT4 *)pkt)->y3) my = ((XFT4 *)pkt)->y3;\n if (my >= -0x6E && mny < 0x6F) {\n s32 za, zb, tz, q, rgb;\n u32 *otp;\n u32 *tp;\n u32 uvw;\n zb = g.sz2;\n if (zb < g.sz3) zb = g.sz3;\n za = g.sz0;\n if (za < g.sz1) za = g.sz1;\n if (za < zb) za = zb;\n g.opz = za;\n if (code == 3) g.opz = za + 0x40;\n *(u32 *)&((XFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0];\n *(u32 *)&((XFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1];\n *(u32 *)&((XFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2];\n tz = g.opz;\n tp = (u32 *)prim->w0;\n q = 0x80 - (tz - 0x190) / 24;\n if (q < 0) q = 0;\n rgb = q | (q << 8) | (q << 16);\n ((XFT4 *)pkt)->rgbc = (tp[0] & 0xFF000000) | rgb;\n ((XFT4 *)pkt)->uvc0 = tp[1];\n ((XFT4 *)pkt)->uvp1 = tp[2];\n uvw = tp[3];\n ((XFT4 *)pkt)->uv2 = uvw;\n ((XFT4 *)pkt)->uv3 = uvw >> 16;\n otp = (u32 *)(((tz >> 2) << 2) + ot);\n *(u32 *)pkt = (*otp & m24) | 0x9000000;\n *otp = (*otp & 0xFF000000) | ((u32)pkt & m24);\n pkt += 0x28;\n }\n }\n }\n break;\n }\n }\n }\n i++;\n prim++;\n } while (i < nprim);\n noprim: ;\n }\n }\n }\n }\n D_800A5E60 = pkt;\n}\n"} +{"ts": "2026-09-11 02:28:22", "label": "s104_e14", "rung": "E", "calib": {"head": "8a344a8c3", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c", "fn": "func_80180A88", "addr": 2149059208, "aliases": null, "header": false, "includers": 0, "nhash_before": "05c18ee0ac2bc4d034d90c597123f1bc91e42e81", "nhash_after": "8c1e55a803c6d94f3a54edfa04ebf6b96171ca7e", "source": ".run/P36/agents/ov_SC06_010__func_80180A88/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.275, "objects": ["build/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.o"], "before_text": "s32 func_80180A88(void)\n{\n register s16 *p __asm__(\"$16\"); // !FAKE: pin $16 \u2014 NEEDED DIFFERS (P36 rung B tus7)\n s16 *q;\n\n switch (D_801B2BF4) {\n case 0:\n func_8013C0F8(D_801968BC);\n ((void (*)(void *))func_8017CA80)(D_801B2578);\n D_801B2594 = -0x480;\n D_801B2598 = 0x5F0;\n D_801B25CC += 0x700;\n func_8013C0F8(D_80197BE0);\n ((void (*)(void *))func_8017CA80)(D_801B25D0);\n D_801B25EC = -0x480;\n D_801B25F0 = 0x5F0;\n D_801B2624 += 0x700;\n func_8013C0F8(D_80199164);\n ((void (*)(void *))func_8017CA80)(D_801B2628);\n D_801B2644 = -0x480;\n D_801B2648 = 0x5F0;\n D_801B267C += 0x700;\n func_8013C0F8(D_8019A9D8);\n ((void (*)(void *))func_8017CA80)(D_801B2680);\n D_801B269C = -0x480;\n D_801B26A0 = 0x5F0;\n D_801B26D4 += 0x700;\n func_8013C0F8(D_8019C68C);\n ((void (*)(void *))func_8017CA80)(D_801B26D8);\n D_801B26F4 = -0x480;\n D_801B26F8 = 0x5F0;\n D_801B272C += 0x700;\n func_8013C0F8(D_8019F570);\n ((void (*)(void *))func_8017CA80)(D_801B2730);\n D_801B274C = -0x480;\n D_801B2750 = 0x5F0;\n D_801B2784 += 0x700;\n func_8013C0F8(D_801A0044);\n ((void (*)(void *))func_8017CA80)(D_801B2788);\n D_801B27A4 = -0x480;\n D_801B27A8 = 0x5F0;\n D_801B27DC += 0x700;\n func_8013C0F8(D_801A0A18);\n ((void (*)(void *))func_8017CA80)(D_801B27E0);\n D_801B27FC = -0x480;\n D_801B2800 = 0x5F0;\n D_801B2834 += 0x700;\n func_8013C0F8(D_801A13EC);\n ((void (*)(void *))func_8017CA80)(D_801B2838);\n D_801B2854 = -0x480;\n D_801B2858 = 0x5F0;\n D_801B288C += 0x700;\n func_8013C0F8(D_801A1FC0);\n ((void (*)(void *))func_8017CA80)(D_801B2890);\n D_801B28AC = -0x480;\n D_801B28B0 = 0x5F0;\n D_801B28E4 += 0x700;\n func_8013C0F8(D_801A2C24);\n ((void (*)(void *))func_8017CA80)(D_801B28E8);\n D_801B2904 = -0x480;\n D_801B2908 = 0x5F0;\n D_801B293C += 0xB00;\n func_8013C0F8(D_801A3B38);\n ((void (*)(void *))func_8017CA80)(D_801B2940);\n D_801B295C = -0x480;\n D_801B2960 = 0x5F0;\n D_801B2994 += 0x700;\n D_801B2BF4++;\n break;\n case 1:\n *(p = &D_801B25CC) = func_8017F098(0) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801968BC,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B2624) = func_8017F098(1) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_80197BE0,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B267C) = func_8017F098(2) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_80199164,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B26D4) = func_8017F098(3) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019A9D8,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B272C) = func_8017F098(4) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019C68C,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B2784) = func_8017F098(5) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019F570,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B27DC) = func_8017F098(6) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A0044,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B2834) = func_8017F098(7) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A0A18,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B288C) = func_8017F098(8) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A13EC,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B28E4) = func_8017F098(9) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A1FC0,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B293C) = func_8017F098(0xA) + 0xB00;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A2C24,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n *(p = &D_801B2994) = func_8017F098(0xB) + 0x700;\n ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28));\n ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A3B38,\n (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q));\n break;\n }\n}\n", "after_text": "s32 func_80180A88(void)\n{\n switch (D_801B2BF4) {\n case 0:\n func_8013C0F8(D_801968BC);\n ((void (*)(void *))func_8017CA80)(D_801B2578);\n D_801B2594 = -0x480;\n D_801B2598 = 0x5F0;\n D_801B25CC += 0x700;\n func_8013C0F8(D_80197BE0);\n ((void (*)(void *))func_8017CA80)(D_801B25D0);\n D_801B25EC = -0x480;\n D_801B25F0 = 0x5F0;\n D_801B2624 += 0x700;\n func_8013C0F8(D_80199164);\n ((void (*)(void *))func_8017CA80)(D_801B2628);\n D_801B2644 = -0x480;\n D_801B2648 = 0x5F0;\n D_801B267C += 0x700;\n func_8013C0F8(D_8019A9D8);\n ((void (*)(void *))func_8017CA80)(D_801B2680);\n D_801B269C = -0x480;\n D_801B26A0 = 0x5F0;\n D_801B26D4 += 0x700;\n func_8013C0F8(D_8019C68C);\n ((void (*)(void *))func_8017CA80)(D_801B26D8);\n D_801B26F4 = -0x480;\n D_801B26F8 = 0x5F0;\n D_801B272C += 0x700;\n func_8013C0F8(D_8019F570);\n ((void (*)(void *))func_8017CA80)(D_801B2730);\n D_801B274C = -0x480;\n D_801B2750 = 0x5F0;\n D_801B2784 += 0x700;\n func_8013C0F8(D_801A0044);\n ((void (*)(void *))func_8017CA80)(D_801B2788);\n D_801B27A4 = -0x480;\n D_801B27A8 = 0x5F0;\n D_801B27DC += 0x700;\n func_8013C0F8(D_801A0A18);\n ((void (*)(void *))func_8017CA80)(D_801B27E0);\n D_801B27FC = -0x480;\n D_801B2800 = 0x5F0;\n D_801B2834 += 0x700;\n func_8013C0F8(D_801A13EC);\n ((void (*)(void *))func_8017CA80)(D_801B2838);\n D_801B2854 = -0x480;\n D_801B2858 = 0x5F0;\n D_801B288C += 0x700;\n func_8013C0F8(D_801A1FC0);\n ((void (*)(void *))func_8017CA80)(D_801B2890);\n D_801B28AC = -0x480;\n D_801B28B0 = 0x5F0;\n D_801B28E4 += 0x700;\n func_8013C0F8(D_801A2C24);\n ((void (*)(void *))func_8017CA80)(D_801B28E8);\n D_801B2904 = -0x480;\n D_801B2908 = 0x5F0;\n D_801B293C += 0xB00;\n func_8013C0F8(D_801A3B38);\n ((void (*)(void *))func_8017CA80)(D_801B2940);\n D_801B295C = -0x480;\n D_801B2960 = 0x5F0;\n D_801B2994 += 0x700;\n D_801B2BF4++;\n break;\n case 1:\n /* one block-scoped `p` per object: each dies once, so local-alloc takes it (into $s0) before\n * the shared &D_801B2C10 pseudo; a single function-scope `p` dies 12 times and loses $s0. */\n {\n s16 *p = &D_801B25CC;\n s32 *obj;\n\n *p = func_8017F098(0) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801968BC, (s32)obj);\n }\n {\n s16 *p = &D_801B2624;\n s32 *obj;\n\n *p = func_8017F098(1) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_80197BE0, (s32)obj);\n }\n {\n s16 *p = &D_801B267C;\n s32 *obj;\n\n *p = func_8017F098(2) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_80199164, (s32)obj);\n }\n {\n s16 *p = &D_801B26D4;\n s32 *obj;\n\n *p = func_8017F098(3) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019A9D8, (s32)obj);\n }\n {\n s16 *p = &D_801B272C;\n s32 *obj;\n\n *p = func_8017F098(4) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019C68C, (s32)obj);\n }\n {\n s16 *p = &D_801B2784;\n s32 *obj;\n\n *p = func_8017F098(5) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019F570, (s32)obj);\n }\n {\n s16 *p = &D_801B27DC;\n s32 *obj;\n\n *p = func_8017F098(6) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A0044, (s32)obj);\n }\n {\n s16 *p = &D_801B2834;\n s32 *obj;\n\n *p = func_8017F098(7) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A0A18, (s32)obj);\n }\n {\n s16 *p = &D_801B288C;\n s32 *obj;\n\n *p = func_8017F098(8) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A13EC, (s32)obj);\n }\n {\n s16 *p = &D_801B28E4;\n s32 *obj;\n\n *p = func_8017F098(9) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A1FC0, (s32)obj);\n }\n {\n s16 *p = &D_801B293C;\n s32 *obj;\n\n *p = func_8017F098(0xA) + 0xB00;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A2C24, (s32)obj);\n }\n {\n s16 *p = &D_801B2994;\n s32 *obj;\n\n *p = func_8017F098(0xB) + 0x700;\n func_80049CAC((s32)(p - 2), (s32)(p - 0x28));\n obj = (s32 *)(p - 0x2A);\n *obj = 0;\n func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A3B38, (s32)obj);\n }\n break;\n }\n}\n"} diff --git a/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c b/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c index 550622fed..4b20c9085 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c @@ -6438,9 +6438,6 @@ extern void func_8017CAD4(s32*, s32*, s32); s32 func_80180A88(void) { - register s16 *p __asm__("$16"); // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus7) - s16 *q; - switch (D_801B2BF4) { case 0: func_8013C0F8(D_801968BC); @@ -6506,54 +6503,128 @@ s32 func_80180A88(void) D_801B2BF4++; break; case 1: - *(p = &D_801B25CC) = func_8017F098(0) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801968BC, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B2624) = func_8017F098(1) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_80197BE0, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B267C) = func_8017F098(2) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_80199164, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B26D4) = func_8017F098(3) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019A9D8, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B272C) = func_8017F098(4) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019C68C, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B2784) = func_8017F098(5) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_8019F570, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B27DC) = func_8017F098(6) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A0044, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B2834) = func_8017F098(7) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A0A18, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B288C) = func_8017F098(8) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A13EC, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B28E4) = func_8017F098(9) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A1FC0, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B293C) = func_8017F098(0xA) + 0xB00; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A2C24, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); - *(p = &D_801B2994) = func_8017F098(0xB) + 0x700; - ((void (*)(s32 *, s32 *))func_80049CAC)((s32 *)(p - 2), (s32 *)(p - 0x28)); - ((void (*)(s32 *, s32 *, s32 *))func_8017CAD4)((s32 *)D_801B2C10, (s32 *)D_801A3B38, - (s32)(q = (s16 *)p - 0x2A, (*(s32 *)((s16 *)p - 0x2A) = 0), (s32)q)); + /* one block-scoped `p` per object: each dies once, so local-alloc takes it (into $s0) before + * the shared &D_801B2C10 pseudo; a single function-scope `p` dies 12 times and loses $s0. */ + { + s16 *p = &D_801B25CC; + s32 *obj; + + *p = func_8017F098(0) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801968BC, (s32)obj); + } + { + s16 *p = &D_801B2624; + s32 *obj; + + *p = func_8017F098(1) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_80197BE0, (s32)obj); + } + { + s16 *p = &D_801B267C; + s32 *obj; + + *p = func_8017F098(2) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_80199164, (s32)obj); + } + { + s16 *p = &D_801B26D4; + s32 *obj; + + *p = func_8017F098(3) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019A9D8, (s32)obj); + } + { + s16 *p = &D_801B272C; + s32 *obj; + + *p = func_8017F098(4) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019C68C, (s32)obj); + } + { + s16 *p = &D_801B2784; + s32 *obj; + + *p = func_8017F098(5) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_8019F570, (s32)obj); + } + { + s16 *p = &D_801B27DC; + s32 *obj; + + *p = func_8017F098(6) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A0044, (s32)obj); + } + { + s16 *p = &D_801B2834; + s32 *obj; + + *p = func_8017F098(7) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A0A18, (s32)obj); + } + { + s16 *p = &D_801B288C; + s32 *obj; + + *p = func_8017F098(8) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A13EC, (s32)obj); + } + { + s16 *p = &D_801B28E4; + s32 *obj; + + *p = func_8017F098(9) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A1FC0, (s32)obj); + } + { + s16 *p = &D_801B293C; + s32 *obj; + + *p = func_8017F098(0xA) + 0xB00; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A2C24, (s32)obj); + } + { + s16 *p = &D_801B2994; + s32 *obj; + + *p = func_8017F098(0xB) + 0x700; + func_80049CAC((s32)(p - 2), (s32)(p - 0x28)); + obj = (s32 *)(p - 0x2A); + *obj = 0; + func_8017CAD4((s32 *)D_801B2C10, (s32 *)D_801A3B38, (s32)obj); + } break; } }