diff --git a/.run/fuel_manifest.json b/.run/fuel_manifest.json index 87456ef7c0..60e65b111d 100644 --- a/.run/fuel_manifest.json +++ b/.run/fuel_manifest.json @@ -237,9 +237,7 @@ "func_8013B598", "func_8013B6A0", "func_8013B83C", - "func_8013BD74", - "func_8013C0F8", - "func_8013C414" + "func_8013BD74" ], "o0_reach_134": [ "func_8013C08C" @@ -264,36 +262,28 @@ { "name": "func_8013C08C", "verified_reach": 138 - }, - { - "name": "func_8013C0F8", - "verified_reach": 1 - }, - { - "name": "func_8013C414", - "verified_reach": 1 } ] }, "summary": { - "total_stubs": 223, + "total_stubs": 160, "by_class": { "GIANT": 2, - "WAVE": 126, - "STRUCT": 59, - "STUB": 8, - "PINS": 20, + "WAVE": 91, + "STUB": 6, + "STRUCT": 36, + "PINS": 19, "O1": 1, - "O0": 7 + "O0": 5 }, - "cached": 208, - "uncached": 15, + "cached": 154, + "uncached": 6, "reach_buckets": { - "134": 101, - "1": 119, - "2-133": 3 + "134": 76, + "1": 82, + "2-133": 2 }, - "ghidra_c_cache_total": 861, + "ghidra_c_cache_total": 983, "named_stubs_skipped": [] }, "capped_recovery": [ @@ -334,48 +324,6 @@ "region": "jr_801734BC", "leverage": 22770 }, - { - "addr": "0x8014f4c0", - "name": "func_8014F4C0", - "nins": 141, - "ncalls": 3, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_stack-var", - "cached": true, - "region": "after", - "leverage": 19458 - }, - { - "addr": "0x8014ade0", - "name": "func_8014ADE0", - "nins": 139, - "ncalls": 12, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", - "cached": true, - "region": "after", - "leverage": 19182 - }, - { - "addr": "0x80137dd4", - "name": "func_80137DD4", - "nins": 129, - "ncalls": 4, - "reach": 138, - "reach_134": true, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_bad-deref", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 17802 - }, { "addr": "0x80174cb0", "name": "func_80174CB0", @@ -390,20 +338,6 @@ "region": "jr_801734BC", "leverage": 16974 }, - { - "addr": "0x801325b8", - "name": "func_801325B8", - "nins": 113, - "ncalls": 4, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 15594 - }, { "addr": "0x801330e0", "name": "func_801330E0", @@ -418,20 +352,6 @@ "region": "jr_8012ACE0", "leverage": 15180 }, - { - "addr": "0x8014e284", - "name": "func_8014E284", - "nins": 108, - "ncalls": 4, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "after", - "leverage": 14904 - }, { "addr": "0x8012cc88", "name": "func_8012CC88", @@ -457,23 +377,9 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 14490 }, - { - "addr": "0x80167714", - "name": "func_80167714", - "nins": 104, - "ncalls": 5, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 14352 - }, { "addr": "0x801463a0", "name": "func_801463A0", @@ -488,62 +394,6 @@ "region": "after", "leverage": 13938 }, - { - "addr": "0x80177940", - "name": "func_80177940", - "nins": 101, - "ncalls": 1, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_other", - "cached": true, - "region": "jr_801734BC", - "leverage": 13938 - }, - { - "addr": "0x801387b8", - "name": "func_801387B8", - "nins": 100, - "ncalls": 5, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_801380E0", - "leverage": 13800 - }, - { - "addr": "0x8014cd80", - "name": "func_8014CD80", - "nins": 97, - "ncalls": 3, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "after", - "leverage": 13386 - }, - { - "addr": "0x80150170", - "name": "func_80150170", - "nins": 95, - "ncalls": 2, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_stack-var", - "cached": true, - "region": "after", - "leverage": 13110 - }, { "addr": "0x8014d12c", "name": "func_8014D12C", @@ -558,34 +408,6 @@ "region": "after", "leverage": 12834 }, - { - "addr": "0x8014ffdc", - "name": "func_8014FFDC", - "nins": 93, - "ncalls": 1, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_stack-var", - "cached": true, - "region": "after", - "leverage": 12834 - }, - { - "addr": "0x801502ec", - "name": "func_801502EC", - "nins": 93, - "ncalls": 1, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_stack-var", - "cached": true, - "region": "after", - "leverage": 12834 - }, { "addr": "0x8014c6f4", "name": "func_8014C6F4", @@ -611,7 +433,7 @@ "lever": "STUB", "bucket": "ARITY_WALL", "cached": true, - "region": "jr_8015444C", + "region": "jr_80154C24", "leverage": 12006 }, { @@ -653,7 +475,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015444C", + "region": "jr_80154C24", "leverage": 11454 }, { @@ -670,20 +492,6 @@ "region": "after", "leverage": 11316 }, - { - "addr": "0x8012e138", - "name": "func_8012E138", - "nins": 81, - "ncalls": 4, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 11178 - }, { "addr": "0x8014d2a0", "name": "func_8014D2A0", @@ -712,20 +520,6 @@ "region": "a", "leverage": 10764 }, - { - "addr": "0x80137178", - "name": "func_80137178", - "nins": 78, - "ncalls": 3, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 10764 - }, { "addr": "0x8016163c", "name": "func_8016163C", @@ -737,7 +531,7 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 10764 }, { @@ -751,7 +545,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 10488 }, { @@ -796,20 +590,6 @@ "region": "jr_8012ACE0", "leverage": 9936 }, - { - "addr": "0x80164418", - "name": "func_80164418", - "nins": 70, - "ncalls": 7, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_m2c-incomplete-arg", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 9660 - }, { "addr": "0x80161774", "name": "func_80161774", @@ -821,37 +601,9 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 9522 }, - { - "addr": "0x80175308", - "name": "func_80175308", - "nins": 67, - "ncalls": 4, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_801734BC", - "leverage": 9246 - }, - { - "addr": "0x80130c08", - "name": "func_80130C08", - "nins": 65, - "ncalls": 6, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 8970 - }, { "addr": "0x80133298", "name": "func_80133298", @@ -894,20 +646,6 @@ "region": "after", "leverage": 8556 }, - { - "addr": "0x80136f3c", - "name": "func_80136F3C", - "nins": 61, - "ncalls": 2, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8012ACE0", - "leverage": 8418 - }, { "addr": "0x8012a328", "name": "func_8012A328", @@ -978,20 +716,6 @@ "region": "jr_8012ACE0", "leverage": 8004 }, - { - "addr": "0x8017129c", - "name": "func_8017129C", - "nins": 58, - "ncalls": 3, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 8004 - }, { "addr": "0x801759d8", "name": "func_801759D8", @@ -1087,37 +811,9 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8012ACE0", + "region": "jr_80135D20", "leverage": 7038 }, - { - "addr": "0x8016efc8", - "name": "func_8016EFC8", - "nins": 51, - "ncalls": 0, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 7038 - }, - { - "addr": "0x801483e8", - "name": "func_801483E8", - "nins": 50, - "ncalls": 3, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_stack-var", - "cached": true, - "region": "after", - "leverage": 6900 - }, { "addr": "0x80146750", "name": "func_80146750", @@ -1132,20 +828,6 @@ "region": "after", "leverage": 6486 }, - { - "addr": "0x8014680c", - "name": "func_8014680C", - "nins": 47, - "ncalls": 0, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "after", - "leverage": 6486 - }, { "addr": "0x8014c4ac", "name": "func_8014C4AC", @@ -1185,7 +867,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 5796 }, { @@ -1199,7 +881,7 @@ "lever": "WAVE", "bucket": "SIG_FIXABLE_KR", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 5658 }, { @@ -1255,7 +937,7 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 5106 }, { @@ -1311,21 +993,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", - "leverage": 4692 - }, - { - "addr": "0x80177ad4", - "name": "func_80177AD4", - "nins": 34, - "ncalls": 0, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_801734BC", + "region": "jr_8015C32C", "leverage": 4692 }, { @@ -1342,20 +1010,6 @@ "region": "jr_8012ACE0", "leverage": 4416 }, - { - "addr": "0x8014a51c", - "name": "func_8014A51C", - "nins": 32, - "ncalls": 1, - "reach": 138, - "reach_134": true, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "after", - "leverage": 4416 - }, { "addr": "0x8014f3e8", "name": "func_8014F3E8", @@ -1395,7 +1049,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 4140 }, { @@ -1454,20 +1108,6 @@ "region": "jr_8012ACE0", "leverage": 4002 }, - { - "addr": "0x80141b90", - "name": "func_80141B90", - "nins": 29, - "ncalls": 1, - "reach": 138, - "reach_134": true, - "class": "PINS", - "lever": "PINS", - "bucket": "PERMUTER_CLASS", - "cached": true, - "region": "main", - "leverage": 4002 - }, { "addr": "0x8016ba68", "name": "func_8016BA68", @@ -1507,7 +1147,7 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 3726 }, { @@ -1521,7 +1161,7 @@ "lever": "WAVE", "bucket": "SIG_FIXABLE_KR", "cached": true, - "region": "jr_8012ACE0", + "region": "jr_80135D20", "leverage": 3588 }, { @@ -1535,7 +1175,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 3588 }, { @@ -1605,7 +1245,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 3312 }, { @@ -1633,7 +1273,7 @@ "lever": "STUB", "bucket": "ARITY_WALL", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 3174 }, { @@ -1703,7 +1343,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015444C", + "region": "jr_80154C24", "leverage": 2484 }, { @@ -1717,7 +1357,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 1932 }, { @@ -1731,7 +1371,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 947 }, { @@ -1745,7 +1385,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 579 }, { @@ -1759,37 +1399,9 @@ "lever": "WAVE", "bucket": "MCOMPILE_stack-var", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 492 }, - { - "addr": "0x8013f350", - "name": "func_8013F350", - "nins": 490, - "ncalls": 21, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "main", - "leverage": 490 - }, - { - "addr": "0x80131340", - "name": "func_80131340", - "nins": 424, - "ncalls": 24, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "jr_8012ACE0", - "leverage": 424 - }, { "addr": "0x80176734", "name": "func_80176734", @@ -1804,34 +1416,6 @@ "region": "jr_801734BC", "leverage": 371 }, - { - "addr": "0x80159c84", - "name": "func_80159C84", - "nins": 337, - "ncalls": 42, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015444C", - "leverage": 337 - }, - { - "addr": "0x8013c414", - "name": "func_8013C414", - "nins": 329, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "O0", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "o0", - "leverage": 329 - }, { "addr": "0x80176218", "name": "func_80176218", @@ -1860,20 +1444,6 @@ "region": "jr_80182268", "leverage": 324 }, - { - "addr": "0x8013faf8", - "name": "func_8013FAF8", - "nins": 312, - "ncalls": 16, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", - "cached": true, - "region": "main", - "leverage": 312 - }, { "addr": "0x8014d820", "name": "func_8014D820", @@ -1898,23 +1468,9 @@ "class": "STRUCT", "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "jr_8012ACE0", - "leverage": 289 - }, - { - "addr": "0x801670e4", - "name": "func_801670E4", - "nins": 279, - "ncalls": 11, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", - "leverage": 279 + "region": "jr_80135D20", + "leverage": 289 }, { "addr": "0x8013b83c", @@ -1958,20 +1514,6 @@ "region": "main", "leverage": 260 }, - { - "addr": "0x8013cb84", - "name": "func_8013CB84", - "nins": 249, - "ncalls": 8, - "reach": 1, - "reach_134": false, - "class": "STUB", - "lever": "STUB", - "bucket": "NONFAITHFUL_DEFER", - "cached": true, - "region": "main", - "leverage": 249 - }, { "addr": "0x8017fd14", "name": "func_8017FD14", @@ -1983,23 +1525,9 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 249 }, - { - "addr": "0x8013d53c", - "name": "func_8013D53C", - "nins": 240, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "STUB", - "lever": "STUB", - "bucket": "NONFAITHFUL_DEFER", - "cached": true, - "region": "main", - "leverage": 240 - }, { "addr": "0x80175da8", "name": "func_80175DA8", @@ -2014,76 +1542,6 @@ "region": "jr_801734BC", "leverage": 231 }, - { - "addr": "0x8012956c", - "name": "func_8012956C", - "nins": 226, - "ncalls": 9, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", - "cached": false, - "region": "a", - "leverage": 226 - }, - { - "addr": "0x8015c32c", - "name": "func_8015C32C", - "nins": 222, - "ncalls": 31, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 222 - }, - { - "addr": "0x8016cbc0", - "name": "func_8016CBC0", - "nins": 209, - "ncalls": 2, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 209 - }, - { - "addr": "0x8015ea3c", - "name": "func_8015EA3C", - "nins": 204, - "ncalls": 28, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 204 - }, - { - "addr": "0x8015d738", - "name": "func_8015D738", - "nins": 201, - "ncalls": 30, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 201 - }, { "addr": "0x80181be4", "name": "func_80181BE4", @@ -2095,7 +1553,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 201 }, { @@ -2112,20 +1570,6 @@ "region": "o0", "leverage": 198 }, - { - "addr": "0x8015f448", - "name": "func_8015F448", - "nins": 188, - "ncalls": 26, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 188 - }, { "addr": "0x80175ab8", "name": "func_80175AB8", @@ -2140,34 +1584,6 @@ "region": "jr_801734BC", "leverage": 188 }, - { - "addr": "0x8014032c", - "name": "func_8014032C", - "nins": 183, - "ncalls": 6, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "main", - "leverage": 183 - }, - { - "addr": "0x80135a4c", - "name": "func_80135A4C", - "nins": 181, - "ncalls": 5, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "jr_8012ACE0", - "leverage": 181 - }, { "addr": "0x8017f7e8", "name": "func_8017F7E8", @@ -2179,7 +1595,7 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 177 }, { @@ -2196,20 +1612,6 @@ "region": "jr_80182268", "leverage": 177 }, - { - "addr": "0x8017ae2c", - "name": "func_8017AE2C", - "nins": 174, - "ncalls": 19, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8017A4AC", - "leverage": 174 - }, { "addr": "0x80186078", "name": "func_80186078", @@ -2224,20 +1626,6 @@ "region": "jr_80182268", "leverage": 174 }, - { - "addr": "0x80154c24", - "name": "func_80154C24", - "nins": 173, - "ncalls": 6, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015444C", - "leverage": 173 - }, { "addr": "0x8018308c", "name": "func_8018308C", @@ -2252,34 +1640,6 @@ "region": "jr_80182268", "leverage": 166 }, - { - "addr": "0x80169bbc", - "name": "func_80169BBC", - "nins": 162, - "ncalls": 14, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_arg-arity", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 162 - }, - { - "addr": "0x80160534", - "name": "func_80160534", - "nins": 161, - "ncalls": 23, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 161 - }, { "addr": "0x80180c90", "name": "func_80180C90", @@ -2291,37 +1651,9 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 160 }, - { - "addr": "0x801299c8", - "name": "func_801299C8", - "nins": 158, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "a", - "leverage": 158 - }, - { - "addr": "0x8013c0f8", - "name": "func_8013C0F8", - "nins": 154, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "O0", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "o0", - "leverage": 154 - }, { "addr": "0x8017faac", "name": "func_8017FAAC", @@ -2333,23 +1665,9 @@ "lever": "WAVE", "bucket": "MCOMPILE_undeclared-other", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 154 }, - { - "addr": "0x8016d1d8", - "name": "func_8016D1D8", - "nins": 148, - "ncalls": 10, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 148 - }, { "addr": "0x80177b5c", "name": "func_80177B5C", @@ -2374,7 +1692,7 @@ "class": "STRUCT", "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", - "cached": false, + "cached": true, "region": "jr_8012ACE0", "leverage": 136 }, @@ -2403,7 +1721,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 132 }, { @@ -2420,20 +1738,6 @@ "region": "jr_80182268", "leverage": 132 }, - { - "addr": "0x801555f4", - "name": "func_801555F4", - "nins": 131, - "ncalls": 24, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015444C", - "leverage": 131 - }, { "addr": "0x8015c128", "name": "func_8015C128", @@ -2459,7 +1763,7 @@ "lever": "STRUCT", "bucket": "MCOMPILE_fnptr-call", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 129 }, { @@ -2472,7 +1776,7 @@ "class": "STRUCT", "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", - "cached": false, + "cached": true, "region": "a", "leverage": 125 }, @@ -2490,48 +1794,6 @@ "region": "jr_80182268", "leverage": 125 }, - { - "addr": "0x80140608", - "name": "func_80140608", - "nins": 123, - "ncalls": 12, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "main", - "leverage": 123 - }, - { - "addr": "0x8016c998", - "name": "func_8016C998", - "nins": 123, - "ncalls": 2, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 123 - }, - { - "addr": "0x801588cc", - "name": "func_801588CC", - "nins": 122, - "ncalls": 5, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015444C", - "leverage": 122 - }, { "addr": "0x80181f08", "name": "func_80181F08", @@ -2543,7 +1805,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 117 }, { @@ -2557,23 +1819,9 @@ "lever": "WAVE", "bucket": "MCOMPILE_arg-arity", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 114 }, - { - "addr": "0x80135888", - "name": "func_80135888", - "nins": 113, - "ncalls": 5, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "jr_8012ACE0", - "leverage": 113 - }, { "addr": "0x8017daec", "name": "func_8017DAEC", @@ -2585,23 +1833,9 @@ "lever": "WAVE", "bucket": "MCOMPILE_stack-var", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 113 }, - { - "addr": "0x8016b234", - "name": "func_8016B234", - "nins": 112, - "ncalls": 4, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "MCOMPILE_undeclared-other", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 112 - }, { "addr": "0x80179b74", "name": "func_80179B74", @@ -2616,20 +1850,6 @@ "region": "jr_80178D40", "leverage": 111 }, - { - "addr": "0x801594e8", - "name": "func_801594E8", - "nins": 108, - "ncalls": 26, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": true, - "region": "jr_8015444C", - "leverage": 108 - }, { "addr": "0x80182c9c", "name": "func_80182C9C", @@ -2658,20 +1878,6 @@ "region": "jr_80182268", "leverage": 101 }, - { - "addr": "0x80135d20", - "name": "func_80135D20", - "nins": 100, - "ncalls": 5, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "M2C_DECOMP_FAIL", - "cached": false, - "region": "jr_8012ACE0", - "leverage": 100 - }, { "addr": "0x80184d50", "name": "func_80184D50", @@ -2711,7 +1917,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 94 }, { @@ -2784,20 +1990,6 @@ "region": "jr_80182268", "leverage": 85 }, - { - "addr": "0x801457a4", - "name": "func_801457A4", - "nins": 79, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "after", - "leverage": 79 - }, { "addr": "0x8018281c", "name": "func_8018281C", @@ -2823,7 +2015,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 75 }, { @@ -2837,7 +2029,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 75 }, { @@ -2910,20 +2102,6 @@ "region": "o0", "leverage": 66 }, - { - "addr": "0x80165240", - "name": "func_80165240", - "nins": 63, - "ncalls": 6, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 63 - }, { "addr": "0x80177da8", "name": "func_80177DA8", @@ -2980,20 +2158,6 @@ "region": "after", "leverage": 60 }, - { - "addr": "0x8016d688", - "name": "func_8016D688", - "nins": 60, - "ncalls": 3, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8016AB6C", - "leverage": 60 - }, { "addr": "0x801378f0", "name": "func_801378F0", @@ -3005,7 +2169,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": false, - "region": "jr_8012ACE0", + "region": "jr_80135D20", "leverage": 58 }, { @@ -3019,7 +2183,7 @@ "lever": "STRUCT", "bucket": "M2C_DECOMP_FAIL", "cached": true, - "region": "jr_8015444C", + "region": "jr_801588CC", "leverage": 58 }, { @@ -3033,7 +2197,7 @@ "lever": "STRUCT", "bucket": "MCOMPILE_fnptr-call", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 58 }, { @@ -3075,7 +2239,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 52 }, { @@ -3089,7 +2253,7 @@ "lever": "WAVE", "bucket": "VOID_VALUE_MISUSE", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 51 }, { @@ -3232,20 +2396,6 @@ "region": "jr_8015444C", "leverage": 31 }, - { - "addr": "0x8016039c", - "name": "func_8016039C", - "nins": 15, - "ncalls": 0, - "reach": 2, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 30 - }, { "addr": "0x80161c24", "name": "func_80161C24", @@ -3257,7 +2407,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 29 }, { @@ -3271,7 +2421,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 29 }, { @@ -3299,7 +2449,7 @@ "lever": "WAVE", "bucket": "STRUCTURAL_MISS", "cached": true, - "region": "jr_8017A4AC", + "region": "jr_8017AE2C", "leverage": 27 }, { @@ -3330,20 +2480,6 @@ "region": "a", "leverage": 25 }, - { - "addr": "0x80164e40", - "name": "func_80164E40", - "nins": 25, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "WAVE", - "lever": "WAVE", - "bucket": "STRUCTURAL_MISS", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 25 - }, { "addr": "0x80182988", "name": "func_80182988", @@ -3369,7 +2505,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015444C", + "region": "jr_80154C24", "leverage": 21 }, { @@ -3383,37 +2519,9 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 20 }, - { - "addr": "0x8015daf8", - "name": "func_8015DAF8", - "nins": 15, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 15 - }, - { - "addr": "0x8015faac", - "name": "func_8015FAAC", - "nins": 15, - "ncalls": 0, - "reach": 1, - "reach_134": false, - "class": "STRUCT", - "lever": "STRUCT", - "bucket": "MCOMPILE_fnptr-call", - "cached": true, - "region": "jr_8015AE2C", - "leverage": 15 - }, { "addr": "0x80161d20", "name": "func_80161D20", @@ -3425,7 +2533,7 @@ "lever": "PINS", "bucket": "PERMUTER_CLASS", "cached": true, - "region": "jr_8015AE2C", + "region": "jr_8015C32C", "leverage": 14 } ] diff --git a/docs/worklist.md b/docs/worklist.md index e24b058a17..6ce9f93e69 100644 --- a/docs/worklist.md +++ b/docs/worklist.md @@ -2,221 +2,210 @@ > Generated by `tools/worklist.py` from `.run/fuel_manifest.json` + `.run/backlog.jsonl`. Ranked by **byte-weighted gain** `gain_ins = reach × nins` (fleet instructions made byte-identical once matched **and** propagated ×138 — the decomp.dev-comparable metric the giants move, NOT function-count). `%rem` = share of ALL remaining gain; `cum%` = running total (shows how few giants capture most of it). `close` = backlog match_one mismatch count (lower = nearer; blank = not yet attempted). Byte-gate (harvest_verify) is the sole arbiter (G3/P9). -**Live stubs:** 223 · **total remaining gain:** 870,668 ins (3,482,672 bytes ×-fleet) +**Live stubs:** 160 · **total remaining gain:** 583,077 ins (2,332,308 bytes ×-fleet) ## Idiom-class summary (the groups) | class | count | gain_ins | % of remaining | |-------|------:|---------:|---------------:| -| GIANT | 2 | 50,094 | 5.8% | -| STRUCT | 59 | 36,929 | 4.2% | -| PINS | 20 | 65,428 | 7.5% | -| WAVE | 126 | 669,384 | 76.9% | -| O0 | 7 | 4,812 | 0.6% | -| O1 | 1 | 4,692 | 0.5% | -| STUB | 8 | 39,329 | 4.5% | +| GIANT | 2 | 50,094 | 8.6% | +| STRUCT | 36 | 15,274 | 2.6% | +| PINS | 19 | 61,426 | 10.5% | +| WAVE | 91 | 408,422 | 70.0% | +| O0 | 5 | 4,329 | 0.7% | +| O1 | 1 | 4,692 | 0.8% | +| STUB | 6 | 38,840 | 6.7% | ## Top 40 remaining gains (all classes) | # | name | class | reach | nins | gain_ins | %rem | cum% | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 3.14 | 3.1 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` | -| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 2.62 | 5.8 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` | -| 3 | func_8014F4C0 | WAVE | 138 | 141 | 19458 | 2.23 | 8.0 | Y | after | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_8014F4C0.c` | -| 4 | func_8014ADE0 | WAVE | 138 | 139 | 19182 | 2.20 | 10.2 | Y | after | 19 | 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; | `.run/backlog_drafts/func_8014ADE0.c` | -| 5 | func_80137DD4 | STRUCT | 138 | 129 | 17802 | 2.04 | 12.2 | Y | jr_8012ACE0 | 107 | regalloc fully matches (frame -0x30; s4/s3/s5=params, s2=mask, s1=ptr w/ in-place +0x24 reuse, s0=acc+reused … | `.run/backlog_drafts/func_80137DD4.c` | -| 6 | func_80174CB0 | WAVE | 138 | 123 | 16974 | 1.95 | 14.2 | Y | jr_801734BC | 0 | close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… | `.run/backlog_drafts/func_80174CB0.c` | -| 7 | func_801325B8 | WAVE | 138 | 113 | 15594 | 1.79 | 16.0 | Y | jr_8012ACE0 | 4 | 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits | `.run/backlog_drafts/func_801325B8.c` | -| 8 | func_801330E0 | STUB | 138 | 110 | 15180 | 1.74 | 17.7 | Y | jr_8012ACE0 | 7 | STUB: 7 mismatch | `.run/backlog_drafts/func_801330E0.c` | -| 9 | func_8014E284 | WAVE | 138 | 108 | 14904 | 1.71 | 19.4 | Y | after | 83 | WAVE: 83 mismatch | `.run/backlog_drafts/func_8014E284.c` | -| 10 | func_8012CC88 | WAVE | 138 | 105 | 14490 | 1.66 | 21.1 | Y | jr_8012ACE0 | 0 | none — MATCH (105 ins, relocation-masked) | `.run/backlog_drafts/func_8012CC88.c` | -| 11 | func_80169228 | WAVE | 138 | 105 | 14490 | 1.66 | 22.8 | Y | jr_8015AE2C | 0 | none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, | `.run/backlog_drafts/func_80169228.c` | -| 12 | func_80167714 | WAVE | 138 | 104 | 14352 | 1.65 | 24.4 | Y | jr_8015AE2C | 0 | none — MATCH (104 ins) | `.run/backlog_drafts/func_80167714.c` | -| 13 | func_801463A0 | WAVE | 138 | 101 | 13938 | 1.60 | 26.0 | Y | after | 0 | none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last | `.run/backlog_drafts/func_801463A0.c` | -| 14 | func_80177940 | WAVE | 138 | 101 | 13938 | 1.60 | 27.6 | Y | jr_801734BC | 65 | prologue+setup (35 ins) byte-match exactly; loop body diverges on gcc loop-invariant hoist ORDERING (schedule… | `.run/backlog_drafts/func_80177940.c` | -| 15 | func_801387B8 | WAVE | 138 | 100 | 13800 | 1.58 | 29.2 | Y | jr_801380E0 | 50 | the two scanned bytes land in $a0/$a1 not $a1/$a2 (gcc-2.7.2 grabs the freed incoming-arg $a0 for the first l… | `.run/backlog_drafts/func_801387B8.c` | -| 16 | func_8014CD80 | WAVE | 138 | 97 | 13386 | 1.54 | 30.7 | Y | after | 63 | WAVE: 63 mismatch | `.run/backlog_drafts/func_8014CD80.c` | -| 17 | func_80150170 | WAVE | 138 | 95 | 13110 | 1.51 | 32.2 | Y | after | 88 | WAVE: 88 mismatch | `.run/backlog_drafts/func_80150170.c` | -| 18 | func_8014D12C | WAVE | 138 | 93 | 12834 | 1.47 | 33.7 | Y | after | 53 | WAVE: 53 mismatch | `.run/backlog_drafts/func_8014D12C.c` | -| 19 | func_8014FFDC | WAVE | 138 | 93 | 12834 | 1.47 | 35.2 | Y | after | 1 | none — MATCH | `.run/backlog_drafts/func_8014FFDC.c` | -| 20 | func_801502EC | WAVE | 138 | 93 | 12834 | 1.47 | 36.7 | Y | after | 78 | WAVE: 78 mismatch | `.run/backlog_drafts/func_801502EC.c` | -| 21 | func_8014C6F4 | WAVE | 138 | 91 | 12558 | 1.44 | 38.1 | Y | after | 14 | WAVE: 14 mismatch | `.run/backlog_drafts/func_8014C6F4.c` | -| 22 | func_80158638 | STUB | 138 | 87 | 12006 | 1.38 | 39.5 | Y | jr_8015444C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_80158638.c` | -| 23 | func_8012B4B8 | WAVE | 138 | 84 | 11592 | 1.33 | 40.8 | Y | jr_8012ACE0 | 0 | none — MATCH | `.run/backlog_drafts/func_8012B4B8.c` | -| 24 | func_8014D4C0 | WAVE | 138 | 84 | 11592 | 1.33 | 42.1 | Y | after | 44 | WAVE: 44 mismatch | `.run/backlog_drafts/func_8014D4C0.c` | -| 25 | func_80156670 | WAVE | 138 | 83 | 11454 | 1.32 | 43.5 | Y | jr_8015444C | | none — MATCH (83 ins). Key: hoist `iVar1 = uVar3*4;` as its OWN statement before the if so gcc schedules `sll… | `.run/backlog_drafts/func_80156670.c` | -| 26 | func_8014CF04 | WAVE | 138 | 82 | 11316 | 1.30 | 44.8 | Y | after | 27 | WAVE: 27 mismatch | `.run/backlog_drafts/func_8014CF04.c` | -| 27 | func_8012E138 | WAVE | 138 | 81 | 11178 | 1.28 | 46.0 | Y | jr_8012ACE0 | 0 | none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 | `.run/backlog_drafts/func_8012E138.c` | -| 28 | func_8014D2A0 | WAVE | 138 | 80 | 11040 | 1.27 | 47.3 | Y | after | 27 | none — MATCH (80 ins, relocation-masked); loop-guard idiom per engine_core DEFINE_func_80164ACC | `.run/backlog_drafts/func_8014D2A0.c` | -| 29 | func_8012A1BC | WAVE | 138 | 78 | 10764 | 1.24 | 48.5 | Y | a | 42 | 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… | `.run/backlog_drafts/func_8012A1BC.c` | -| 30 | func_80137178 | WAVE | 138 | 78 | 10764 | 1.24 | 49.8 | Y | jr_8012ACE0 | 15 | reg values all correct; prologue independent-addiu order + lazy sw placement differ | `.run/backlog_drafts/func_80137178.c` | -| 31 | func_8016163C | WAVE | 138 | 78 | 10764 | 1.24 | 51.0 | Y | jr_8015AE2C | 50 | none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… | `.run/backlog_drafts/func_8016163C.c` | -| 32 | func_80163534 | WAVE | 138 | 76 | 10488 | 1.20 | 52.2 | Y | jr_8015AE2C | | mismatch=13, a single 1-position scheduling tie. Instrs 1-30 byte-perfect; all registers correct | `.run/backlog_drafts/func_80163534.c` | -| 33 | func_8014D610 | WAVE | 138 | 74 | 10212 | 1.17 | 53.4 | Y | after | 60 | WAVE: 60 mismatch | `.run/backlog_drafts/func_8014D610.c` | -| 34 | func_8012E014 | WAVE | 138 | 73 | 10074 | 1.16 | 54.6 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` | -| 35 | func_80132F40 | STRUCT | 138 | 72 | 9936 | 1.14 | 55.7 | Y | jr_8012ACE0 | 59 | STRUCT: 59 mismatch | `.run/backlog_drafts/func_80132F40.c` | -| 36 | func_80164418 | WAVE | 138 | 70 | 9660 | 1.11 | 56.8 | Y | jr_8015AE2C | 0 | none — MATCH (s16 stack array forces the spill; 2nd ratan2 reuses /dy/ in $a1) | `.run/backlog_drafts/func_80164418.c` | -| 37 | func_80161774 | WAVE | 138 | 69 | 9522 | 1.09 | 57.9 | Y | jr_8015AE2C | 53 | none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) | `.run/backlog_drafts/func_80161774.c` | -| 38 | func_80175308 | WAVE | 138 | 67 | 9246 | 1.06 | 59.0 | Y | jr_801734BC | 41 | WAVE: 41 mismatch | `.run/backlog_drafts/func_80175308.c` | -| 39 | func_80130C08 | WAVE | 138 | 65 | 8970 | 1.03 | 60.0 | Y | jr_8012ACE0 | 5 | tail shares one jal func_80131CA8 between the a1=5 and a1=0x38 arms via `j .L80130CEC` with a DUPLICATED `mov… | `.run/backlog_drafts/func_80130C08.c` | -| 40 | func_80133298 | WAVE | 138 | 65 | 8970 | 1.03 | 61.0 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` | +| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 4.69 | 4.7 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` | +| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 3.91 | 8.6 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` | +| 3 | func_80174CB0 | WAVE | 138 | 123 | 16974 | 2.91 | 11.5 | Y | jr_801734BC | 0 | close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… | `.run/backlog_drafts/func_80174CB0.c` | +| 4 | func_801330E0 | STUB | 138 | 110 | 15180 | 2.60 | 14.1 | Y | jr_8012ACE0 | 7 | STUB: 7 mismatch | `.run/backlog_drafts/func_801330E0.c` | +| 5 | func_8012CC88 | WAVE | 138 | 105 | 14490 | 2.49 | 16.6 | Y | jr_8012ACE0 | 0 | none — MATCH (105 ins, relocation-masked) | `.run/backlog_drafts/func_8012CC88.c` | +| 6 | func_80169228 | WAVE | 138 | 105 | 14490 | 2.49 | 19.1 | Y | jr_8015C32C | 0 | none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, | `.run/backlog_drafts/func_80169228.c` | +| 7 | func_801463A0 | WAVE | 138 | 101 | 13938 | 2.39 | 21.5 | Y | after | 0 | none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last | `.run/backlog_drafts/func_801463A0.c` | +| 8 | func_8014D12C | WAVE | 138 | 93 | 12834 | 2.20 | 23.7 | Y | after | 53 | WAVE: 53 mismatch | `.run/backlog_drafts/func_8014D12C.c` | +| 9 | func_8014C6F4 | WAVE | 138 | 91 | 12558 | 2.15 | 25.8 | Y | after | 14 | WAVE: 14 mismatch | `.run/backlog_drafts/func_8014C6F4.c` | +| 10 | func_80158638 | STUB | 138 | 87 | 12006 | 2.06 | 27.9 | Y | jr_80154C24 | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_80158638.c` | +| 11 | func_8012B4B8 | WAVE | 138 | 84 | 11592 | 1.99 | 29.9 | Y | jr_8012ACE0 | 0 | none — MATCH | `.run/backlog_drafts/func_8012B4B8.c` | +| 12 | func_8014D4C0 | WAVE | 138 | 84 | 11592 | 1.99 | 31.9 | Y | after | 15 | initial draft — modeled on the byte-matched sibling DEFINE_func_8014CD80 (engine_core.h) | `.run/backlog_drafts/func_8014D4C0.c` | +| 13 | func_80156670 | WAVE | 138 | 83 | 11454 | 1.96 | 33.8 | Y | jr_80154C24 | | none — MATCH (83 ins). Key: hoist `iVar1 = uVar3*4;` as its OWN statement before the if so gcc schedules `sll… | `.run/backlog_drafts/func_80156670.c` | +| 14 | func_8014CF04 | WAVE | 138 | 82 | 11316 | 1.94 | 35.8 | Y | after | 27 | WAVE: 27 mismatch | `.run/backlog_drafts/func_8014CF04.c` | +| 15 | func_8014D2A0 | WAVE | 138 | 80 | 11040 | 1.89 | 37.7 | Y | after | 2 | first draft — u8* IV walk over D_801202A0 with 0x10C stride, sibling-shaped after DEFINE_func_80163950() | `.run/backlog_drafts/func_8014D2A0.c` | +| 16 | func_8012A1BC | WAVE | 138 | 78 | 10764 | 1.85 | 39.5 | Y | a | 42 | 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… | `.run/backlog_drafts/func_8012A1BC.c` | +| 17 | func_8016163C | WAVE | 138 | 78 | 10764 | 1.85 | 41.3 | Y | jr_8015C32C | 50 | none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… | `.run/backlog_drafts/func_8016163C.c` | +| 18 | func_80163534 | WAVE | 138 | 76 | 10488 | 1.80 | 43.1 | Y | jr_8015C32C | 0 | none — MATCH (76 ins, relocation-masked) | `.run/backlog_drafts/func_80163534.c` | +| 19 | func_8014D610 | WAVE | 138 | 74 | 10212 | 1.75 | 44.9 | Y | after | 60 | WAVE: 60 mismatch | `.run/backlog_drafts/func_8014D610.c` | +| 20 | func_8012E014 | WAVE | 138 | 73 | 10074 | 1.73 | 46.6 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` | +| 21 | func_80132F40 | STRUCT | 138 | 72 | 9936 | 1.70 | 48.3 | Y | jr_8012ACE0 | 59 | STRUCT: 59 mismatch | `.run/backlog_drafts/func_80132F40.c` | +| 22 | func_80161774 | WAVE | 138 | 69 | 9522 | 1.63 | 50.0 | Y | jr_8015C32C | 53 | none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) | `.run/backlog_drafts/func_80161774.c` | +| 23 | func_80133298 | WAVE | 138 | 65 | 8970 | 1.54 | 51.5 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` | +| 24 | func_80140D68 | WAVE | 138 | 65 | 8970 | 1.54 | 53.0 | Y | main | 5 | 5-ins near-miss — gcc hoists `lui 0xff00` (the 0xFF000000 mask) one slot too early in the first AddPrim block… | `.run/backlog_drafts/func_80140D68.c` | +| 25 | func_8014A738 | WAVE | 138 | 62 | 8556 | 1.47 | 54.5 | Y | after | 11 | wip | `.run/backlog_drafts/func_8014A738.c` | +| 26 | func_8012A328 | WAVE | 138 | 60 | 8280 | 1.42 | 55.9 | Y | a | 0 | none — MATCH (60 ins, relocation-masked) | `.run/backlog_drafts/func_8012A328.c` | +| 27 | func_80138DE0 | WAVE | 138 | 60 | 8280 | 1.42 | 57.3 | Y | jr_801380E0 | 0 | none — MATCH (60 ins) | `.run/backlog_drafts/func_80138DE0.c` | +| 28 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 1.40 | 58.7 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` | +| 29 | func_801777BC | WAVE | 138 | 59 | 8142 | 1.40 | 60.1 | Y | jr_801734BC | 29 | body byte-matches; residual ~3 ins = prologue instruction-scheduling (final `sll t8,16` / `lw param_7` / `add… | `.run/backlog_drafts/func_801777BC.c` | +| 30 | func_8012B77C | WAVE | 138 | 58 | 8004 | 1.37 | 61.5 | Y | jr_8012ACE0 | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | `.run/backlog_drafts/func_8012B77C.c` | +| 31 | func_801759D8 | WAVE | 138 | 56 | 7728 | 1.33 | 62.8 | Y | jr_801734BC | 0 | none — MATCH (56 ins) | `.run/backlog_drafts/func_801759D8.c` | +| 32 | func_80175820 | WAVE | 138 | 55 | 7590 | 1.30 | 64.1 | Y | jr_801734BC | 4 | body BYTE-EXACT (52 ins match); only residual is target's phantom 0x10 stack frame (args_size=16 from an elim… | `.run/backlog_drafts/func_80175820.c` | +| 33 | func_801758FC | WAVE | 138 | 55 | 7590 | 1.30 | 65.4 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` | +| 34 | func_80176144 | WAVE | 138 | 53 | 7314 | 1.25 | 66.7 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` | +| 35 | func_80151C54 | PINS | 138 | 52 | 7176 | 1.23 | 67.9 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151C54.c` | +| 36 | func_8012F49C | WAVE | 138 | 51 | 7038 | 1.21 | 69.1 | Y | jr_8012ACE0 | 0 | none — MATCH (51 ins, relocation-masked) | `.run/backlog_drafts/func_8012F49C.c` | +| 37 | func_801376E8 | WAVE | 138 | 51 | 7038 | 1.21 | 70.3 | Y | jr_80135D20 | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | `.run/backlog_drafts/func_801376E8.c` | +| 38 | func_80146750 | WAVE | 138 | 47 | 6486 | 1.11 | 71.5 | Y | after | 45 | WAVE: 45 mismatch | `.run/backlog_drafts/func_80146750.c` | +| 39 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 1.11 | 72.6 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` | +| 40 | func_80151B98 | PINS | 138 | 47 | 6486 | 1.11 | 73.7 | Y | after | 15 | PINS: 15 mismatch | `.run/backlog_drafts/func_80151B98.c` | -## GIANT hand-decomp queue — 2 fns, 5.8% of all remaining gain +## GIANT hand-decomp queue — 2 fns, 8.6% of all remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 3.14 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` | -| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 2.62 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` | +| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 4.69 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` | +| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 3.91 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` | ## Idiom-group tables -### STRUCT — 59 fns, 4.2% of remaining gain +### STRUCT — 36 fns, 2.6% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_80137DD4 | STRUCT | 138 | 129 | 17802 | 2.04 | Y | jr_8012ACE0 | 107 | regalloc fully matches (frame -0x30; s4/s3/s5=params, s2=mask, s1=ptr w/ in-place +0x24 reuse, s0=acc+reused … | `.run/backlog_drafts/func_80137DD4.c` | -| 2 | func_80132F40 | STRUCT | 138 | 72 | 9936 | 1.14 | Y | jr_8012ACE0 | 59 | STRUCT: 59 mismatch | `.run/backlog_drafts/func_80132F40.c` | -| 3 | func_8017C974 | STRUCT | 1 | 947 | 947 | 0.11 | Y | jr_8017A4AC | | | | -| 4 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.07 | Y | jr_8017A4AC | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8018103C.c` | -| 5 | func_8013F350 | STRUCT | 1 | 490 | 490 | 0.06 | Y | main | | | | -| 6 | func_80131340 | STRUCT | 1 | 424 | 424 | 0.05 | n | jr_8012ACE0 | | | | -| 7 | func_80159C84 | STRUCT | 1 | 337 | 337 | 0.04 | Y | jr_8015444C | | | | -| 8 | func_80183324 | STRUCT | 1 | 324 | 324 | 0.04 | Y | jr_80182268 | | | | -| 9 | func_80135EB0 | STRUCT | 1 | 289 | 289 | 0.03 | n | jr_8012ACE0 | | | | -| 10 | func_8015B950 | STRUCT | 1 | 271 | 271 | 0.03 | Y | jr_8015AE2C | | | | -| 11 | func_8017FD14 | STRUCT | 1 | 249 | 249 | 0.03 | Y | jr_8017A4AC | | | | -| 12 | func_8015C32C | STRUCT | 1 | 222 | 222 | 0.03 | Y | jr_8015AE2C | | | | -| 13 | func_8015EA3C | STRUCT | 1 | 204 | 204 | 0.02 | Y | jr_8015AE2C | | | | -| 14 | func_8015D738 | STRUCT | 1 | 201 | 201 | 0.02 | Y | jr_8015AE2C | | | | -| 15 | func_80181BE4 | STRUCT | 1 | 201 | 201 | 0.02 | Y | jr_8017A4AC | | | | -| 16 | func_8015F448 | STRUCT | 1 | 188 | 188 | 0.02 | Y | jr_8015AE2C | | | | -| 17 | func_8014032C | STRUCT | 1 | 183 | 183 | 0.02 | Y | main | | | | -| 18 | func_80135A4C | STRUCT | 1 | 181 | 181 | 0.02 | n | jr_8012ACE0 | | | | -| 19 | func_8017AE2C | STRUCT | 1 | 174 | 174 | 0.02 | Y | jr_8017A4AC | | | | -| 20 | func_80154C24 | STRUCT | 1 | 173 | 173 | 0.02 | Y | jr_8015444C | | | | -| 21 | func_8018308C | STRUCT | 1 | 166 | 166 | 0.02 | Y | jr_80182268 | | | | -| 22 | func_80160534 | STRUCT | 1 | 161 | 161 | 0.02 | Y | jr_8015AE2C | | | | -| 23 | func_80180C90 | STRUCT | 1 | 160 | 160 | 0.02 | Y | jr_8017A4AC | | | | -| 24 | func_801299C8 | STRUCT | 1 | 158 | 158 | 0.02 | n | a | | | | -| 25 | func_80135260 | STRUCT | 1 | 136 | 136 | 0.02 | n | jr_8012ACE0 | | | | -| 26 | func_80183834 | STRUCT | 1 | 135 | 135 | 0.02 | Y | jr_80182268 | | | | -| 27 | func_80181948 | STRUCT | 1 | 132 | 132 | 0.02 | Y | jr_8017A4AC | | | | -| 28 | func_80185E68 | STRUCT | 1 | 132 | 132 | 0.02 | Y | jr_80182268 | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` | -| 29 | func_801555F4 | STRUCT | 1 | 131 | 131 | 0.02 | Y | jr_8015444C | | | | -| 30 | func_8015CD20 | STRUCT | 1 | 129 | 129 | 0.01 | Y | jr_8015AE2C | | | | -| 31 | func_8012AAAC | STRUCT | 1 | 125 | 125 | 0.01 | n | a | | | | -| 32 | func_80140608 | STRUCT | 1 | 123 | 123 | 0.01 | Y | main | | | | -| 33 | func_801588CC | STRUCT | 1 | 122 | 122 | 0.01 | Y | jr_8015444C | | | | -| 34 | func_80181F08 | STRUCT | 1 | 117 | 117 | 0.01 | Y | jr_8017A4AC | | | | -| 35 | func_80135888 | STRUCT | 1 | 113 | 113 | 0.01 | n | jr_8012ACE0 | | | | -| 36 | func_80179B74 | STRUCT | 1 | 111 | 111 | 0.01 | Y | jr_80178D40 | | | | -| 37 | func_801594E8 | STRUCT | 1 | 108 | 108 | 0.01 | Y | jr_8015444C | | | | -| 38 | func_80182C9C | STRUCT | 1 | 101 | 101 | 0.01 | Y | jr_80182268 | | none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as | `.run/backlog_drafts/func_80182C9C.c` | -| 39 | func_80135D20 | STRUCT | 1 | 100 | 100 | 0.01 | n | jr_8012ACE0 | | | | -| 40 | func_801820DC | STRUCT | 1 | 94 | 94 | 0.01 | Y | jr_8017A4AC | 0 | none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) | `.run/backlog_drafts/func_801820DC.c` | +| 1 | func_80132F40 | STRUCT | 138 | 72 | 9936 | 1.70 | Y | jr_8012ACE0 | 59 | STRUCT: 59 mismatch | `.run/backlog_drafts/func_80132F40.c` | +| 2 | func_8017C974 | STRUCT | 1 | 947 | 947 | 0.16 | Y | jr_8017AE2C | | | | +| 3 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.10 | Y | jr_8017AE2C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8018103C.c` | +| 4 | func_80183324 | STRUCT | 1 | 324 | 324 | 0.06 | Y | jr_80182268 | | | | +| 5 | func_80135EB0 | STRUCT | 1 | 289 | 289 | 0.05 | Y | jr_80135D20 | | | | +| 6 | func_8015B950 | STRUCT | 1 | 271 | 271 | 0.05 | Y | jr_8015AE2C | | | | +| 7 | func_8017FD14 | STRUCT | 1 | 249 | 249 | 0.04 | Y | jr_8017AE2C | | | | +| 8 | func_80181BE4 | STRUCT | 1 | 201 | 201 | 0.03 | Y | jr_8017AE2C | | | | +| 9 | func_8018308C | STRUCT | 1 | 166 | 166 | 0.03 | Y | jr_80182268 | | | | +| 10 | func_80180C90 | STRUCT | 1 | 160 | 160 | 0.03 | Y | jr_8017AE2C | | | | +| 11 | func_80135260 | STRUCT | 1 | 136 | 136 | 0.02 | Y | jr_8012ACE0 | 5 | none — MATCH | `.run/backlog_drafts/func_80135260.c` | +| 12 | func_80183834 | STRUCT | 1 | 135 | 135 | 0.02 | Y | jr_80182268 | | | | +| 13 | func_80181948 | STRUCT | 1 | 132 | 132 | 0.02 | Y | jr_8017AE2C | | | | +| 14 | func_80185E68 | STRUCT | 1 | 132 | 132 | 0.02 | Y | jr_80182268 | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` | +| 15 | func_8015CD20 | STRUCT | 1 | 129 | 129 | 0.02 | Y | jr_8015C32C | | | | +| 16 | func_8012AAAC | STRUCT | 1 | 125 | 125 | 0.02 | Y | a | 0 | none — MATCH (125 ins, relocation-masked) | `.run/backlog_drafts/func_8012AAAC.c` | +| 17 | func_80181F08 | STRUCT | 1 | 117 | 117 | 0.02 | Y | jr_8017AE2C | | | | +| 18 | func_80179B74 | STRUCT | 1 | 111 | 111 | 0.02 | Y | jr_80178D40 | | | | +| 19 | func_80182C9C | STRUCT | 1 | 101 | 101 | 0.02 | Y | jr_80182268 | | none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as | `.run/backlog_drafts/func_80182C9C.c` | +| 20 | func_801820DC | STRUCT | 1 | 94 | 94 | 0.02 | Y | jr_8017AE2C | 0 | none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) | `.run/backlog_drafts/func_801820DC.c` | +| 21 | func_801789AC | STRUCT | 1 | 91 | 91 | 0.02 | Y | jr_801734BC | | none — MATCH (91 ins, relocation-masked) | `.run/backlog_drafts/func_801789AC.c` | +| 22 | func_8016AE5C | STRUCT | 1 | 85 | 85 | 0.01 | Y | jr_8016AB6C | 0 | none — MATCH (85 ins, match_one). switch/jtbl STRUCT fn. The tail's | `.run/backlog_drafts/func_8016AE5C.c` | +| 23 | func_80182E7C | STRUCT | 1 | 85 | 85 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (85 ins, relocation-masked). Two switch-codegen levers: | `.run/backlog_drafts/func_80182E7C.c` | +| 24 | func_8018281C | STRUCT | 1 | 76 | 76 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (76 ins). jtbl forced via explicit case 4/6 (count>=5 over MIPS tablejump threshold); case-5 blo… | `.run/backlog_drafts/func_8018281C.c` | +| 25 | func_80180B64 | STRUCT | 1 | 75 | 75 | 0.01 | Y | jr_8017AE2C | | none — MATCH (75 ins, relocation-masked) | `.run/backlog_drafts/func_80180B64.c` | +| 26 | func_80171B4C | STRUCT | 1 | 70 | 70 | 0.01 | Y | jr_8016AB6C | 3 | 3-off in the tail only (body+prologue MATCH via $s1 pin on arg1). gcc fills the | `.run/backlog_drafts/func_80171B4C.c` | +| 27 | func_80151944 | STRUCT | 4 | 15 | 60 | 0.01 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151944.c` | +| 28 | func_80159A20 | STRUCT | 1 | 58 | 58 | 0.01 | Y | jr_801588CC | | none — MATCH. Key lever: block tail-MERGE (gcc shared `bne ...,$L1` cross-jump) by making the two return-test… | `.run/backlog_drafts/func_80159A20.c` | +| 29 | func_8015FBE0 | STRUCT | 1 | 58 | 58 | 0.01 | Y | jr_8015C32C | 1 | none — MATCH | `.run/backlog_drafts/func_8015FBE0.c` | +| 30 | func_80183CF4 | STRUCT | 1 | 57 | 57 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (clean switch + jtbl; orchestrator owns jtbl/rodata migration) | `.run/backlog_drafts/func_80183CF4.c` | +| 31 | func_80183AF0 | STRUCT | 1 | 47 | 47 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (mask pinned $a1/$5 + p pinned $v0/$2; switch w/ distributed func_8012C218 tail via dup calls + … | `.run/backlog_drafts/func_80183AF0.c` | +| 32 | func_80183BAC | STRUCT | 1 | 41 | 41 | 0.01 | Y | jr_80182268 | 0 | switch jump-table dispatch (jtbl_801D9420); verifying case grouping 0,1,2,5,6/3,7/4 emits the target table + … | `.run/backlog_drafts/func_80183BAC.c` | +| 33 | func_80183C50 | STRUCT | 1 | 41 | 41 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (cross-jump exploit §cookbook L1543: dup func_8012C218 into case3/7 + case4 → merged jal;nop) | `.run/backlog_drafts/func_80183C50.c` | +| 34 | func_801754A8 | STRUCT | 1 | 37 | 37 | 0.01 | Y | jr_801734BC | 0 | none — MATCH (37 ins, relocation-masked proxy) | `.run/backlog_drafts/func_801754A8.c` | +| 35 | func_801549F8 | STRUCT | 1 | 31 | 31 | 0.01 | Y | jr_8015444C | 3 | 3-off at -O2 (match_one + gate flags). The n=byte keep-alive copy (addu $a3,$v0,$zero) emits BEFORE the hoist… | `.run/backlog_drafts/func_801549F8.c` | +| 36 | func_80142A10 | STRUCT | 1 | 28 | 28 | 0.00 | Y | main | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` | -*(+19 more STRUCT fns — see `.run/worklist.json`)* - -### PINS — 20 fns, 7.5% of remaining gain +### PINS — 19 fns, 10.5% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 0.94 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` | -| 2 | func_80151C54 | PINS | 138 | 52 | 7176 | 0.82 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151C54.c` | -| 3 | func_80151B98 | PINS | 138 | 47 | 6486 | 0.74 | Y | after | 15 | PINS: 15 mismatch | `.run/backlog_drafts/func_80151B98.c` | -| 4 | func_80163764 | PINS | 138 | 42 | 5796 | 0.67 | Y | jr_8015AE2C | 10 | none — MATCH (42 ins). pins $s2/$s1/$s0/$s3 + u32 counter (sltiu) + init order s2,s3,i,p | `.run/backlog_drafts/func_80163764.c` | -| 5 | func_80146AFC | PINS | 138 | 40 | 5520 | 0.63 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` | -| 6 | func_80131A34 | PINS | 138 | 37 | 5106 | 0.59 | Y | jr_8012ACE0 | 3 | 3-off — (a) prologue saves $ra before $s0 (target: $s0 then $ra) and (b) return-0 path reuses $a1's proven-ze… | `.run/backlog_drafts/func_80131A34.c` | -| 7 | func_80151664 | PINS | 138 | 35 | 4830 | 0.55 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151664.c` | -| 8 | func_80170CF0 | PINS | 138 | 30 | 4140 | 0.48 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` | -| 9 | func_80141B90 | PINS | 138 | 29 | 4002 | 0.46 | Y | main | 4 | PINS: 4 mismatch | `.run/backlog_drafts/func_80141B90.c` | -| 10 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 0.41 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` | -| 11 | func_801733FC | PINS | 138 | 25 | 3450 | 0.40 | Y | jr_8016AB6C | 0 | none — modeled on sibling func_80173460 (packed 8-byte struct copy + two s16=1 stores) | `.run/backlog_drafts/func_801733FC.c` | -| 12 | func_80131CA8 | PINS | 138 | 19 | 2622 | 0.30 | Y | jr_8012ACE0 | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | `.run/backlog_drafts/func_80131CA8.c` | -| 13 | func_80156600 | PINS | 138 | 18 | 2484 | 0.29 | Y | jr_8015444C | | none — MATCH (simple counted scan, do-while form per Ghidra-C) | `.run/backlog_drafts/func_80156600.c` | -| 14 | func_80161208 | PINS | 138 | 14 | 1932 | 0.22 | Y | jr_8015AE2C | 0 | none — MATCH expected (param saved across call → natural $s0, no pin needed) | `.run/backlog_drafts/func_80161208.c` | -| 15 | func_80184C0C | PINS | 1 | 48 | 48 | 0.01 | Y | jr_80182268 | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` | -| 16 | func_80161C24 | PINS | 1 | 29 | 29 | 0.00 | Y | jr_8015AE2C | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` | -| 17 | func_80182988 | PINS | 1 | 22 | 22 | 0.00 | Y | jr_80182268 | 6 | none — MATCH (0x5c store must be unsigned short so 0xaa10 stays +43536 → ori, not addiu/sign-extend) | `.run/backlog_drafts/func_80182988.c` | -| 18 | func_80157D20 | PINS | 1 | 21 | 21 | 0.00 | Y | jr_8015444C | 0 | none — MATCH expected (call, indexed u16-global load as 2nd arg, then call; param_1 saved across all three ca… | `.run/backlog_drafts/func_80157D20.c` | -| 19 | func_80161CD0 | PINS | 1 | 20 | 20 | 0.00 | Y | jr_8015AE2C | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` | -| 20 | func_80161D20 | PINS | 1 | 14 | 14 | 0.00 | Y | jr_8015AE2C | 1 | none — MATCH (array-of-u16 %lo-fold, §18) | `.run/backlog_drafts/func_80161D20.c` | +| 1 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 1.40 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` | +| 2 | func_80151C54 | PINS | 138 | 52 | 7176 | 1.23 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151C54.c` | +| 3 | func_80151B98 | PINS | 138 | 47 | 6486 | 1.11 | Y | after | 15 | PINS: 15 mismatch | `.run/backlog_drafts/func_80151B98.c` | +| 4 | func_80163764 | PINS | 138 | 42 | 5796 | 0.99 | Y | jr_8015C32C | 10 | none — MATCH (42 ins). pins $s2/$s1/$s0/$s3 + u32 counter (sltiu) + init order s2,s3,i,p | `.run/backlog_drafts/func_80163764.c` | +| 5 | func_80146AFC | PINS | 138 | 40 | 5520 | 0.95 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` | +| 6 | func_80131A34 | PINS | 138 | 37 | 5106 | 0.88 | Y | jr_8012ACE0 | 3 | 3-off — (a) prologue saves $ra before $s0 (target: $s0 then $ra) and (b) return-0 path reuses $a1's proven-ze… | `.run/backlog_drafts/func_80131A34.c` | +| 7 | func_80151664 | PINS | 138 | 35 | 4830 | 0.83 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151664.c` | +| 8 | func_80170CF0 | PINS | 138 | 30 | 4140 | 0.71 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` | +| 9 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 0.62 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` | +| 10 | func_801733FC | PINS | 138 | 25 | 3450 | 0.59 | Y | jr_8016AB6C | 0 | none — modeled on sibling func_80173460 (packed 8-byte struct copy + two s16=1 stores) | `.run/backlog_drafts/func_801733FC.c` | +| 11 | func_80131CA8 | PINS | 138 | 19 | 2622 | 0.45 | Y | jr_8012ACE0 | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | `.run/backlog_drafts/func_80131CA8.c` | +| 12 | func_80156600 | PINS | 138 | 18 | 2484 | 0.43 | Y | jr_80154C24 | | none — MATCH (simple counted scan, do-while form per Ghidra-C) | `.run/backlog_drafts/func_80156600.c` | +| 13 | func_80161208 | PINS | 138 | 14 | 1932 | 0.33 | Y | jr_8015C32C | 0 | none — MATCH expected (param saved across call → natural $s0, no pin needed) | `.run/backlog_drafts/func_80161208.c` | +| 14 | func_80184C0C | PINS | 1 | 48 | 48 | 0.01 | Y | jr_80182268 | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` | +| 15 | func_80161C24 | PINS | 1 | 29 | 29 | 0.00 | Y | jr_8015C32C | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` | +| 16 | func_80182988 | PINS | 1 | 22 | 22 | 0.00 | Y | jr_80182268 | 6 | none — MATCH (0x5c store must be unsigned short so 0xaa10 stays +43536 → ori, not addiu/sign-extend) | `.run/backlog_drafts/func_80182988.c` | +| 17 | func_80157D20 | PINS | 1 | 21 | 21 | 0.00 | Y | jr_80154C24 | 0 | none — MATCH expected (call, indexed u16-global load as 2nd arg, then call; param_1 saved across all three ca… | `.run/backlog_drafts/func_80157D20.c` | +| 18 | func_80161CD0 | PINS | 1 | 20 | 20 | 0.00 | Y | jr_8015C32C | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` | +| 19 | func_80161D20 | PINS | 1 | 14 | 14 | 0.00 | Y | jr_8015C32C | 1 | none — MATCH (array-of-u16 %lo-fold, §18) | `.run/backlog_drafts/func_80161D20.c` | -### WAVE — 126 fns, 76.9% of remaining gain +### WAVE — 91 fns, 70.0% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_8014F4C0 | WAVE | 138 | 141 | 19458 | 2.23 | Y | after | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_8014F4C0.c` | -| 2 | func_8014ADE0 | WAVE | 138 | 139 | 19182 | 2.20 | Y | after | 19 | 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; | `.run/backlog_drafts/func_8014ADE0.c` | -| 3 | func_80174CB0 | WAVE | 138 | 123 | 16974 | 1.95 | Y | jr_801734BC | 0 | close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… | `.run/backlog_drafts/func_80174CB0.c` | -| 4 | func_801325B8 | WAVE | 138 | 113 | 15594 | 1.79 | Y | jr_8012ACE0 | 4 | 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits | `.run/backlog_drafts/func_801325B8.c` | -| 5 | func_8014E284 | WAVE | 138 | 108 | 14904 | 1.71 | Y | after | 83 | WAVE: 83 mismatch | `.run/backlog_drafts/func_8014E284.c` | -| 6 | func_8012CC88 | WAVE | 138 | 105 | 14490 | 1.66 | Y | jr_8012ACE0 | 0 | none — MATCH (105 ins, relocation-masked) | `.run/backlog_drafts/func_8012CC88.c` | -| 7 | func_80169228 | WAVE | 138 | 105 | 14490 | 1.66 | Y | jr_8015AE2C | 0 | none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, | `.run/backlog_drafts/func_80169228.c` | -| 8 | func_80167714 | WAVE | 138 | 104 | 14352 | 1.65 | Y | jr_8015AE2C | 0 | none — MATCH (104 ins) | `.run/backlog_drafts/func_80167714.c` | -| 9 | func_801463A0 | WAVE | 138 | 101 | 13938 | 1.60 | Y | after | 0 | none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last | `.run/backlog_drafts/func_801463A0.c` | -| 10 | func_80177940 | WAVE | 138 | 101 | 13938 | 1.60 | Y | jr_801734BC | 65 | prologue+setup (35 ins) byte-match exactly; loop body diverges on gcc loop-invariant hoist ORDERING (schedule… | `.run/backlog_drafts/func_80177940.c` | -| 11 | func_801387B8 | WAVE | 138 | 100 | 13800 | 1.58 | Y | jr_801380E0 | 50 | the two scanned bytes land in $a0/$a1 not $a1/$a2 (gcc-2.7.2 grabs the freed incoming-arg $a0 for the first l… | `.run/backlog_drafts/func_801387B8.c` | -| 12 | func_8014CD80 | WAVE | 138 | 97 | 13386 | 1.54 | Y | after | 63 | WAVE: 63 mismatch | `.run/backlog_drafts/func_8014CD80.c` | -| 13 | func_80150170 | WAVE | 138 | 95 | 13110 | 1.51 | Y | after | 88 | WAVE: 88 mismatch | `.run/backlog_drafts/func_80150170.c` | -| 14 | func_8014D12C | WAVE | 138 | 93 | 12834 | 1.47 | Y | after | 53 | WAVE: 53 mismatch | `.run/backlog_drafts/func_8014D12C.c` | -| 15 | func_8014FFDC | WAVE | 138 | 93 | 12834 | 1.47 | Y | after | 1 | none — MATCH | `.run/backlog_drafts/func_8014FFDC.c` | -| 16 | func_801502EC | WAVE | 138 | 93 | 12834 | 1.47 | Y | after | 78 | WAVE: 78 mismatch | `.run/backlog_drafts/func_801502EC.c` | -| 17 | func_8014C6F4 | WAVE | 138 | 91 | 12558 | 1.44 | Y | after | 14 | WAVE: 14 mismatch | `.run/backlog_drafts/func_8014C6F4.c` | -| 18 | func_8012B4B8 | WAVE | 138 | 84 | 11592 | 1.33 | Y | jr_8012ACE0 | 0 | none — MATCH | `.run/backlog_drafts/func_8012B4B8.c` | -| 19 | func_8014D4C0 | WAVE | 138 | 84 | 11592 | 1.33 | Y | after | 44 | WAVE: 44 mismatch | `.run/backlog_drafts/func_8014D4C0.c` | -| 20 | func_80156670 | WAVE | 138 | 83 | 11454 | 1.32 | Y | jr_8015444C | | none — MATCH (83 ins). Key: hoist `iVar1 = uVar3*4;` as its OWN statement before the if so gcc schedules `sll… | `.run/backlog_drafts/func_80156670.c` | -| 21 | func_8014CF04 | WAVE | 138 | 82 | 11316 | 1.30 | Y | after | 27 | WAVE: 27 mismatch | `.run/backlog_drafts/func_8014CF04.c` | -| 22 | func_8012E138 | WAVE | 138 | 81 | 11178 | 1.28 | Y | jr_8012ACE0 | 0 | none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 | `.run/backlog_drafts/func_8012E138.c` | -| 23 | func_8014D2A0 | WAVE | 138 | 80 | 11040 | 1.27 | Y | after | 27 | none — MATCH (80 ins, relocation-masked); loop-guard idiom per engine_core DEFINE_func_80164ACC | `.run/backlog_drafts/func_8014D2A0.c` | -| 24 | func_8012A1BC | WAVE | 138 | 78 | 10764 | 1.24 | Y | a | 42 | 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… | `.run/backlog_drafts/func_8012A1BC.c` | -| 25 | func_80137178 | WAVE | 138 | 78 | 10764 | 1.24 | Y | jr_8012ACE0 | 15 | reg values all correct; prologue independent-addiu order + lazy sw placement differ | `.run/backlog_drafts/func_80137178.c` | -| 26 | func_8016163C | WAVE | 138 | 78 | 10764 | 1.24 | Y | jr_8015AE2C | 50 | none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… | `.run/backlog_drafts/func_8016163C.c` | -| 27 | func_80163534 | WAVE | 138 | 76 | 10488 | 1.20 | Y | jr_8015AE2C | | mismatch=13, a single 1-position scheduling tie. Instrs 1-30 byte-perfect; all registers correct | `.run/backlog_drafts/func_80163534.c` | -| 28 | func_8014D610 | WAVE | 138 | 74 | 10212 | 1.17 | Y | after | 60 | WAVE: 60 mismatch | `.run/backlog_drafts/func_8014D610.c` | -| 29 | func_8012E014 | WAVE | 138 | 73 | 10074 | 1.16 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` | -| 30 | func_80164418 | WAVE | 138 | 70 | 9660 | 1.11 | Y | jr_8015AE2C | 0 | none — MATCH (s16 stack array forces the spill; 2nd ratan2 reuses /dy/ in $a1) | `.run/backlog_drafts/func_80164418.c` | -| 31 | func_80161774 | WAVE | 138 | 69 | 9522 | 1.09 | Y | jr_8015AE2C | 53 | none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) | `.run/backlog_drafts/func_80161774.c` | -| 32 | func_80175308 | WAVE | 138 | 67 | 9246 | 1.06 | Y | jr_801734BC | 41 | WAVE: 41 mismatch | `.run/backlog_drafts/func_80175308.c` | -| 33 | func_80130C08 | WAVE | 138 | 65 | 8970 | 1.03 | Y | jr_8012ACE0 | 5 | tail shares one jal func_80131CA8 between the a1=5 and a1=0x38 arms via `j .L80130CEC` with a DUPLICATED `mov… | `.run/backlog_drafts/func_80130C08.c` | -| 34 | func_80133298 | WAVE | 138 | 65 | 8970 | 1.03 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` | -| 35 | func_80140D68 | WAVE | 138 | 65 | 8970 | 1.03 | Y | main | 5 | 5-ins near-miss — gcc hoists `lui 0xff00` (the 0xFF000000 mask) one slot too early in the first AddPrim block… | `.run/backlog_drafts/func_80140D68.c` | -| 36 | func_8014A738 | WAVE | 138 | 62 | 8556 | 0.98 | Y | after | 46 | WAVE: 46 mismatch | `.run/backlog_drafts/func_8014A738.c` | -| 37 | func_80136F3C | WAVE | 138 | 61 | 8418 | 0.97 | Y | jr_8012ACE0 | 10 | 10/61 — regalloc EXACT (param-copy + corner register-pins). residual = gcc list-scheduler permutation of the … | `.run/backlog_drafts/func_80136F3C.c` | -| 38 | func_8012A328 | WAVE | 138 | 60 | 8280 | 0.95 | Y | a | 0 | none — MATCH (60 ins, relocation-masked) | `.run/backlog_drafts/func_8012A328.c` | -| 39 | func_80138DE0 | WAVE | 138 | 60 | 8280 | 0.95 | Y | jr_801380E0 | 0 | none — MATCH (60 ins) | `.run/backlog_drafts/func_80138DE0.c` | -| 40 | func_801777BC | WAVE | 138 | 59 | 8142 | 0.94 | Y | jr_801734BC | 29 | body byte-matches; residual ~3 ins = prologue instruction-scheduling (final `sll t8,16` / `lw param_7` / `add… | `.run/backlog_drafts/func_801777BC.c` | +| 1 | func_80174CB0 | WAVE | 138 | 123 | 16974 | 2.91 | Y | jr_801734BC | 0 | close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… | `.run/backlog_drafts/func_80174CB0.c` | +| 2 | func_8012CC88 | WAVE | 138 | 105 | 14490 | 2.49 | Y | jr_8012ACE0 | 0 | none — MATCH (105 ins, relocation-masked) | `.run/backlog_drafts/func_8012CC88.c` | +| 3 | func_80169228 | WAVE | 138 | 105 | 14490 | 2.49 | Y | jr_8015C32C | 0 | none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, | `.run/backlog_drafts/func_80169228.c` | +| 4 | func_801463A0 | WAVE | 138 | 101 | 13938 | 2.39 | Y | after | 0 | none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last | `.run/backlog_drafts/func_801463A0.c` | +| 5 | func_8014D12C | WAVE | 138 | 93 | 12834 | 2.20 | Y | after | 53 | WAVE: 53 mismatch | `.run/backlog_drafts/func_8014D12C.c` | +| 6 | func_8014C6F4 | WAVE | 138 | 91 | 12558 | 2.15 | Y | after | 14 | WAVE: 14 mismatch | `.run/backlog_drafts/func_8014C6F4.c` | +| 7 | func_8012B4B8 | WAVE | 138 | 84 | 11592 | 1.99 | Y | jr_8012ACE0 | 0 | none — MATCH | `.run/backlog_drafts/func_8012B4B8.c` | +| 8 | func_8014D4C0 | WAVE | 138 | 84 | 11592 | 1.99 | Y | after | 15 | initial draft — modeled on the byte-matched sibling DEFINE_func_8014CD80 (engine_core.h) | `.run/backlog_drafts/func_8014D4C0.c` | +| 9 | func_80156670 | WAVE | 138 | 83 | 11454 | 1.96 | Y | jr_80154C24 | | none — MATCH (83 ins). Key: hoist `iVar1 = uVar3*4;` as its OWN statement before the if so gcc schedules `sll… | `.run/backlog_drafts/func_80156670.c` | +| 10 | func_8014CF04 | WAVE | 138 | 82 | 11316 | 1.94 | Y | after | 27 | WAVE: 27 mismatch | `.run/backlog_drafts/func_8014CF04.c` | +| 11 | func_8014D2A0 | WAVE | 138 | 80 | 11040 | 1.89 | Y | after | 2 | first draft — u8* IV walk over D_801202A0 with 0x10C stride, sibling-shaped after DEFINE_func_80163950() | `.run/backlog_drafts/func_8014D2A0.c` | +| 12 | func_8012A1BC | WAVE | 138 | 78 | 10764 | 1.85 | Y | a | 42 | 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… | `.run/backlog_drafts/func_8012A1BC.c` | +| 13 | func_8016163C | WAVE | 138 | 78 | 10764 | 1.85 | Y | jr_8015C32C | 50 | none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… | `.run/backlog_drafts/func_8016163C.c` | +| 14 | func_80163534 | WAVE | 138 | 76 | 10488 | 1.80 | Y | jr_8015C32C | 0 | none — MATCH (76 ins, relocation-masked) | `.run/backlog_drafts/func_80163534.c` | +| 15 | func_8014D610 | WAVE | 138 | 74 | 10212 | 1.75 | Y | after | 60 | WAVE: 60 mismatch | `.run/backlog_drafts/func_8014D610.c` | +| 16 | func_8012E014 | WAVE | 138 | 73 | 10074 | 1.73 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` | +| 17 | func_80161774 | WAVE | 138 | 69 | 9522 | 1.63 | Y | jr_8015C32C | 53 | none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) | `.run/backlog_drafts/func_80161774.c` | +| 18 | func_80133298 | WAVE | 138 | 65 | 8970 | 1.54 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` | +| 19 | func_80140D68 | WAVE | 138 | 65 | 8970 | 1.54 | Y | main | 5 | 5-ins near-miss — gcc hoists `lui 0xff00` (the 0xFF000000 mask) one slot too early in the first AddPrim block… | `.run/backlog_drafts/func_80140D68.c` | +| 20 | func_8014A738 | WAVE | 138 | 62 | 8556 | 1.47 | Y | after | 11 | wip | `.run/backlog_drafts/func_8014A738.c` | +| 21 | func_8012A328 | WAVE | 138 | 60 | 8280 | 1.42 | Y | a | 0 | none — MATCH (60 ins, relocation-masked) | `.run/backlog_drafts/func_8012A328.c` | +| 22 | func_80138DE0 | WAVE | 138 | 60 | 8280 | 1.42 | Y | jr_801380E0 | 0 | none — MATCH (60 ins) | `.run/backlog_drafts/func_80138DE0.c` | +| 23 | func_801777BC | WAVE | 138 | 59 | 8142 | 1.40 | Y | jr_801734BC | 29 | body byte-matches; residual ~3 ins = prologue instruction-scheduling (final `sll t8,16` / `lw param_7` / `add… | `.run/backlog_drafts/func_801777BC.c` | +| 24 | func_8012B77C | WAVE | 138 | 58 | 8004 | 1.37 | Y | jr_8012ACE0 | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | `.run/backlog_drafts/func_8012B77C.c` | +| 25 | func_801759D8 | WAVE | 138 | 56 | 7728 | 1.33 | Y | jr_801734BC | 0 | none — MATCH (56 ins) | `.run/backlog_drafts/func_801759D8.c` | +| 26 | func_80175820 | WAVE | 138 | 55 | 7590 | 1.30 | Y | jr_801734BC | 4 | body BYTE-EXACT (52 ins match); only residual is target's phantom 0x10 stack frame (args_size=16 from an elim… | `.run/backlog_drafts/func_80175820.c` | +| 27 | func_801758FC | WAVE | 138 | 55 | 7590 | 1.30 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` | +| 28 | func_80176144 | WAVE | 138 | 53 | 7314 | 1.25 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` | +| 29 | func_8012F49C | WAVE | 138 | 51 | 7038 | 1.21 | Y | jr_8012ACE0 | 0 | none — MATCH (51 ins, relocation-masked) | `.run/backlog_drafts/func_8012F49C.c` | +| 30 | func_801376E8 | WAVE | 138 | 51 | 7038 | 1.21 | Y | jr_80135D20 | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | `.run/backlog_drafts/func_801376E8.c` | +| 31 | func_80146750 | WAVE | 138 | 47 | 6486 | 1.11 | Y | after | 45 | WAVE: 45 mismatch | `.run/backlog_drafts/func_80146750.c` | +| 32 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 1.11 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` | +| 33 | func_80161374 | WAVE | 138 | 41 | 5658 | 0.97 | Y | jr_8015C32C | 10 | none — MATCH (41/41 relocation-masked) | `.run/backlog_drafts/func_80161374.c` | +| 34 | func_801778A8 | WAVE | 138 | 38 | 5244 | 0.90 | Y | jr_801734BC | 36 | WAVE: 36 mismatch | `.run/backlog_drafts/func_801778A8.c` | +| 35 | func_80161888 | WAVE | 138 | 37 | 5106 | 0.88 | Y | jr_8015C32C | 30 | none — MATCH (proxy verified) | `.run/backlog_drafts/func_80161888.c` | +| 36 | func_8012F40C | WAVE | 138 | 36 | 4968 | 0.85 | Y | jr_8012ACE0 | 0 | none — MATCH (address rematerialized per call via caller-saved $a0 pin) | `.run/backlog_drafts/func_8012F40C.c` | +| 37 | func_80144B14 | WAVE | 138 | 34 | 4692 | 0.80 | Y | main | 31 | none — MATCH (34 ins). Two stack structs (s16[3] each) passed by addr to | `.run/backlog_drafts/func_80144B14.c` | +| 38 | func_8014F3E8 | WAVE | 138 | 32 | 4416 | 0.76 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014F3E8.c` | +| 39 | func_80147364 | WAVE | 138 | 30 | 4140 | 0.71 | Y | after | 4 | none — MATCH (30 ins). Lever: hoist &D_80126B58 into a local ptr `u8 *p=&D_80126B58;` so gcc | `.run/backlog_drafts/func_80147364.c` | +| 40 | func_8016706C | WAVE | 138 | 30 | 4140 | 0.71 | Y | jr_8015C32C | 0 | none — MATCH (pending gate) | `.run/backlog_drafts/func_8016706C.c` | -*(+86 more WAVE fns — see `.run/worklist.json`)* +*(+51 more WAVE fns — see `.run/worklist.json`)* -### O0 — 7 fns, 0.6% of remaining gain +### O0 — 5 fns, 0.7% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_8013C08C | O0 | 138 | 27 | 3726 | 0.43 | Y | o0 | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_8013C08C.c` | -| 2 | func_8013C414 | O0 | 1 | 329 | 329 | 0.04 | Y | o0 | 322 | none — MATCH (329 ins, relocation-masked) | `.run/backlog_drafts/func_8013C414.c` | -| 3 | func_8013B83C | O0 | 1 | 272 | 272 | 0.03 | Y | o0 | | | | -| 4 | func_8013BD74 | O0 | 1 | 198 | 198 | 0.02 | Y | o0 | 192 | none — MATCH | `.run/backlog_drafts/func_8013BD74.c` | -| 5 | func_8013C0F8 | O0 | 1 | 154 | 154 | 0.02 | Y | o0 | 153 | none — MATCH (154 ins). Levers: (1) local_c/local_10 = STRUCT pointers so field offsets FOLD into lw/lbu off(… | `.run/backlog_drafts/func_8013C0F8.c` | -| 6 | func_8013B6A0 | O0 | 1 | 67 | 67 | 0.01 | Y | o0 | | | | -| 7 | func_8013B598 | O0 | 1 | 66 | 66 | 0.01 | Y | o0 | 66 | WAVE: 66 mismatch | `.run/backlog_drafts/func_8013B598.c` | +| 1 | func_8013C08C | O0 | 138 | 27 | 3726 | 0.64 | Y | o0 | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_8013C08C.c` | +| 2 | func_8013B83C | O0 | 1 | 272 | 272 | 0.05 | Y | o0 | | | | +| 3 | func_8013BD74 | O0 | 1 | 198 | 198 | 0.03 | Y | o0 | 192 | none — MATCH | `.run/backlog_drafts/func_8013BD74.c` | +| 4 | func_8013B6A0 | O0 | 1 | 67 | 67 | 0.01 | Y | o0 | | | | +| 5 | func_8013B598 | O0 | 1 | 66 | 66 | 0.01 | Y | o0 | 66 | WAVE: 66 mismatch | `.run/backlog_drafts/func_8013B598.c` | -### O1 — 1 fns, 0.5% of remaining gain +### O1 — 1 fns, 0.8% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_80161A90 | O1 | 138 | 34 | 4692 | 0.54 | Y | jr_8015AE2C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` | +| 1 | func_80161A90 | O1 | 138 | 34 | 4692 | 0.80 | Y | jr_8015C32C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` | -### STUB — 8 fns, 4.5% of remaining gain +### STUB — 6 fns, 6.7% of remaining gain | # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft | |--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------| -| 1 | func_801330E0 | STUB | 138 | 110 | 15180 | 1.74 | Y | jr_8012ACE0 | 7 | STUB: 7 mismatch | `.run/backlog_drafts/func_801330E0.c` | -| 2 | func_80158638 | STUB | 138 | 87 | 12006 | 1.38 | Y | jr_8015444C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_80158638.c` | -| 3 | func_8012EFB8 | STUB | 138 | 32 | 4416 | 0.51 | Y | jr_8012ACE0 | 11 | none — MATCH (32 ins, byte-verified via objdump -dz; match_one's default objdump elides the 2 consecutive rtp… | `.run/backlog_drafts/func_8012EFB8.c` | -| 4 | func_8016BA68 | STUB | 138 | 29 | 4002 | 0.46 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` | -| 5 | func_80162CCC | STUB | 138 | 23 | 3174 | 0.36 | Y | jr_8015AE2C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80162CCC.c` | -| 6 | func_8013CB84 | STUB | 1 | 249 | 249 | 0.03 | Y | main | | | | -| 7 | func_8013D53C | STUB | 1 | 240 | 240 | 0.03 | Y | main | | | | -| 8 | func_80138C60 | STUB | 1 | 62 | 62 | 0.01 | n | jr_801380E0 | | | | +| 1 | func_801330E0 | STUB | 138 | 110 | 15180 | 2.60 | Y | jr_8012ACE0 | 7 | STUB: 7 mismatch | `.run/backlog_drafts/func_801330E0.c` | +| 2 | func_80158638 | STUB | 138 | 87 | 12006 | 2.06 | Y | jr_80154C24 | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_80158638.c` | +| 3 | func_8012EFB8 | STUB | 138 | 32 | 4416 | 0.76 | Y | jr_8012ACE0 | 11 | none — MATCH (32 ins, byte-verified via objdump -dz; match_one's default objdump elides the 2 consecutive rtp… | `.run/backlog_drafts/func_8012EFB8.c` | +| 4 | func_8016BA68 | STUB | 138 | 29 | 4002 | 0.69 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` | +| 5 | func_80162CCC | STUB | 138 | 23 | 3174 | 0.54 | Y | jr_8015C32C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80162CCC.c` | +| 6 | func_80138C60 | STUB | 1 | 62 | 62 | 0.01 | n | jr_801380E0 | | | |