From 91ae94a64ebf077c393ff282b8c3e5c30aa2b0af Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 10 Sep 2026 22:32:12 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S104=20s104=5Fd16=20=E2=80=94=20fun?= =?UTF-8?q?c=5F8018A2E0=20banked=20at=200=20through=20the=20whole-object?= =?UTF-8?q?=20gate=20+=20propagated=20=E2=80=94=20d16=20copy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/delever/calibration.json | 372 +++++++++++----------- .run/P36/delever/ledger.jsonl | 1 + src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c | 46 +-- 3 files changed, 202 insertions(+), 217 deletions(-) diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 5e1e0ab680..e145db5688 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "4c2e503ec", + "head": "a225fe560", "stamp": "15956e4a96c4", - "generated": "2026-09-10 22:30", + "generated": "2026-09-10 22:31", "aliases": [ "main", "ov_SC03_014", @@ -21,206 +21,206 @@ "main": { "objects": 85, "identical": 85, - "seconds": 11.461000000000002, - "mean_s": 0.135 + "seconds": 11.379000000000005, + "mean_s": 0.134 }, "ov_SC03_014": { "objects": 32, "identical": 32, - "seconds": 7.095, - "mean_s": 0.222 + "seconds": 7.819, + "mean_s": 0.244 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 7.628000000000002, - "mean_s": 0.238 + "seconds": 7.7860000000000005, + "mean_s": 0.243 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 6.871, - "mean_s": 0.245 + "seconds": 6.308000000000001, + "mean_s": 0.225 } }, "per_object_seconds": { - "build/src/800.o": 1.09, - "build/src/800_b.o": 0.176, - "build/src/800_b_2.o": 0.472, - "build/src/800_b_o0a.o": 0.123, - "build/src/800_c.o": 0.337, - "build/src/800b2.o": 0.109, - "build/src/apicard1.o": 0.11, - "build/src/apicard2.o": 0.1, - "build/src/apicard3.o": 0.105, - "build/src/apicard4.o": 0.106, - "build/src/apicard5.o": 0.085, - "build/src/apicard6.o": 0.095, - "build/src/apicard7.o": 0.101, - "build/src/boot.o": 0.175, - "build/src/gap.o": 0.122, - "build/src/libapi1.o": 0.105, - "build/src/libapi2.o": 0.125, - "build/src/libc2_1.o": 0.097, - "build/src/libc2_2.o": 0.147, - "build/src/libcd1.o": 0.122, - "build/src/libcd2.o": 0.13, - "build/src/libetc.o": 0.138, - "build/src/libgpu.o": 0.136, - "build/src/libgpu2.o": 0.105, - "build/src/libgs1.o": 0.081, - "build/src/libgs2.o": 0.102, - "build/src/libgs3.o": 0.075, - "build/src/libgs4.o": 0.09, - "build/src/libgs5.o": 0.071, - "build/src/libgs6.o": 0.101, - "build/src/libgs7.o": 0.092, - "build/src/libgs8.o": 0.124, - "build/src/libgte1.o": 0.095, - "build/src/libgte10.o": 0.093, - "build/src/libgte11.o": 0.091, - "build/src/libgte12.o": 0.107, - "build/src/libgte13.o": 0.097, - "build/src/libgte14.o": 0.091, - "build/src/libgte15.o": 0.107, - "build/src/libgte16.o": 0.128, - "build/src/libgte17.o": 0.118, - "build/src/libgte18.o": 0.108, - "build/src/libgte19.o": 0.111, - "build/src/libgte2.o": 0.094, - "build/src/libgte20.o": 0.107, - "build/src/libgte21.o": 0.1, - "build/src/libgte22.o": 0.116, - "build/src/libgte23.o": 0.141, - "build/src/libgte24.o": 0.122, - "build/src/libgte25.o": 0.113, - "build/src/libgte26.o": 0.115, - "build/src/libgte27.o": 0.115, - "build/src/libgte28.o": 0.102, - "build/src/libgte29.o": 0.098, - "build/src/libgte3.o": 0.142, - "build/src/libgte30.o": 0.083, - "build/src/libgte4.o": 0.124, - "build/src/libgte5.o": 0.161, - "build/src/libgte6.o": 0.163, - "build/src/libgte7.o": 0.102, - "build/src/libgte8.o": 0.177, - "build/src/libgte9.o": 0.125, - "build/src/libmcrd1.o": 0.129, - "build/src/libmcrd2.o": 0.122, - "build/src/libpad1.o": 0.13, - "build/src/libpad2.o": 0.105, - "build/src/sgap.o": 0.131, - "build/src/sgap_2.o": 0.15, - "build/src/sgap_3.o": 0.102, - "build/src/sgap_4.o": 0.107, - "build/src/sgap_5.o": 0.091, - "build/src/sgap_6.o": 0.114, - "build/src/sgap_8.o": 0.137, - "build/src/snd1.o": 0.134, - "build/src/snd10.o": 0.163, - "build/src/snd11.o": 0.097, - "build/src/snd12.o": 0.131, - "build/src/snd2.o": 0.134, - "build/src/snd3.o": 0.11, - "build/src/snd4.o": 0.12, - "build/src/snd5.o": 0.159, - "build/src/snd6.o": 0.088, - "build/src/snd7.o": 0.146, - "build/src/snd8.o": 0.136, - "build/src/snd9.o": 0.132, - "build/src/ov_SC03_014/ov_SC03_014.o": 0.2, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.64, - "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.594, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.104, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.102, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.225, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.214, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.187, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.163, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.114, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.266, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.09, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.275, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.145, - "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.131, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.118, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.146, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.699, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.369, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.186, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.294, - "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.127, - "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.203, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.121, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.219, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.282, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.085, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.401, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.101, - "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.113, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.092, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.089, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.18, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.887, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.61, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.122, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.102, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.186, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.206, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.23, + "build/src/800.o": 1.064, + "build/src/800_b.o": 0.125, + "build/src/800_b_2.o": 0.589, + "build/src/800_b_o0a.o": 0.092, + "build/src/800_c.o": 0.315, + "build/src/800b2.o": 0.214, + "build/src/apicard1.o": 0.095, + "build/src/apicard2.o": 0.214, + "build/src/apicard3.o": 0.117, + "build/src/apicard4.o": 0.08, + "build/src/apicard5.o": 0.119, + "build/src/apicard6.o": 0.125, + "build/src/apicard7.o": 0.129, + "build/src/boot.o": 0.11, + "build/src/gap.o": 0.145, + "build/src/libapi1.o": 0.103, + "build/src/libapi2.o": 0.077, + "build/src/libc2_1.o": 0.084, + "build/src/libc2_2.o": 0.123, + "build/src/libcd1.o": 0.11, + "build/src/libcd2.o": 0.146, + "build/src/libetc.o": 0.079, + "build/src/libgpu.o": 0.152, + "build/src/libgpu2.o": 0.16, + "build/src/libgs1.o": 0.083, + "build/src/libgs2.o": 0.079, + "build/src/libgs3.o": 0.139, + "build/src/libgs4.o": 0.086, + "build/src/libgs5.o": 0.098, + "build/src/libgs6.o": 0.119, + "build/src/libgs7.o": 0.086, + "build/src/libgs8.o": 0.112, + "build/src/libgte1.o": 0.121, + "build/src/libgte10.o": 0.102, + "build/src/libgte11.o": 0.131, + "build/src/libgte12.o": 0.09, + "build/src/libgte13.o": 0.099, + "build/src/libgte14.o": 0.131, + "build/src/libgte15.o": 0.113, + "build/src/libgte16.o": 0.101, + "build/src/libgte17.o": 0.097, + "build/src/libgte18.o": 0.114, + "build/src/libgte19.o": 0.11, + "build/src/libgte2.o": 0.098, + "build/src/libgte20.o": 0.121, + "build/src/libgte21.o": 0.099, + "build/src/libgte22.o": 0.18, + "build/src/libgte23.o": 0.179, + "build/src/libgte24.o": 0.133, + "build/src/libgte25.o": 0.085, + "build/src/libgte26.o": 0.07, + "build/src/libgte27.o": 0.095, + "build/src/libgte28.o": 0.082, + "build/src/libgte29.o": 0.083, + "build/src/libgte3.o": 0.098, + "build/src/libgte30.o": 0.086, + "build/src/libgte4.o": 0.134, + "build/src/libgte5.o": 0.146, + "build/src/libgte6.o": 0.121, + "build/src/libgte7.o": 0.124, + "build/src/libgte8.o": 0.091, + "build/src/libgte9.o": 0.082, + "build/src/libmcrd1.o": 0.1, + "build/src/libmcrd2.o": 0.094, + "build/src/libpad1.o": 0.123, + "build/src/libpad2.o": 0.104, + "build/src/sgap.o": 0.111, + "build/src/sgap_2.o": 0.08, + "build/src/sgap_3.o": 0.109, + "build/src/sgap_4.o": 0.159, + "build/src/sgap_5.o": 0.106, + "build/src/sgap_6.o": 0.094, + "build/src/sgap_8.o": 0.101, + "build/src/snd1.o": 0.131, + "build/src/snd10.o": 0.154, + "build/src/snd11.o": 0.125, + "build/src/snd12.o": 0.119, + "build/src/snd2.o": 0.146, + "build/src/snd3.o": 0.112, + "build/src/snd4.o": 0.096, + "build/src/snd5.o": 0.131, + "build/src/snd6.o": 0.124, + "build/src/snd7.o": 0.082, + "build/src/snd8.o": 0.148, + "build/src/snd9.o": 0.145, + "build/src/ov_SC03_014/ov_SC03_014.o": 0.233, + "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.867, + "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.647, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.107, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.145, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.166, + "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.206, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.177, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.14, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.124, + "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.265, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.144, + "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.302, + "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.142, + "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.112, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.112, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.133, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.721, + "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.439, + "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.166, + "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.393, + "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.092, + "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.175, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.11, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.306, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.346, + "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.117, + "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.463, + "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.085, + "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.108, + "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.095, + "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.181, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.269, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.85, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.648, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.159, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.179, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.224, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.31, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.22, "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.144, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.136, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.27, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.104, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.301, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.153, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.14, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.1, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.15, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.653, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.468, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.164, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.296, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.08, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.14, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.117, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.299, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.335, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.108, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.444, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.155, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.113, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.085, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.15, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.24, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.652, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.621, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.131, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.102, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.17, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.239, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.164, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.14, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.11, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.293, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.095, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.3, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.129, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.11, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.129, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.143, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.602, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.37, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.174, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.323, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.106, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.133, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.101, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.197, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.888, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.088, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.121 + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.098, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.305, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.135, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.244, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.147, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.115, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.095, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.129, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.764, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.467, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.135, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.264, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.11, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.163, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.082, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.256, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.32, + "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.123, + "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.403, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.079, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.134, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.1, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.115, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.17, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.665, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.516, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.064, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.182, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.253, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.163, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.141, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.111, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.247, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.11, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.258, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.136, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.133, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.096, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.126, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.586, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.335, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.139, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.269, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.089, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.143, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.102, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.161, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.804, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.107, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.098 }, "ok": true, "seconds": 4.3 diff --git a/.run/P36/delever/ledger.jsonl b/.run/P36/delever/ledger.jsonl index 86fd76a1ac..4e1179c80e 100644 --- a/.run/P36/delever/ledger.jsonl +++ b/.run/P36/delever/ledger.jsonl @@ -29212,3 +29212,4 @@ {"ts": "2026-09-10 22:31:02", "label": "s104_d16", "rung": "E", "calib": {"head": "4c2e503ec", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c", "fn": "func_80189FE0", "addr": 2149097440, "aliases": null, "header": false, "includers": 0, "nhash_before": "c5e217212db4d19a96e948c172b5ddf4bf8fef9f", "nhash_after": "48eb838245b8dd738e3594d1acfb2918f8b526d6", "source": "propagate:src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c:func_8017F368", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.2, "objects": ["build/src/ov_SC05_017/ov_SC05_017_jr_80188B1C.o"], "before_text": "void func_80189FE0(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_801E6370[];\n extern u16 D_801E63F0[];\n extern u16 D_801E6490[][4];\n extern u16 D_801E6492[][4];\n extern u16 D_801E6494[][4];\n extern u16 D_801E6496[][4];\n register s32 zr __asm__(\"$0\"); // !FAKE: pin $0 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n u16 va[16]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n u16 vb[16]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n s32 type2;\n u16 *p1;\n u16 *p2;\n register u16 *dst __asm__(\"$4\"); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type + zr;\n if ((attr & 0xF00) == 0x200) {\n func_8018A3C8(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E6370 + type * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = va;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E63F0 + type2 * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = vb;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801E6490[j][0];\n idx[1] = D_801E6492[j][0];\n idx[2] = D_801E6494[j][0];\n idx[3] = D_801E6496[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n", "after_text": "void func_80189FE0(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_801E6370[];\n extern u16 D_801E63F0[];\n extern u16 D_801E6490[][4];\n extern u16 D_801E6492[][4];\n extern u16 D_801E6494[][4];\n extern u16 D_801E6496[][4];\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n SVECTOR va[4]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n SVECTOR vb[4]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n u8 type2;\n u16 *p1;\n u16 *p2;\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type;\n if ((attr & 0xF00) == 0x200) {\n func_8018A3C8(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E6370 + type * 0x20);\n for (i = 0; i < 4; i++, p1 += 4) {\n va[i].vx = a0[0] + p1[0];\n va[i].vy = a0[1] + p1[1];\n va[i].vz = a0[2] + p1[2];\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[1], (s32)&va[2], (s32)&va[3],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p2 = (u16 *)((u8 *)D_801E63F0 + type2 * 0x20);\n for (i = 0; i < 4; i++, p2 += 4) {\n vb[i].vx = a0[0] + p2[0];\n vb[i].vy = a0[1] + p2[1];\n vb[i].vz = a0[2] + p2[2];\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[1], (s32)&vb[2], (s32)&vb[3],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801E6490[j][0];\n idx[1] = D_801E6492[j][0];\n idx[2] = D_801E6494[j][0];\n idx[3] = D_801E6496[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n"} {"ts": "2026-09-10 22:31:03", "label": "s104_d16", "rung": "E", "calib": {"head": "4c2e503ec", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_124/ov_SC03_124_jr_80181B44.c", "fn": "func_80182598", "addr": 2149066136, "aliases": null, "header": false, "includers": 0, "nhash_before": "c5e217212db4d19a96e948c172b5ddf4bf8fef9f", "nhash_after": "48eb838245b8dd738e3594d1acfb2918f8b526d6", "source": "propagate:src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c:func_8017F368", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.214, "objects": ["build/src/ov_SC03_124/ov_SC03_124_jr_80181B44.o"], "before_text": "void func_80182598(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_8019023C[];\n extern u16 D_801902BC[];\n extern u16 D_8019035C[][4];\n extern u16 D_8019035E[][4];\n extern u16 D_80190360[][4];\n extern u16 D_80190362[][4];\n register s32 zr __asm__(\"$0\"); // !FAKE: pin $0 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n u16 va[16]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n u16 vb[16]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n s32 type2;\n u16 *p1;\n u16 *p2;\n register u16 *dst __asm__(\"$4\"); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type + zr;\n if ((attr & 0xF00) == 0x200) {\n func_80182980(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_8019023C + type * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = va;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801902BC + type2 * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = vb;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_8019035C[j][0];\n idx[1] = D_8019035E[j][0];\n idx[2] = D_80190360[j][0];\n idx[3] = D_80190362[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n", "after_text": "void func_80182598(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_8019023C[];\n extern u16 D_801902BC[];\n extern u16 D_8019035C[][4];\n extern u16 D_8019035E[][4];\n extern u16 D_80190360[][4];\n extern u16 D_80190362[][4];\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n SVECTOR va[4]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n SVECTOR vb[4]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n u8 type2;\n u16 *p1;\n u16 *p2;\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type;\n if ((attr & 0xF00) == 0x200) {\n func_80182980(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_8019023C + type * 0x20);\n for (i = 0; i < 4; i++, p1 += 4) {\n va[i].vx = a0[0] + p1[0];\n va[i].vy = a0[1] + p1[1];\n va[i].vz = a0[2] + p1[2];\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[1], (s32)&va[2], (s32)&va[3],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p2 = (u16 *)((u8 *)D_801902BC + type2 * 0x20);\n for (i = 0; i < 4; i++, p2 += 4) {\n vb[i].vx = a0[0] + p2[0];\n vb[i].vy = a0[1] + p2[1];\n vb[i].vz = a0[2] + p2[2];\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[1], (s32)&vb[2], (s32)&vb[3],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_8019035C[j][0];\n idx[1] = D_8019035E[j][0];\n idx[2] = D_80190360[j][0];\n idx[3] = D_80190362[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n"} {"ts": "2026-09-10 22:31:03", "label": "s104_d16", "rung": "E", "calib": {"head": "4c2e503ec", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC04_015/ov_SC04_015_jr_801820DC.c", "fn": "func_80182F2C", "addr": 2149068588, "aliases": null, "header": false, "includers": 0, "nhash_before": "c5e217212db4d19a96e948c172b5ddf4bf8fef9f", "nhash_after": "48eb838245b8dd738e3594d1acfb2918f8b526d6", "source": "propagate:src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c:func_8017F368", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.162, "objects": ["build/src/ov_SC04_015/ov_SC04_015_jr_801820DC.o"], "before_text": "void func_80182F2C(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_801C4040[];\n extern u16 D_801C40C0[];\n extern u16 D_801C4160[][4];\n extern u16 D_801C4162[][4];\n extern u16 D_801C4164[][4];\n extern u16 D_801C4166[][4];\n register s32 zr __asm__(\"$0\"); // !FAKE: pin $0 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n u16 va[16]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n u16 vb[16]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n s32 type2;\n u16 *p1;\n u16 *p2;\n register u16 *dst __asm__(\"$4\"); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type + zr;\n if ((attr & 0xF00) == 0x200) {\n func_80183314(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801C4040 + type * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = va;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801C40C0 + type2 * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = vb;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801C4160[j][0];\n idx[1] = D_801C4162[j][0];\n idx[2] = D_801C4164[j][0];\n idx[3] = D_801C4166[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n", "after_text": "void func_80182F2C(u16 *a0, s32 a1)\n{\n\n extern s32 D_800A651C[][5];\n extern u16 D_801C4040[];\n extern u16 D_801C40C0[];\n extern u16 D_801C4160[][4];\n extern u16 D_801C4162[][4];\n extern u16 D_801C4164[][4];\n extern u16 D_801C4166[][4];\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n SVECTOR va[4]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n SVECTOR vb[4]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n u8 type2;\n u16 *p1;\n u16 *p2;\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type;\n if ((attr & 0xF00) == 0x200) {\n func_80183314(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801C4040 + type * 0x20);\n for (i = 0; i < 4; i++, p1 += 4) {\n va[i].vx = a0[0] + p1[0];\n va[i].vy = a0[1] + p1[1];\n va[i].vz = a0[2] + p1[2];\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[1], (s32)&va[2], (s32)&va[3],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p2 = (u16 *)((u8 *)D_801C40C0 + type2 * 0x20);\n for (i = 0; i < 4; i++, p2 += 4) {\n vb[i].vx = a0[0] + p2[0];\n vb[i].vy = a0[1] + p2[1];\n vb[i].vz = a0[2] + p2[2];\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[1], (s32)&vb[2], (s32)&vb[3],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801C4160[j][0];\n idx[1] = D_801C4162[j][0];\n idx[2] = D_801C4164[j][0];\n idx[3] = D_801C4166[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n"} +{"ts": "2026-09-10 22:32:03", "label": "s104_d16", "rung": "E", "calib": {"head": "a225fe560", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c", "fn": "func_8018A2E0", "addr": 2149098208, "aliases": null, "header": false, "includers": 0, "nhash_before": "3bbc9facb6a72e405c2feaf895d27dbe806530ac", "nhash_after": "cdcb33e92cb8621441906931a4a91012dfc89b11", "source": ".run/P36/agents/ov_SC03_001__func_8017F368/scratch/copy_func_8018A2E0.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 2, "seconds": 0.429, "objects": ["build/src/ov_SC04_018/ov_SC04_018_jr_80188E1C.o", "build/src/ov_SC04_019/ov_SC04_019_jr_80188E1C.o"], "before_text": "void func_8018A2E0(u16 *a0, s32 a1)\n{\n register s32 zr __asm__(\"$0\"); // !FAKE: pin $0 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n u16 va[16]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n u16 vb[16]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n s32 type2;\n u16 *p1;\n u16 *p2;\n register u16 *dst __asm__(\"$4\"); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type + zr;\n if ((attr & 0xF00) == 0x200) {\n func_8018A6C8(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E00B0 + type * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = va;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E0130 + type2 * 0x20);\n i = 0;\n p2 = p1 + 2;\n dst = vb;\n while (i < 4) {\n dst[0] = a0[0] + p1[0];\n dst[1] = a0[1] + p2[-1];\n dst[2] = a0[2] + p2[0];\n i++;\n p1 += 4;\n p2 += 4;\n dst += 4;\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801E01D0[j][0];\n idx[1] = D_801E01D2[j][0];\n idx[2] = D_801E01D4[j][0];\n idx[3] = D_801E01D6[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n", "after_text": "void func_8018A2E0(u16 *a0, s32 a1)\n{\n\n u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */\n SVECTOR va[4]; /* sp+0x50 \u2014 outer quad, 4 x SVECTOR */\n SVECTOR vb[4]; /* sp+0x70 \u2014 inner quad, 4 x SVECTOR */\n s32 sxy[8]; /* sp+0x90 \u2014 [0..3] RotNclip4, [4..7] RotTransPers4 */\n s16 idx[4]; /* sp+0xB0 */\n s32 p; /* sp+0xB8 */\n s32 otz; /* sp+0xBC */\n s32 flag; /* sp+0xC0 */\n\n u16 attr;\n s32 type;\n u8 type2;\n u16 *p1;\n u16 *p2;\n s32 i;\n u8 *pk;\n s32 j;\n\n func_8012E32C();\n\n attr = a0[3];\n type = attr & 0xFF;\n type2 = type;\n if ((attr & 0xF00) == 0x200) {\n func_8018A6C8(a0, a1);\n return;\n }\n\n p1 = (u16 *)((u8 *)D_801E00B0 + type * 0x20);\n for (i = 0; i < 4; i++, p1 += 4) {\n va[i].vx = a0[0] + p1[0];\n va[i].vy = a0[1] + p1[1];\n va[i].vz = a0[2] + p1[2];\n }\n\n if (RotNclip4((s32)&va[0], (s32)&va[1], (s32)&va[2], (s32)&va[3],\n &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) {\n return;\n }\n\n otz -= 0x10;\n if (otz < 0) {\n return;\n }\n if (otz >= 0x1000) {\n return;\n }\n\n p2 = (u16 *)((u8 *)D_801E0130 + type2 * 0x20);\n for (i = 0; i < 4; i++, p2 += 4) {\n vb[i].vx = a0[0] + p2[0];\n vb[i].vy = a0[1] + p2[1];\n vb[i].vz = a0[2] + p2[2];\n }\n\n RotTransPers4((s32)&vb[0], (s32)&vb[1], (s32)&vb[2], (s32)&vb[3],\n &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag);\n\n pk = func_80010A08(0xA8);\n\n for (j = 0; j < 4; j++) {\n idx[0] = D_801E01D0[j][0];\n idx[1] = D_801E01D2[j][0];\n idx[2] = D_801E01D4[j][0];\n idx[3] = D_801E01D6[j][0];\n *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4);\n *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4);\n *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4);\n *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4);\n pk[7] = 0x3A;\n *(u32 *)(pk + 0x0) = 0x08000000;\n *(s32 *)(pk + 0x8) = sxy[idx[0]];\n *(s32 *)(pk + 0x10) = sxy[idx[1]];\n *(s32 *)(pk + 0x18) = sxy[idx[2]];\n *(s32 *)(pk + 0x20) = sxy[idx[3]];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n pk += 0x24;\n }\n\n *(s32 *)(pk + 0x4) = a1;\n pk[7] = 0x2A;\n *(u32 *)(pk + 0x0) = 0x05000000;\n *(s32 *)(pk + 0x8) = sxy[0];\n *(s32 *)(pk + 0xC) = sxy[1];\n *(s32 *)(pk + 0x10) = sxy[2];\n *(s32 *)(pk + 0x14) = sxy[3];\n AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk);\n func_8012E28C(otz, 1);\n}\n"} diff --git a/src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c b/src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c index cb0be0cf14..d7506c1cb8 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c @@ -4232,11 +4232,10 @@ extern u16 D_801E01D6[][4]; void func_8018A2E0(u16 *a0, s32 a1) { - register s32 zr __asm__("$0"); // !FAKE: pin $0 — NEEDED DIFFERS (P36 rung B tus9) u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */ - u16 va[16]; /* sp+0x50 — outer quad, 4 x SVECTOR */ - u16 vb[16]; /* sp+0x70 — inner quad, 4 x SVECTOR */ + SVECTOR va[4]; /* sp+0x50 — outer quad, 4 x SVECTOR */ + SVECTOR vb[4]; /* sp+0x70 — inner quad, 4 x SVECTOR */ s32 sxy[8]; /* sp+0x90 — [0..3] RotNclip4, [4..7] RotTransPers4 */ s16 idx[4]; /* sp+0xB0 */ s32 p; /* sp+0xB8 */ @@ -4245,10 +4244,9 @@ void func_8018A2E0(u16 *a0, s32 a1) u16 attr; s32 type; - s32 type2; + u8 type2; u16 *p1; u16 *p2; - register u16 *dst __asm__("$4"); // !FAKE: pin $4 — NEEDED DIFFERS (P36 rung B tus9) s32 i; u8 *pk; s32 j; @@ -4257,27 +4255,20 @@ void func_8018A2E0(u16 *a0, s32 a1) attr = a0[3]; type = attr & 0xFF; - type2 = type + zr; + type2 = type; if ((attr & 0xF00) == 0x200) { func_8018A6C8(a0, a1); return; } p1 = (u16 *)((u8 *)D_801E00B0 + type * 0x20); - i = 0; - p2 = p1 + 2; - dst = va; - while (i < 4) { - dst[0] = a0[0] + p1[0]; - dst[1] = a0[1] + p2[-1]; - dst[2] = a0[2] + p2[0]; - i++; - p1 += 4; - p2 += 4; - dst += 4; + for (i = 0; i < 4; i++, p1 += 4) { + va[i].vx = a0[0] + p1[0]; + va[i].vy = a0[1] + p1[1]; + va[i].vz = a0[2] + p1[2]; } - if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12], + if (RotNclip4((s32)&va[0], (s32)&va[1], (s32)&va[2], (s32)&va[3], &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) { return; } @@ -4290,21 +4281,14 @@ void func_8018A2E0(u16 *a0, s32 a1) return; } - p1 = (u16 *)((u8 *)D_801E0130 + type2 * 0x20); - i = 0; - p2 = p1 + 2; - dst = vb; - while (i < 4) { - dst[0] = a0[0] + p1[0]; - dst[1] = a0[1] + p2[-1]; - dst[2] = a0[2] + p2[0]; - i++; - p1 += 4; - p2 += 4; - dst += 4; + p2 = (u16 *)((u8 *)D_801E0130 + type2 * 0x20); + for (i = 0; i < 4; i++, p2 += 4) { + vb[i].vx = a0[0] + p2[0]; + vb[i].vy = a0[1] + p2[1]; + vb[i].vz = a0[2] + p2[2]; } - RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12], + RotTransPers4((s32)&vb[0], (s32)&vb[1], (s32)&vb[2], (s32)&vb[3], &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag); pk = func_80010A08(0xA8);