From 219feff281e163c05fc3ccbc77a1bb3246ad7322 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 11 Sep 2026 02:27:48 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S104=20s104=5Fe14=20=E2=80=94=20fun?= =?UTF-8?q?c=5F8017BEBC=20banked=20at=200=20through=20the=20whole-object?= =?UTF-8?q?=20gate=20+=20propagated=20=E2=80=94=20launder=20=E2=86=92=200:?= =?UTF-8?q?=20g.opz=20=3D=20za=20in=20both=20arms=20splits=20an=20integer-?= =?UTF-8?q?truncated=20priority=20tie=20(global.c:585-607;=20cross-jump=20?= =?UTF-8?q?re-merges)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/delever/calibration.json | 350 +++++++++++----------- .run/P36/delever/ledger.jsonl | 1 + src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c | 7 +- 3 files changed, 181 insertions(+), 177 deletions(-) diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index d309669a1..767fc5515 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,5 +1,5 @@ { - "head": "a9438364b", + "head": "42d3f035e", "stamp": "15956e4a96c4", "generated": "2026-09-11 02:27", "aliases": [ @@ -21,13 +21,13 @@ "main": { "objects": 85, "identical": 85, - "seconds": 6.313, - "mean_s": 0.074 + "seconds": 6.484000000000001, + "mean_s": 0.076 }, "ov_SC03_014": { "objects": 32, "identical": 32, - "seconds": 4.469000000000001, + "seconds": 4.49, "mean_s": 0.14 }, "ov_SC03_015": { @@ -39,188 +39,188 @@ "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 3.685, - "mean_s": 0.132 + "seconds": 3.7319999999999998, + "mean_s": 0.133 } }, "per_object_seconds": { - "build/src/800.o": 0.694, - "build/src/800_b.o": 0.072, - "build/src/800_b_2.o": 0.263, - "build/src/800_b_o0a.o": 0.064, - "build/src/800_c.o": 0.191, - "build/src/800b2.o": 0.073, - "build/src/apicard1.o": 0.07, - "build/src/apicard2.o": 0.057, - "build/src/apicard3.o": 0.054, - "build/src/apicard4.o": 0.081, - "build/src/apicard5.o": 0.064, - "build/src/apicard6.o": 0.057, - "build/src/apicard7.o": 0.073, - "build/src/boot.o": 0.081, - "build/src/gap.o": 0.082, - "build/src/libapi1.o": 0.079, - "build/src/libapi2.o": 0.058, - "build/src/libc2_1.o": 0.058, - "build/src/libc2_2.o": 0.06, - "build/src/libcd1.o": 0.064, - "build/src/libcd2.o": 0.056, - "build/src/libetc.o": 0.062, - "build/src/libgpu.o": 0.066, - "build/src/libgpu2.o": 0.077, - "build/src/libgs1.o": 0.055, - "build/src/libgs2.o": 0.056, - "build/src/libgs3.o": 0.055, - "build/src/libgs4.o": 0.05, - "build/src/libgs5.o": 0.059, - "build/src/libgs6.o": 0.077, - "build/src/libgs7.o": 0.061, - "build/src/libgs8.o": 0.059, - "build/src/libgte1.o": 0.058, - "build/src/libgte10.o": 0.061, - "build/src/libgte11.o": 0.062, - "build/src/libgte12.o": 0.059, - "build/src/libgte13.o": 0.062, - "build/src/libgte14.o": 0.054, - "build/src/libgte15.o": 0.058, - "build/src/libgte16.o": 0.051, - "build/src/libgte17.o": 0.063, - "build/src/libgte18.o": 0.056, - "build/src/libgte19.o": 0.063, - "build/src/libgte2.o": 0.057, - "build/src/libgte20.o": 0.055, - "build/src/libgte21.o": 0.057, - "build/src/libgte22.o": 0.059, - "build/src/libgte23.o": 0.06, - "build/src/libgte24.o": 0.05, - "build/src/libgte25.o": 0.058, - "build/src/libgte26.o": 0.065, - "build/src/libgte27.o": 0.077, - "build/src/libgte28.o": 0.077, - "build/src/libgte29.o": 0.063, - "build/src/libgte3.o": 0.051, - "build/src/libgte30.o": 0.065, - "build/src/libgte4.o": 0.058, - "build/src/libgte5.o": 0.065, - "build/src/libgte6.o": 0.061, - "build/src/libgte7.o": 0.062, - "build/src/libgte8.o": 0.063, - "build/src/libgte9.o": 0.061, - "build/src/libmcrd1.o": 0.073, - "build/src/libmcrd2.o": 0.056, + "build/src/800.o": 0.768, + "build/src/800_b.o": 0.07, + "build/src/800_b_2.o": 0.289, + "build/src/800_b_o0a.o": 0.061, + "build/src/800_c.o": 0.182, + "build/src/800b2.o": 0.086, + "build/src/apicard1.o": 0.073, + "build/src/apicard2.o": 0.062, + "build/src/apicard3.o": 0.061, + "build/src/apicard4.o": 0.06, + "build/src/apicard5.o": 0.084, + "build/src/apicard6.o": 0.06, + "build/src/apicard7.o": 0.087, + "build/src/boot.o": 0.085, + "build/src/gap.o": 0.06, + "build/src/libapi1.o": 0.06, + "build/src/libapi2.o": 0.057, + "build/src/libc2_1.o": 0.066, + "build/src/libc2_2.o": 0.054, + "build/src/libcd1.o": 0.067, + "build/src/libcd2.o": 0.063, + "build/src/libetc.o": 0.058, + "build/src/libgpu.o": 0.056, + "build/src/libgpu2.o": 0.066, + "build/src/libgs1.o": 0.057, + "build/src/libgs2.o": 0.052, + "build/src/libgs3.o": 0.059, + "build/src/libgs4.o": 0.067, + "build/src/libgs5.o": 0.051, + "build/src/libgs6.o": 0.07, + "build/src/libgs7.o": 0.062, + "build/src/libgs8.o": 0.062, + "build/src/libgte1.o": 0.067, + "build/src/libgte10.o": 0.058, + "build/src/libgte11.o": 0.058, + "build/src/libgte12.o": 0.06, + "build/src/libgte13.o": 0.061, + "build/src/libgte14.o": 0.061, + "build/src/libgte15.o": 0.065, + "build/src/libgte16.o": 0.058, + "build/src/libgte17.o": 0.06, + "build/src/libgte18.o": 0.053, + "build/src/libgte19.o": 0.06, + "build/src/libgte2.o": 0.058, + "build/src/libgte20.o": 0.061, + "build/src/libgte21.o": 0.056, + "build/src/libgte22.o": 0.062, + "build/src/libgte23.o": 0.066, + "build/src/libgte24.o": 0.066, + "build/src/libgte25.o": 0.059, + "build/src/libgte26.o": 0.067, + "build/src/libgte27.o": 0.068, + "build/src/libgte28.o": 0.049, + "build/src/libgte29.o": 0.062, + "build/src/libgte3.o": 0.073, + "build/src/libgte30.o": 0.067, + "build/src/libgte4.o": 0.067, + "build/src/libgte5.o": 0.056, + "build/src/libgte6.o": 0.067, + "build/src/libgte7.o": 0.057, + "build/src/libgte8.o": 0.065, + "build/src/libgte9.o": 0.068, + "build/src/libmcrd1.o": 0.067, + "build/src/libmcrd2.o": 0.065, "build/src/libpad1.o": 0.066, - "build/src/libpad2.o": 0.057, - "build/src/sgap.o": 0.078, - "build/src/sgap_2.o": 0.061, - "build/src/sgap_3.o": 0.052, - "build/src/sgap_4.o": 0.066, - "build/src/sgap_5.o": 0.06, - "build/src/sgap_6.o": 0.061, - "build/src/sgap_8.o": 0.064, - "build/src/snd1.o": 0.065, - "build/src/snd10.o": 0.063, - "build/src/snd11.o": 0.06, - "build/src/snd12.o": 0.064, - "build/src/snd2.o": 0.07, - "build/src/snd3.o": 0.063, - "build/src/snd4.o": 0.064, - "build/src/snd5.o": 0.06, - "build/src/snd6.o": 0.07, - "build/src/snd7.o": 0.068, - "build/src/snd8.o": 0.064, - "build/src/snd9.o": 0.069, - "build/src/ov_SC03_014/ov_SC03_014.o": 0.118, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.472, - "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.383, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.056, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.057, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.142, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.147, + "build/src/libpad2.o": 0.07, + "build/src/sgap.o": 0.06, + "build/src/sgap_2.o": 0.067, + "build/src/sgap_3.o": 0.069, + "build/src/sgap_4.o": 0.069, + "build/src/sgap_5.o": 0.067, + "build/src/sgap_6.o": 0.058, + "build/src/sgap_8.o": 0.071, + "build/src/snd1.o": 0.068, + "build/src/snd10.o": 0.06, + "build/src/snd11.o": 0.064, + "build/src/snd12.o": 0.065, + "build/src/snd2.o": 0.077, + "build/src/snd3.o": 0.065, + "build/src/snd4.o": 0.061, + "build/src/snd5.o": 0.069, + "build/src/snd6.o": 0.065, + "build/src/snd7.o": 0.065, + "build/src/snd8.o": 0.063, + "build/src/snd9.o": 0.063, + "build/src/ov_SC03_014/ov_SC03_014.o": 0.125, + "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.517, + "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.387, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.07, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.076, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.119, + "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.15, "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.114, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.077, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.063, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.182, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.067, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.174, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.087, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.073, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.065, + "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.168, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.083, + "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.17, + "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.09, "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.063, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.057, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.084, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.462, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.269, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.097, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.204, - "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.058, - "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.11, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.065, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.162, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.172, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.052, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.255, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.043, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.065, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.089, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.45, + "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.256, + "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.092, + "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.197, + "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.055, + "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.09, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.063, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.154, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.198, + "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.043, + "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.242, + "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.056, "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.057, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.056, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.064, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.111, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.485, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.322, - "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.053, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.101, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.136, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.108, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.072, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.062, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.173, - "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.158, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.091, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.059, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.056, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.089, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.439, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.271, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.177, + "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.055, + "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.058, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.115, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.495, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.327, + "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.04, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.104, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.146, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.105, + "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.057, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.164, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.063, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.157, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.084, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.064, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.065, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.087, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.43, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.258, + "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.2, "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.056, - "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.057, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.14, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.187, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.053, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.268, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.053, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.069, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.12, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.4, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.321, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.052, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.054, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.1, + "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.162, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.185, + "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.252, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.059, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.061, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.05, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.07, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.118, + "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.049, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.053, "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.116, - "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.102, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.069, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.061, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.153, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.136, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.11, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.067, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.053, + "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.066, - "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.06, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.063, + "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.083, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.065, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.062, "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.083, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.331, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.2, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.093, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.152, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.053, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.082, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.052, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.092, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.413, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.046, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.053 + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.335, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.21, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.09, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.151, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.056, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.087, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.061, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.096, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.405, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.052, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.058 }, "ok": true, "seconds": 2.2 diff --git a/.run/P36/delever/ledger.jsonl b/.run/P36/delever/ledger.jsonl index e123bb43d..48a7a37cc 100644 --- a/.run/P36/delever/ledger.jsonl +++ b/.run/P36/delever/ledger.jsonl @@ -29430,3 +29430,4 @@ {"ts": "2026-09-11 02:23:53", "label": "s104_e12", "rung": "E", "calib": {"head": "ec666828b", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c", "fn": "func_8018291C", "addr": 2149067036, "aliases": null, "header": false, "includers": 0, "nhash_before": "11d96fdbeb057e46b34fa654221aba5e3242d447", "nhash_after": "50d8fa44ba81dc23e42c695b84cddb1ef3ca2c61", "source": ".run/P36/agents/ov_SC06_000__func_80184A68/scratch/copies/func_8018291C_SC03_118.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 2, "seconds": 0.198, "objects": ["build/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.o", "build/src/ov_SC03_119/ov_SC03_119_jr_8017FB84.o"], "before_text": "void func_8018291C(void) {\n u8 *p = &D_801D4306;\n\n asm(\"\" : \"=r\"(p) : \"0\"(p)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B tus8)\n\n if (*p < 0xF8) {\n *p += 4;\n p[-2] += 6;\n p[-1] += 6;\n }\n}\n", "after_text": "void func_8018291C(void) {\n u8 *p;\n u8 *q;\n u8 *r;\n\n p = &D_801D4306;\n do { q = p - 2; r = p - 1; } while (0); // !FAKE: do-while \u2014 its NOTE_INSN_LOOP_END ends cse1's block before the uses (cse.c:8054-8056, ignored after_loop), so cse2 not cse1 rewrites *q/*r to p-relative (find_best_addr cse.c:2711-2721) (P36 S104 e12 minimum-lever)\n if (*p < 0xF8) {\n *p += 4;\n *q += 6;\n *r += 6;\n }\n}\n"} {"ts": "2026-09-11 02:24:19", "label": "s104_e12", "rung": "E", "calib": {"head": "38a988338", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c", "fn": "func_80182614", "addr": 2149066260, "aliases": null, "header": false, "includers": 0, "nhash_before": "e2abaa69406da1355be7751b7966559157543da0", "nhash_after": "a41337e035c9a133da1c0a1cfa6134c32ff0daf0", "source": ".run/P36/agents/ov_SC06_000__func_80182560/scratch/copies/func_80182614_a.c", "verdict": "LEVER-FREE", "sites": [{"ord": 0, "kind": "instruction", "cls": "B", "detail": "la", "via": "", "line": 7278, "verdict": "NEEDED", "why": "left by the author", "oracle": ""}], "compiles": 1, "seconds": 0.289, "objects": ["build/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.o"], "before_text": "void func_80182614(void *a0) {\n s32 *p;\n s32 *base;\n s32 *q;\n u16 val;\n\n __asm__(\"la %0, D_801AEAFC\" : \"=r\"(p)); // !FAKE: instruction la \u2014 NEEDED DIFFERS (P36 rung B tus7)\n *p += 0xFFFEE000;\n if (D_801AEAFE < 0) {\n *p = 0;\n (*(u16 *)((s32)a0 + 2))++;\n }\n val = *(u16 *)((s32)a0 + 0xE0);\n val--;\n *(u16 *)((s32)a0 + 0xE0) = val;\n if ((val << 0x10) == 0) {\n func_8013C9C4(&D_801889E4);\n *(u16 *)((s32)a0 + 0xE0) = (D_800B99DC & 7) + 3;\n }\n base = (s32)&D_801B20E0;\n __asm__(\"la %0, D_801AEBCC\" : \"=r\"(q)); // !FAKE: instruction la \u2014 NEEDED DIFFERS (P36 rung B tus7)\n q[-7] = 0;\n q[0] = D_801AEAFE;\n func_8017EF68((s32)base, (s32)&D_8019FD8C, (s32)q - 0x1C);\n func_8017EF68((s32)base, (s32)&D_80197B60, (s32)&D_801AEC08);\n}\n", "after_text": "void func_80182614(void *a0) {\n s32 *p;\n s32 *base;\n s32 *q;\n s32 *r;\n u16 val;\n\n __asm__(\"la %0, D_801AEAFC\" : \"=r\"(p)); // !FAKE: instruction la \u2014 NEEDED DIFFERS (P36 rung B tus7)\n *p += 0xFFFEE000;\n if (D_801AEAFE < 0) {\n *p = 0;\n (*(u16 *)((s32)a0 + 2))++;\n }\n val = *(u16 *)((s32)a0 + 0xE0);\n val--;\n *(u16 *)((s32)a0 + 0xE0) = val;\n if ((val << 0x10) == 0) {\n func_8013C9C4(&D_801889E4);\n *(u16 *)((s32)a0 + 0xE0) = (D_800B99DC & 7) + 3;\n }\n base = (s32)&D_801B20E0;\n q = &D_801AEBCC;\n r = q - 7;\n *r = 0;\n *q = D_801AEAFE;\n func_8017EF68((s32)base, (s32)&D_8019FD8C, (s32)r);\n func_8017EF68((s32)base, (s32)&D_80197B60, (s32)&D_801AEC08);\n}\n"} {"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"} 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 139405598..a90eb03ba 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c @@ -3712,14 +3712,18 @@ void func_8017BEBC(s32 arg0) s32 za, tz, q, rgb; u32 *otp; u32 *tp; + /* g.opz stored in each arm: post-reload cross-jump merges the two + * stores back into one, but flow counted both (the &g.sz0/&g.sz1 + * allocno tie then falls the target's way). */ if (g.sz0 > g.sz1) { za = g.sz0; if (za < g.sz2) za = g.sz2; + g.opz = za; } else { za = g.sz1; if (za < g.sz2) za = g.sz2; + g.opz = za; } - g.opz = za; if (code == 7) g.opz = za + 0x200; tz = g.opz; tp = (u32 *)prim->w0; @@ -3810,7 +3814,6 @@ void func_8017BEBC(s32 arg0) i++; prim++; } while (i < nprim); - __asm__ __volatile__("" : "=r"(m24) : "0"(m24)); // !FAKE: launder — NEEDED DIFFERS (P36 rung B tus7) noprim: ; } }