diff --git a/engine/README.md b/engine/README.md index 4e8b7ad..96d3aa9 100644 --- a/engine/README.md +++ b/engine/README.md @@ -52,6 +52,8 @@ at tag `v0.4.0-darkizuku-preview.1`. | A scene above 1080p (output resolution and upscaler preset, without Live resolution) or a patch that enlarges the game's heaps (resolution patches above 1080p from the patches folder) gets the 9152 MiB pool; the output alone does not (it exists only on the host side), so a 1440p output with a scene up to 1080p keeps 5056 MiB; a full pool is logged and explained in the crash report | `BB_DMEM_MB` | | Online: a network drop of the shadNet connection keeps the game signed in for 90 s while it reconnects (it returned to the title menu) | | | Online co-op on The Hunter's Dream with bbhost players: the launcher starts bbbridge (MaskZeus, GPL-3.0-or-later, built unmodified, in `bbbridge\`) with the game and points the game's shadNet and server traffic at it; Discord sign-in on the Online page, account in `network\bbbridge\` | `online_pool=huntersdream` | +| Intel 12th gen and later: the game's stores that keep values just below the stack pointer run 128 bytes lower, so Windows' exception frames no longer overwrite them (the crash when hit); 607 sites, skipped where the bytes differ (d4rksp4rt4n, Supermedo/bloodborne_pc #2, `patches/redzone.json`) | | +| eboot.bin as a plain decrypted ELF is accepted as well as the PS4 SELF | | | Quit game button in the in-game menu (Insert or L3+R3), pressed twice: the same clean exit as closing the window | | | Online co-op: shadNet server framing for signaling, UPnP port mapping (Supermedo 004d2c37), P2P port 3658 by default, play logs to the game server | `SHADPS4_P2P_PORT` | | In-game PC Colour page (brightness, contrast, saturation, hue from the game's own tone map) and a fog slider on PC Graphics, live; the same in the launcher's Picture tuning | `graphics_brightness`, `graphics_contrast`, `graphics_hue`, `graphics_fog` | diff --git a/engine/bbhost-changes.patch b/engine/bbhost-changes.patch index 9d67d7a..af05424 100644 --- a/engine/bbhost-changes.patch +++ b/engine/bbhost-changes.patch @@ -23914,6 +23914,111 @@ index 0000000..2677d7e +3395220681 +] +} +diff --git a/patches/redzone.json b/patches/redzone.json +new file mode 100644 +index 0000000..e38ac14 +--- /dev/null ++++ b/patches/redzone.json +@@ -0,0 +1 @@ ++{"eboot":"Bloodborne 01.09","text_sha256":"da9c1e6e6de298a07739a6d0bde7f6fa58198a0051b779dc241cbe9e9b6720ad","functions":153,"skipped":["0x3214c0 (jump table)","0x3bdcd0 (jump table)","0x40fc00 (jump table)","0x413b00 (jump table)","0x4c4d00 (jump table)","0x4c53a0 (jump table)","0x4c6ff0 (jump table)","0x5a71b0 (jump table)","0x781b60 (jump table)","0x787c30 (jump table)","0xd56840 (jump table)","0xd72690 (jump table)","0xd72a20 (jump table)","0xd72df0 (jump table)","0xd73310 (jump table)","0xd893a0 (jump table)","0xd8baf0 (jump table)","0xd8ed10 (jump table)","0xd99fd0 (jump table)","0xd9b6e0 (jump table)","0xd9c070 (jump table)","0xdc5b30 (jump table)","0xdc6700 (jump table)","0xf584c0 (jump table)","0xf5a5d0 (jump table)","0xffc220 (jump table)","0x15cb1f0 (jump table)","0x176f950 (jump table)","0x18dc900 (jump table)","0x210a700 (jump table)","0x2879e20 (jump table)"],"uncovered_stores":["0x6d5c5","0x1373e9","0x1373f0","0x1374b4","0x1374c4","0x137618","0x1376d6","0x1376dd","0x3b7031","0x3d10a8","0x3d157b","0x40b401","0x6db371","0x810356","0x810383","0xc62843","0xd4e640","0xd74582","0xdca513","0xe51128","0x17e44d6","0x17e44de","0x1a0d484","0x2b82e38","0x2b82e9d","0x2b82f9e","0x2b8300d","0x2b833b9","0x2b834fb","0x2b83e0a","0x2b83e4c","0x2b83fc0","0x2b84482","0x2b84627","0x2b85042","0x2b851a2","0x2b8532f","0x2b853ef","0x2b855b6","0x2b855dd","0x2b856e7","0x2b858a5"],"sites":[[82112,"6642c704692800",[-7]],[82135,"6642c704697d00",[-7]],[82156,"6642c704695d00",[-7]],[82174,"6642c704697b00",[-7]],[82192,"6642c704693c00",[-7]],[82210,"6642c704695b00",[-7]],[82797,"6642c704692900",[-7]],[82821,"6646893c69",[-5]],[82831,"468914a9488b4c24d042c6042900",[-4,5,-5]],[82897,"6642c704693e00",[-7]],[83032,"6644897c7d00418d343a8934bb41c6043800",[-6,4,-3,-5]],[83168,"48c741280000000048c7412000000000c7010000803fc741140000803fc741280000803f48c70001000000",[-8,-8,-6,-7,-7,-7]],[83235,"c7010000803f48c7410c0000000048c7410400000000c741140000803fc7411800000000c7411c0000000048c70001000000",[-6,-8,-8,-7,-7,-7,-7]],[491848,"488947184c896720488b4424e8488947284c8957304c8977388b4424e48947408b4424f48947448b4424f88947488b4424fc89474c8857504c894f08",[-4,-4,5,-4,-4,-4,4,-3,4,-3,4,-3,4,-3,-3,-4]],[801876,"418881d0000000498d99d3000000418a81d3000000418881d1000000418a81d4000000418881d2000000418a81d5000000418881d3000000",[-7,7,7,-7,7,-7,7,-7]],[802845,"6641c781d40000000000",[-10]],[802870,"418881d6000000418a91d8000000418891d7000000",[-7,7,-7]],[803166,"41c681d500000001",[-8]],[803257,"41c681d400000000",[-8]],[803378,"6641c781d40000000000",[-10]],[803444,"41c681d400000001",[-8]],[803541,"41c681d500000000",[-8]],[803556,"418881d900000084d2490f44da8a032401418881da000000",[-7,2,4,2,2,-7]],[803770,"418881da000000",[-7]],[847056,"4c897cd5004c8974d50866c744d512000066894cd5104c897cd5184c8964d52066c744d52a000066448954d52883c3026641895c8512",[-5,-5,-7,-5,-5,-5,-7,-6,3,-6]],[875519,"88084803442498",[-2,5]],[875655,"41880c284401d6",[-4,3]],[876019,"41880c2801f8",[-4,2]],[876411,"438814a84c89e2c1ed1443886ca801c1e91443884ca802c1e814438844a803",[-4,3,3,-5,3,-5,3,-5]],[876667,"43881498c1ee0a4388749801c1ed0a43886c9802c1e90a43884c9803",[-4,3,-5,3,-5,3,-5]],[876922,"8848fdc1ed0a408868fec1eb0a8858ff4c89eb4d89c5c1ea0a8810",[-3,3,-4,3,-3,3,3,3,-2]],[1140937,"881948ffc1",[-2,3]],[1152153,"488987f8000000",[-7]],[1152517,"66899ff8000000668987fa00000066898ffc00000066448987fe00000085d20f9fc20fb6d2ffc2899700010000",[-7,-7,-7,-8,2,3,3,2,-6]],[1186680,"6689047198",[-4,1]],[1186803,"6641890c68",[-5]],[1186920,"66890479ffc6",[-4,2]],[1186937,"66428b0461668901",[5,-3]],[1274660,"c706ff3f0000c702ff3f0000c70101c0ffff41c70001c0ffff",[-6,-6,-6,-7]],[1274830,"488b5424f0893a",[5,-2]],[1274846,"488b5424f88902",[5,-2]],[1275033,"488b5424f0892a",[5,-2]],[1275049,"488b5424f8893a",[5,-2]],[1275389,"488b7c24f0891f",[5,-2]],[1275405,"488b7c24f8892f",[5,-2]],[1275423,"41892866666666662e0f1f840000000000",[-3,14]],[1275579,"488b5424f0891a",[5,-2]],[1275595,"488b5424f8893a",[5,-2]],[3744672,"48c741280000000048c7412000000000c7010000803fc741140000803fc741280000803f48c70001000000",[-8,-8,-6,-7,-7,-7]],[3744739,"c7010000803f48c7410c0000000048c7410400000000c741140000803fc7411800000000c7411c0000000048c70001000000",[-6,-8,-8,-7,-7,-7,-7]],[3831463,"89b7a0000000",[-6]],[3854612,"884bfe8a4c03ff884bff8a0c03880b",[-3,4,-3,3,-2]],[3854673,"4288443604",[-5]],[3854705,"4288443605",[-5]],[3855203,"880b48ffc3",[-2,3]],[3855490,"880e48ffc6",[-2,3]],[3855735,"880b48ffc3",[-2,3]],[3855827,"884efe8a4bff884eff8a0b880e",[-3,3,-3,2,-2]],[3855888,"41884e0183f802",[-4,3]],[3855901,"418846024983c602",[-4,4]],[3856092,"41884d0049ffc5",[-4,3]],[3856304,"41884e0149ffc6",[-4,3]],[3856331,"c7000b000000",[-6]],[3856346,"48894730488b442448c7001d000000",[-4,5,-6]],[3856411,"48890f488977184c39da4929d34183c30544895f084d39ce4d29f14181c10101000044894f20488b4c24484889414844894150",[-3,-4,3,3,4,-4,3,3,7,-4,5,-4,-4]],[3856484,"48894f30488b4c2448c7011d000000",[-4,5,-6]],[3856519,"48894730488b442448c7001d000000",[-4,5,-6]],[3877551,"8816418d14194863d2418a14148856014101f94963d14989c1418a1414885602410fb656018d042a4898418a04048846038d041a4898418a040488460401fa4863c2418a0404884605410fb6008d14284863d2418a141488118d14184863d2418a141488510101f84898418a0404884102410fb6400101c501c301f84c8b5c24e84863d5418a14148851034863d3418a1414885104488b5424f04898418a0404884105",[-2,4,3,4,-3,3,3,3,4,-3,5,3,2,4,-3,3,2,4,-3,2,3,4,-3,4,3,3,4,-2,3,3,4,-3,2,2,4,-3,5,2,2,2,5,3,4,-3,3,4,-3,5,2,4,-3]],[3877873,"41881e8d3c064863ff418a1c3c41885e0101d64863f6418a1c3441885e02410fb63001f14863c9418a0c0c41884d0001f04898418a04044188450101d64863c6418a040441884502",[-3,3,3,4,-4,2,3,4,-4,4,2,3,4,-4,2,2,4,-4,2,3,4,-4]],[3878245,"88018d042f4898418a040088410101d74863c7418a0400884102410fb647014101c501c501d04963d54d89d5418a14108851034863d5418a14108851044898418a0400884105",[-2,3,2,4,-3,2,3,4,-3,5,3,2,2,3,3,4,-3,3,4,-3,2,4,-3]],[3878439,"88450001f24863c2418a04008845014863c1418a0400884502",[-3,2,3,4,-3,3,4,-3]],[3888698,"41882c2449ffc4",[-4,3]],[3889035,"880348ffc3",[-2,3]],[3889071,"89484c488b4424e0",[-3,5]],[3895457,"45897c2404",[-5]],[3895569,"4189442408",[-5]],[3895681,"45895c240c",[-5]],[3895791,"41897c2410",[-5]],[3895903,"41895c2414",[-5]],[3895974,"4989742418",[-5]],[3896463,"488b4424c04c897820",[5,-4]],[3908607,"8808498b0cf649030cef48c1e9104401c94863c9418a0c0c88480145030cab4963c9418a0c0c884802",[-2,4,4,4,3,3,4,-3,4,3,4,-3]],[3909372,"884d00498b0cf249030cd748c1e9104489c629ce4863ce4c89f6418a0c0c884d01442b04964963c8418a0c0c884d028a08884d03",[-3,4,4,4,3,2,3,3,4,-3,4,3,4,-3,2,-3]],[3966739,"8b5424fc891785f6",[4,-2,2]],[3966807,"4489670431d2",[-4,2]],[3966875,"8957084585ed",[-3,3]],[3966956,"89770c4585f6",[-3,3]],[3967023,"89571031c9",[-3,2]],[3967097,"8957144585d2",[-3,3]],[3967173,"894f1831c9",[-3,2]],[3967251,"894f1c4529c8",[-3,3]],[3967267,"c7472000000000",[-7]],[3967532,"c5fb2cc1894720",[4,-3]],[4001062,"c6041e00c6441eff00",[-4,-5]],[4001088,"c6041effc6441effff",[-4,-5]],[4001117,"44885c1efe418a0a884c1efd418a08884c1efc418a4d00884c1efb8a4c16fb884c1efa4883c0fa8a4c16fa884c1ef9",[-5,3,-4,3,-4,4,-4,4,-4,4,4,-4]],[4001336,"42886c16ff",[-5]],[4001443,"4088308a118850ff8a51ff8850fe8a51fe4883c1fd8850fd",[-3,2,-3,3,-3,3,4,-3]],[4001475,"41c646100641c6461204418a4e11c0e10241884e13",[-5,-5,4,3,-4]],[4001591,"88442eff4c0f44c3",[-4,4]],[4001702,"885c0eff490f44c1",[-4,4]],[4001721,"41c646110841c64613084d897e08",[-5,-5,-4]],[4001791,"66c7444efe0000",[-7]],[4001808,"66c7444efeffff",[-7]],[4001819,"885c4efd8a5c0efe885c4efc",[-4,4,-4]],[4001886,"40886c0eff8a5c16ff885c0efe",[-5,4,-4]],[4001910,"41c646100441c6461202418a4e1100c941884e13",[-5,-5,4,2,-4]],[4002274,"41881e85ff",[-3,2]],[4002288,"41884e014983c602",[-4,4]],[4002496,"40882e4585d2",[-3,3]],[4002511,"884e014883c602",[-3,4]],[4002673,"880240887201",[-2,-4]],[4002687,"8842028a41074883c108884203",[-3,3,4,-3]],[4003059,"882e884e01",[-2,-3]],[4003075,"8846028a42074883c208884603",[-3,3,4,-3]],[4003147,"884a12806210fd8a4211f6e1884213",[-3,-4,3,2,-3]],[4239500,"88042f48ffc5",[-3,3]],[4239730,"c6842f900000001c",[-8]],[4239740,"c6842f9000000016",[-8]],[4239753,"c6842f900000001a",[-8]],[4239792,"889cafe903000089cb83e33f81cb80000000889cafea030000",[-7,2,3,6,-7]],[4239846,"889cafe9030000ba06060000c4e268f7d981cb80000000889cafea03000089cb83e33f81cb80000000889cafeb030000",[-7,5,5,6,-7,2,3,6,-7]],[4239927,"889cafe9030000ba0c060000c4e268f7d981cb80000000889cafea0300004181ca80000000448894afeb03000089cb83e33f81cb80000000889cafec030000",[-7,5,5,6,-7,7,-8,2,3,6,-7]],[4240004,"889cafe803000066898c6fe8010000",[-7,-8]],[4240042,"c6842f9000000001",[-8]],[4240084,"889c2f90000000c684afe80300000066c7846fe80100000000",[-7,-8,-10]],[4240158,"889c2f90000000c684afe803000001888cafe903000083f90119db09cb66899c6fe8010000",[-7,-8,-7,3,2,2,-8]],[4240220,"c6842f9000000000",[-8]],[4240240,"66c7846fe8010000ffff66c784afe80300000100",[-10,-10]],[4240275,"4c8987e0010000488997d8010000",[-7,-7]],[4240301,"4889879001000048898798010000488987a0010000",[-7,-7,-7]],[4240329,"488987a8010000488987b0010000488987b8010000",[-7,-7,-7]],[4240357,"488987c0010000488987c8010000488987d0010000",[-7,-7,-7]],[4240396,"48898780000000",[-7]],[4483835,"49893385c9",[-3,2]],[4483872,"48891e4889de",[-3,3]],[4483910,"4889304c8b36",[-3,3]],[4483971,"48c70600000000",[-7]],[4559675,"49893385c9",[-3,2]],[4559712,"48891e4889de",[-3,3]],[4559750,"4889304c8b36",[-3,3]],[4559811,"48c70600000000",[-7]],[5205924,"49894cd428",[-5]],[5205949,"488954f128",[-5]],[5205965,"894e0839fa",[-3,2]],[5205990,"48897c02f8488b4c0a0848890c02",[-5,5,-4]],[5206013,"897e084439cf",[-3,3]],[5206048,"48893c29488b5411084889542908",[-4,5,-5]],[5946509,"4889014d8930",[-3,-3]],[6673920,"c70200000000",[-6]],[6673967,"66c787ec0000000000",[-9]],[6674072,"66428934026689afe00000008b97d000000089ce29d6c1ee056689b7ec000000c7410c0000003f",[-5,-7,6,2,2,3,-7,-7]],[6674174,"89510c410fb7510c488bb7d000000089cd29f5c1ed0548c1e2054c8d0416668b54161e66413b550c0f94c20fb6d26641896c501c418b550c66448b87e00000000fb7f2488bafd00000004889f248c1e2056644894415006689b7e0000000",[-3,5,7,2,2,3,4,4,5,5,3,3,-6,4,8,3,7,3,4,-6,-7]],[6674478,"6642890c3a664489b7e0000000ff8fe40000008b8f38010000ffc9898f38010000",[-5,-8,-6,6,2,-6]],[6674534,"4889341a488b4c0a0848894c1a08",[-4,5,-5]],[6674569,"6644895c0a1e4181cb00000080498b09448919",[-6,7,3,-3]],[6681849,"66c745000000",[-6]],[6681943,"6689140e66458944dd10418b0e89c229cac1ea0566895500c7400c0000003f",[-4,-6,3,2,2,3,-4,-7]],[6682013,"89480c0fb74f0c498b1689c629d6c1ee0548c1e105488d3c0a668b4c0a1e66413b4c240c0f94c10fb6c96689744f1c418b4c240c4d8d64dd1066418b54dd100fb7c9498b364889cf48c1e7056689143e6641894cdd10",[-3,4,3,2,2,3,4,4,5,6,3,3,-5,5,5,6,3,3,3,4,-4,-6]],[6682280,"66428904396645891c2441ff4cdd14488b4424f84ac704080000000042c744080800000000",[-5,-5,-5,5,-8,-9]],[6754962,"c70100000000",[-6]],[6755018,"c787ec00000000000000",[-10]],[6755127,"8934118987e00000004c2b8fd000000049c1e9044169c1abaaaaaa8987ec000000c744292000000000",[-3,-6,7,4,7,-6,-8]],[6755207,"89742920488bb7d00000004929f149c1e9044569c9abaaaaaa8b12488d145248c1e204488d1c168b5416283b100f94c20fb6d244894c93244863008b97e0000000488bb7d0000000488d1c4048c1e30489141e8987e0000000",[-4,7,3,4,7,2,4,4,4,4,2,3,3,-5,3,6,7,4,4,-3,-6]],[6755485,"428904394489a7e0000000ff8fe40000008b8738010000ffc8898738010000",[-4,-7,-6,6,2,-6]],[6755538,"4a891431488b4401084a89443108",[-4,5,-5]],[6755580,"44895c01284181c800000080498b01448900",[-5,7,3,-3]],[6762656,"41c70000000000",[-7]],[6762767,"893c13458954c110492b3648c1ee0469d6abaaaaaa418910c7442b2000000000",[-3,-5,3,4,6,-3,-8]],[6762839,"4489642b20498b3e4829fe48c1ee044469e6abaaaaaa418b30488d347648c1e6044c8d04378b743728413b320f94c20fb6d245896490244963124d8d64c110458b44c110498b3e488d345248c1e60444890437418954c110",[-5,3,3,4,7,3,4,4,4,4,3,3,3,-5,3,5,5,3,4,4,-4,-5]],[6763095,"4289143e45892c2441ff4cc114488b4424f84ac704180000000042c744180800000000",[-4,-4,-5,5,-8,-9]],[7076760,"41c701eeff7f7f",[-7]],[7160982,"894d004883c504",[-3,4]],[7188414,"44880689caffc239c20f94c20fb6d2448d4c0a01468a540ce8448856018d4c0a0239c10f94c10fb6c9428d4c09014863c9448a4c0ce844884e0269d00404040481c200010203c5f96ec2c5f970c000c5f96f0fc4e27100c0c5f1efc9c5f82ec118d288c1c0e1074408c1880ec0e00624804408d0884601c0e2074408ca885602",[-3,2,2,2,3,3,5,5,-4,4,2,3,3,5,3,5,-4,6,6,4,5,4,5,4,4,2,2,3,3,-2,3,2,3,-3,3,3,-3]],[7188600,"8906c5f96f0f",[-2,4]],[7189311,"890ec4c1585cc0",[-2,5]],[7189592,"44880689d7c1e70409cf40887e01c1ea048856024489c9c1e90844884e03c1e0044180e240410fb6d209c809d0884604",[-3,2,3,2,-4,3,-3,3,3,-4,3,4,4,2,2,-3]],[7189872,"66893e83e002c1e00e09d06689460266894e04",[-3,3,3,2,-4,-4]],[8250810,"6641897a18664189721a664189521c6641894a1e41c7421000000000",[-5,-5,-5,-5,-8]],[8454026,"c747080100ffff",[-7]],[8454044,"48890f4805d8000000488947104889771848895720",[-3,6,-4,-4,-4]],[8454916,"81fac00000000f9407",[6,-3]],[8454954,"668378fe010f9407",[5,-3]],[8455001,"c6070031c0",[-3,2]],[8590929,"c7070000003fc74704cdcccc3dc747080ad7233cc7470c17b7d138c5fa115f10c5fa114f14c5d9dfcac5f85dc5c5f172f11dc5f857c1c747180ad7a33cc7471c0ad7233cc747200ad7233cc5fa114724c5fa115f28c7472c205cc23fc74730acc52737c6473400",[-6,-7,-7,-7,5,5,4,4,5,4,-7,-7,-7,5,5,-7,-7,-4]],[8675913,"885f640fb6c3",[-3,3]],[8864244,"418909488b0e8b4c810441894904488b0e8b4c810841894908488b5424d0488b0a8b0c8141890b488b0a8b4c810441894b04488b0a8b4c810841894b08",[-3,3,4,-4,3,4,-4,5,3,3,-3,3,4,-4,3,4,-4]],[8864335,"890f4883c704",[-2,4]],[8864374,"890f4883c704",[-2,4]],[8864451,"458904a94531c0",[-4,3]],[8864509,"895608488b4424d0895008",[-3,5,-3]],[8864546,"01c841894008",[2,-4]],[8864578,"01c841894108",[2,-4]],[9066258,"66896cb8104a8b6c9a0848896cb8084a8b2c9a48892cb866428b6c9a1266896cb812",[-5,5,-5,4,-4,6,-5]],[9066307,"428b7c9a14893b",[5,-2]],[9066498,"42892ca349ffc4",[-4,3]],[9149205,"41c70300000000",[-7]],[9150122,"458913b001",[-3,2]],[11435941,"6641c7412c0000",[-7]],[11436044,"664289043b6641896920418b41104489c129c1c1e905664189492c41c7400c0000003f",[-5,-5,4,3,2,3,-5,-8]],[11436141,"4189400c410fb744240c498b49104489c329cbc1eb0548c1e005488d2c01668b44011e66413b460c0f94c00fb6c066895c451c418b460c66418b49200fb7e8498b59104889e848c1e00566890c036641896920",[-4,6,4,3,2,3,4,4,5,5,3,3,-5,4,5,3,4,3,4,-4,-5]],[11436425,"6642890411664189512041ff4924c7460cffffff3f",[-5,-5,-4,-7]],[11751432,"42896c3f14c1e60a09c109f141c1e0054409c142894c3714",[-5,3,2,2,4,3,-5]],[11798967,"44890497440b5c24f48d148d010000004863d2488b3b44891c974409d08d148d020000004863d2488b3b89049709f58d048d030000004898488b0b892c81",[-4,5,7,3,3,-4,3,7,3,3,-3,2,7,2,3,-3]],[12015853,"4288442f0c",[-5]],[12016445,"4488570a44884f0b",[-4,-4]],[12016479,"66c747080000c6470d00c6470c00",[-6,-4,-4]],[12016666,"884f0c66c747080000",[-3,-6]],[12908279,"8932d3e309d8",[-2,2,2]],[12986607,"09d842890436",[2,-4]],[12987438,"42893c164401d8",[-4,3]],[13944443,"4889475048635720",[-4,4]],[13944491,"488948ce480fbe68fe",[-4,5]],[13944531,"4c8968ee488d2c09",[-4,4]],[13944544,"4c8968e6480fbe68ff",[-4,5]],[13944570,"4c8968d64a8d5c29034883e3fc488958de",[-4,5,4,-4]],[13944630,"4c896f404c6357184c895424c04b8d44d500498d5402034883e2fc4531db48894738",[-4,4,5,5,5,4,3,-4]],[13944704,"4b8954dd00488d6a434883e5fc488b4424f04c8b68404f8b64dd0049896c2408",[-5,4,4,5,4,5,-5]],[13945021,"4d89342485db",[-4,2]],[13945344,"4d8934244883ca03",[-4,4]],[13945363,"4d897424108d48024863c94883ca03488d144a4883e2fc4989542418488d4c11034883e1fc49894c24284898488d4c08034883e1fc49894c2420",[-5,3,3,4,4,4,-5,5,4,-5,2,5,4,-5]],[13945447,"488950484863481c",[-4,4]],[13945488,"488902480fbe6a24488d4428034883e0fc48894208",[-3,5,5,4,-4]],[13945523,"4889473048635714",[-4,4]],[13945577,"4889084883c903",[-3,4]],[13945602,"488948e84801f1",[-4,3]],[13945613,"488948f0488d4c5903",[-4,5]],[13945636,"48894f2831c0",[-4,2]],[13952349,"0f44f8897e08",[3,-3]],[13952367,"894604450fb75c100141ffcb44891e",[-3,6,3,-3]],[13952511,"89561044896608897e04",[-3,-4,-3]],[13952592,"894e0c41ffc344891e410882d4020000",[-3,3,-3,-7]],[13952621,"4489660cc6461401",[-4,-4]],[13952640,"410fbe040089460c",[5,-3]],[13952813,"018634030000",[-6]],[13952828,"4489b6300300004b8d0476488b4c24c00fb7440101ffc8894424f889862c030000",[-7,4,5,5,2,4,-6]],[13953136,"89863c0300004489ae3403000044898e30030000",[-6,-7,-7]],[13953489,"44899e38030000",[-7]],[13953508,"808ed402000001",[-7]],[13953524,"898638030000ff862c030000",[-6,-6]],[13953686,"44899e38030000c6864003000001",[-7,-7]],[13953737,"89be38030000c6864003000001",[-6,-7]],[13953894,"89be38030000",[-6]],[13953921,"898638030000",[-6]],[13953964,"89be38030000",[-6]],[14107802,"894604488b5424f0410fb73c50893e",[-3,5,5,-2]],[14107931,"89561044897e088d4301894604",[-3,-4,3,-3]],[14107984,"44037e1044897e08",[4,-4]],[14107996,"44897e0cffc7893e",[-4,2,-2]],[14108004,"450893d4020000",[-7]],[14108024,"44897e0cc6461401",[-4,-4]],[14165658,"c787240100000000803f48c787280100000000000066c787200100000000",[-10,-11,-9]],[14166080,"c704ab00000000c704ae00000000c704a900000000",[-7,-7,-7]],[14166121,"66c787220100000000",[-9]],[14173076,"66898720010000",[-7]],[14244481,"41c744240800000000",[-9]],[14244709,"89074883c504",[-2,4]],[14245553,"41c7430800000000",[-8]],[14245781,"89074883c504",[-2,4]],[14448392,"48890141ffc3",[-3,3]],[14448982,"4889014883c708",[-3,4]],[14752224,"66892f4c01f7",[-3,3]],[14752448,"6644890f4883c204",[-4,4]],[14752672,"6689174983c404",[-3,4]],[14752832,"6689374801ef",[-3,3]],[14798507,"8901488b5424a0",[-2,5]],[14798549,"c70202000000",[-6]],[14798562,"c70201000000",[-6]],[14798570,"c70200000000",[-6]],[14798587,"89078d0c40",[-2,3]],[14829735,"4429571c448b7c24e84529d744897f20c7473800000000",[-4,5,3,-4,-7]],[14830054,"44897f2001471c",[-4,-3]],[14830095,"44897f2044015f1c",[-4,-4]],[14830143,"488974d500",[-5]],[14830155,"488b4710488903",[4,-3]],[14998862,"48890a48c70001000000",[-3,-7]],[14998910,"48890a48c70001000000",[-3,-7]],[14998958,"48890a48c70001000000",[-3,-7]],[15002734,"48890a48c70001000000",[-3,-7]],[15002782,"48890a48c70001000000",[-3,-7]],[15002830,"48890a48c70001000000",[-3,-7]],[15011967,"c7471c00000000",[-7]],[15012108,"448903c1e918",[-3,3]],[15012153,"66890243894cd90c",[-3,-5]],[15012171,"4489571c49ffc6",[-4,3]],[15360414,"48890a48c70001000000",[-3,-7]],[15360462,"48890a48c70001000000",[-3,-7]],[15360510,"48890a48c70001000000",[-3,-7]],[17331523,"668907896f04895f0883e60fc1e60681e1000000034d85c94c894f1044885f1944887f1ab8000000030f44c109f066c74702000089470c",[-3,-3,-3,3,3,6,3,-4,-4,-4,5,3,2,-6,-3]],[17332990,"892c878b0289049f8b4604c1e01005000001002500007f000dff0380be418d6801428d1c850000000089041f8b4204418d58028904af8b4604c1e01005000002002500007f000dff0380be418d680389049f8b4208418d58048904af8b4604c1e01005000003002500007f000dff0380be418d680589049f8b420c8904af",[-3,2,-3,3,3,5,5,5,4,8,-3,3,4,-3,3,3,5,5,5,4,-3,3,4,-3,3,3,5,5,5,4,-3,3,-3]],[17333286,"892cb783c20289049f",[-3,3,-3]],[17333350,"c7049700008cbf4183c002c7048f002080be8b4e3085c90f45c142890487",[-7,4,-7,3,2,3,-4]],[17374157,"48c70700000000",[-7]],[17374361,"4489571444894f184489671c4489472044897f24",[-4,-4,-4,-4,-4]],[17374576,"6689440f284488440f2a",[-5,-5]],[17374629,"8901478a1477400fb6cd460fb664860389c841f6f24183e401468d24a5040000004b8d1c4948c1e3044489641f44ba0100000048d3e241feca4120ea44896c1f40450fb6ca4889541f28",[-2,4,4,6,2,3,4,8,4,4,-5,5,3,3,3,-5,4,-5]],[17374720,"89441f3089e8",[-4,2]],[17374743,"89441f34430fb6447701b90f0000004429c9440fafc844894c1f38ba01000000d3e289541f3c896c1f4c",[-4,6,5,3,4,-5,5,2,-4,-4]],[17374792,"428b0cf1894c1f48",[4,-4]],[17374811,"894c1f500fafc589441f54",[-4,3,-4]],[17374891,"44092a89c988440d00",[-3,2,-4]],[17374927,"8911488d4c6d0048c1e10488440f2a",[-2,5,4,-4]],[17374954,"6689440f28",[-5]],[17544244,"c70000000000",[-6]],[17544566,"890e428b4c228c894e04",[-2,5,-3]],[17544599,"488b4c2438ff01",[5,-2]],[17544628,"890e428b4c22ac894e04",[-2,5,-3]],[17544649,"ff010f1f440000",[-2,5]],[17544678,"890e428b4c22cc894e04",[-2,5,-3]],[17544699,"ff010f1f00",[-2,3]],[17544753,"890e428b4c22ec894e04",[-2,5,-3]],[17544784,"ff0166666666662e0f1f840000000000",[-2,14]],[17545097,"89088b4a0c894804",[-2,3,-3]],[17545127,"488b4c2438ff01",[5,-2]],[17545162,"89088b4a0c894804",[-2,3,-3]],[17545176,"488b4c2438ff0190",[5,-2,1]],[17545212,"89088b4a0c894804",[-2,3,-3]],[17545231,"ff016666666666662e0f1f840000000000",[-2,15]],[17545299,"89088b4a0c894804",[-2,3,-3]],[17545328,"ff0066666666662e0f1f840000000000",[-2,14]],[17546944,"41c70000000000",[-7]],[17547221,"8908428b4c278c894804",[-2,5,-3]],[17547270,"488b4c24e8ff01",[5,-2]],[17547299,"8908428b4c27ac894804",[-2,5,-3]],[17547320,"ff01660f1f440000",[-2,6]],[17547350,"8908428b4c27cc894804",[-2,5,-3]],[17547371,"ff010f1f00",[-2,3]],[17547398,"8908428b4c27ec894804",[-2,5,-3]],[17547419,"ff010f1f00",[-2,3]],[17739891,"48c740ec0000803f",[-8]],[17742067,"b9000080bf488948fc",[5,-4]],[18389510,"41896cc304",[-5]],[18389547,"438b6cc304896cc204",[5,-4]],[18389576,"66895cc202",[-5]],[18389770,"6644892cc16644896cc102",[-5,-6]],[18406684,"890a488b4c24f88901",[-2,5,-2]],[18407632,"45892cb64439de",[-4,3]],[18408046,"478904964539e2",[-4,3]],[18602273,"2971284139f1",[-3,3]],[18602281,"41c7070000000066c7441004ffff66c7441002ffff6641c706ffff66c744100e000048c744100600000000",[-7,-7,-7,-6,-7,-9]],[18602739,"0fb700458927",[3,-3]],[18602865,"66c7442910ffff66c7442914ff7f66c7442912ff7f66c744291c0000c744291800000000",[-7,-7,-7,-7,-8]],[18603098,"66448910488b442410668938488b442408668910488b4424b066448920488b442428668918488b442420668908488b442418668930488b4424a866448928",[-4,5,-3,5,-3,5,-4,5,-3,5,-3,5,-3,5,-4]],[18885146,"448997a0000000",[-7]],[18885639,"898fa40000008b8e880000008b96980000004101cfc1e204c1e10401c101d189ca29c28997a8000000",[-6,6,6,3,3,3,2,2,2,2,-6]],[18885735,"c74774ffff0000c5fa1147784489bf840000008b96a8000000899788000000898f8c000000c5f857c0c5fa2ac1c5fa2ac8c5fa5ec1c5fa11879000000044898f94000000",[-7,5,-7,6,-6,-6,4,4,4,4,8,-7]],[18958500,"4889461048c7041a00000000ff0e",[-4,-8,-2]],[18958552,"4889561048c704e800000000ff0e",[-4,-8,-2]],[18959208,"4889441d00",[-5]],[18959243,"488944f500ff02",[-5,-2]],[18959382,"48894268c57a115270",[-4,5]],[18959492,"48c7041600000000",[-8]],[18959510,"48c7401000000000c70000000000",[-8,-6]],[18991407,"488902488b6e0848896a0848c7421000000000bbffffffff48895a18",[-3,4,-4,-8,5,-4]],[18992062,"48891ac5f82818",[-3,4]],[18992462,"48895a08c4c1782818",[-4,5]],[21419066,"89690449c70000000000",[-3,-7]],[21419088,"488946104c8b56204c0356184c39d04889d8490f47c148894628",[-4,4,4,3,3,4,-4]],[21419119,"66c700000066c740020000c7400400000000",[-5,-6,-7]],[21419193,"4489084883c3054883e3fc488d4b024c39d1490f47d866892b488d69024c39d54889c8490f47c066448930488d41034c39d0490f47e844887d00488d69044c39d5490f47c04488204883c1054c39d148894e10490f47e844886d00488b4e104883c1034883e1fc488d410448894610488b6e2048036e184839e8490f47c84531c98911",[-3,4,4,4,3,4,-3,4,3,3,4,-4,4,3,4,-4,4,3,4,-3,4,3,-4,4,-4,4,4,4,4,-4,4,4,3,4,3,-2]],[21419348,"89410449c70000000000",[-3,-7]],[21419401,"89790449c70000000000",[-3,-7]],[21419423,"48894e10488b7e2048037e1831d24839f9480f46d048895628",[-4,4,4,2,3,4,-4]],[21419453,"66c702ffff66c742020000c74204000000008d420829c1894a0449c70000000000",[-5,-6,-7,3,2,-3,-7]],[23062804,"43890cbe428934a0",[-4,-4]],[24003445,"4489049f44892c90",[-4,-4]],[25052075,"488b5c24f048890b",[5,-3]],[25052311,"488b4c24d08911",[5,-2]],[25052360,"450f47e5448921",[4,-3]],[25052418,"890ac5f057cbc5fa2ad0c5f25ccac5fa2cc1488b4c24388901",[-2,4,4,4,4,5,-2]],[25132816,"4489388b16895004",[-3,2,-3]],[25896964,"80670dbfc74708ffffffff",[-4,-7]],[27317407,"c7471c00000000c7472800000000c7473000000000",[-7,-7,-7]],[31357660,"c680dc00000001",[-7]],[31357708,"88465048ffc2",[-3,3]],[31358509,"448820c4e37914c50141886c3626c4e1f97edec4e37914c50241886c1e26",[-3,6,-5,5,6,-5]],[31358575,"41887c2e26c4e1f97edfc4e37914c50441886c0e26",[-5,5,6,-5]],[31358632,"41884c2e26c4c1f97eddc4e37914c50641886c0626",[-5,5,6,-5]],[31358689,"45885c2e26c4c1f97edbc4e37914c0084188441626",[-5,5,6,-5]],[31358756,"4588541626c4c1f97edac4e37914c30a41885c2e26",[-5,5,6,-5]],[31358823,"45884c1e26c4e1f97edbc4e37914c10c41884c1626",[-5,5,6,-5]],[31358890,"41884c1626c5f9d65c24e0c4e37914c20e4188543626",[-5,6,6,-5]],[31358953,"41884c3626c4c1f97edfc4e37d19c001c4e37914c6004188743e26",[-5,5,6,6,-5]],[31359017,"4188543e26c4c1f97edcc4e37914c70241887c0e26c4c3f916dd014b8d3c4048c1e7044b8d145b48c1e204488d044048c1e0044b8d0c5248c1e104488d6c6d0048c1e504488d1c5b48c1e304c4e37914c6034188743e26c4e37914c6044188741626c4e37914c2054188540626c4e37914c0064188440e26c4e37914c0074188442e26c4e37914c0084188441e26c4c37914c009c4e37914c10ac4e37914c20bc4e37914c60cc4e37914c70dc4e37914c50ec4e37914c30f488b4424e8488d044048c1e0044588440626488b4424e0488d044048c1e00441884c0626488b4424d8488d044048c1e0044188540626488b5424f0488b4c24c04b8d047f48c1e00441887406264b8d044948c1e00441887c06264b8d046448c1e00441886c06264b8d446d0048c1e00441885c0626",[-5,5,6,-5,6,4,4,4,4,4,4,4,4,5,4,4,4,6,-5,6,-5,6,-5,6,-5,6,-5,6,-5,6,6,6,6,6,6,6,5,4,4,-5,5,4,4,-5,5,4,4,-5,5,5,4,4,-5,4,4,-5,4,4,-5,5,4,-5]],[31359398,"8811ffc04883c130",[-2,2,4]],[33729484,"4489560489c1c1f91fc1e91d01c1c1f9034429d2bf0200000029c701cf39fa0f4dfaf7d139cf0f4ecf4401d18d14014489cf29c74439ca0f4ef985ff410f48f8897e08",[-4,2,3,3,2,3,3,5,2,2,2,3,2,2,3,3,3,3,2,3,3,2,4,-3]],[33729552,"48c7460400000000",[-8]],[34656568,"49890948c70600000000498932",[-3,-7,-3]],[34656612,"44885a0a8a4e09",[-4,3]],[34656619,"80e1fd884e09",[3,-3]],[34656656,"48890a488b4c24f8488b572048894a28",[-3,5,4,-4]],[35755701,"48895c3d008b5c0e0c895c3d0c8b4c0e08894c3d08418b4c2404894c3d14418b0c24894c3d10418b4b04894c3d1c418b0b894c3d18418b4a04894c3d24418b0a894c3d20498b0948894c3d28",[-5,4,-4,4,-4,5,-4,4,-4,4,-4,3,-4,4,-4,3,-4,3,-5]],[35756094,"4589440b04",[-5]],[35756215,"898190000000",[-6]],[35969198,"488981a80600008b91f006000083fa05be050000000f42f289b1f00600008b91f406000083fa06be060000000f47f289b1f40600004c8b41084981487800002000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-8]],[35969317,"4883c044f0480938",[4,-4]],[35969335,"49898070c10000",[-7]],[35969343,"4889b1a80600008b81f006000083f805ba050000000f42d08991f00600008b81f406000083f806ba060000000f47d08991f40600004c8b41084981487800002000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-8]],[35969461,"4883c644f048093e",[4,-4]],[35969479,"49898070c10000",[-7]],[35969500,"4889b0b00600008b88f006000083f906ba060000000f42d18990f00600008b88f406000083f907ba070000000f47d18990f40600004c8b40084981487800004000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-8]],[35969621,"4883c644f048093e",[4,-4]],[35969639,"49898078c10000",[-7]],[35969665,"4989b1a8060000418b89f006000083f905ba050000000f42d1418991f0060000418b89f406000083f906ba060000000f47d1418991f40600004d8b41084981487800002000",[-7,7,3,5,3,-7,7,3,5,3,-7,4,-8]],[35969797,"4883c644f0480916",[4,-4]],[35969815,"49898070c10000488b4c24f0498989e0060000418b81f006000083f80cba0c0000000f42d0418991f0060000418b81f406000083f80dba0d0000000f47d0418991f40600004d8b41084981487800000010",[-7,5,-7,7,3,5,3,-7,7,3,5,3,-7,4,-8]],[35969957,"4883c144f0480939",[4,-4]],[35969975,"498980a8c10000",[-7]],[35970001,"4989b1b0060000418b89f006000083f906ba060000000f42d1418991f0060000418b89f406000083f907ba070000000f47d1418991f40600004d8b41084981487800004000",[-7,7,3,5,3,-7,7,3,5,3,-7,4,-8]],[35970133,"4883c644f0480916",[4,-4]],[35970151,"49898078c10000488b4c24f0498989e8060000418b81f006000083f80dba0d0000000f42d0418991f0060000418b81f406000083f80eba0e0000000f47d0418991f40600004d8b41084981487800000020",[-7,5,-7,7,3,5,3,-7,7,3,5,3,-7,4,-8]],[35970293,"4883c144f0480939",[4,-4]],[35970311,"498980b0c10000",[-7]],[36508816,"895cd7308d1c18895cd7348944d7388b4424f08944d73c448944d74044885cd744",[-4,3,-4,-4,4,-4,-5,-5]],[36508890,"894cc7308974c734448944c738418b4b18894cc73c418b4b1c894cc740418a4b20884cc744",[-4,-4,-5,4,-4,4,-4,4,-4]],[36508994,"8954cf308974cf348944cf38418b43188944cf3c418b431c8944cf40418a43208844cf44",[-4,-4,-4,4,-4,4,-4,4,-4]],[36509082,"8954c73044894cc7344129d144894cc738",[-4,-5,3,-5]],[36509108,"8954c73c418b561c8954c740",[-4,4,-4]],[36509136,"488954c73c",[-5]],[36509143,"8854c744ffc189c82b8730060000898f30060000",[-4,2,2,6,-6]],[36756548,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4720488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36756672,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36756932,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4740488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36757056,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36757316,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4730488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36757440,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36757700,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4748488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36757824,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36758084,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4750488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36758208,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36758468,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4758488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36758592,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b401848898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,4,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36758852,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4760488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36758976,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b400848898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,4,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36759236,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b8780000000488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,7,-7,4,-7]],[36759363,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36759620,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b8788000000488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,7,-7,4,-7]],[36759747,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36760004,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b8790000000488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,7,-7,4,-7]],[36760131,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36760388,"48898680070000488b4e08488981b8c1000048c786500d000000000000488b460848c780a0d0000000000000488b8798000000488986680a0000488b4e0848898198d50000",[-7,4,-7,-11,4,-11,7,-7,4,-7]],[36760519,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b80f801000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[36760772,"48898680070000488b4e08488981b8c10000488b4710488986500d0000488b4e08488981a0d00000488b4778488986680a0000488b4e0848898198d50000",[-7,4,-7,4,-7,4,-7,4,-7,4,-7]],[36760896,"48898e280a00008bbe600a000083ff07b8070000000f42c78986600a00008b86640a000083f80abf0a0000000f47f889be640a0000488b46084881887819000080030000c5f9d680e0d00000488990e8d00000488988f0d00000498b00488b8050020000488b0048898680040000c5f857c0c5f8118688040000c78698040000ffffffff488b4e0848898100bc0000c5f8118198bc0000c781b0bc0000ffffffff498b00488b8050020000488b801802000048898658020000488b4e0848898170b90000498b00488b8050020000488b80d801000048898610020000c686180200000048898108bc0000c681b4bc000000",[-7,6,3,5,3,-6,6,3,5,3,-6,4,-11,8,-7,-7,3,7,3,-7,4,8,-10,4,-7,8,-10,3,7,7,-7,4,-7,3,7,7,-7,-7,-7,-7]],[37320542,"c7070000803f48c7470400000000c5fa11570cc7471000000000c747140000803fc7471800000000c5fa11471c48c7472000000000c747280000803f",[-6,-8,5,-7,-7,-7,5,-8,-7]],[39433236,"88572c418b02",[-3,3]],[39433435,"88572c418b01",[-3,3]],[39433634,"88572c418b02",[-3,3]],[39434201,"88572c80f201",[-3,3]],[39910781,"49891048890ec746080100ffff48890748c747100000000048c7471800000000c7472000000000",[-3,-3,-7,-3,-8,-8,-7]],[39983191,"89b7a0000000",[-6]],[39984420,"884bfe8a4c03ff884bff8a0c03880b",[-3,4,-3,3,-2]],[39984485,"4288443604",[-5]],[39984513,"4288443605",[-5]],[39984995,"880b48ffc3",[-2,3]],[39985285,"880e48ffc6",[-2,3]],[39985533,"880b48ffc3",[-2,3]],[39985635,"884efe8a4bff884eff8a0b880e",[-3,3,-3,2,-2]],[39985691,"41884e0183f802",[-4,3]],[39985704,"418846024983c602",[-4,4]],[39985895,"41884d0049ffc5",[-4,3]],[39986096,"41884e0149ffc6",[-4,3]],[39986123,"c7000b000000",[-6]],[39986138,"48894730488b442448c7001b000000",[-4,5,-6]],[39986203,"48890f488977184c39da4929d34183c30544895f084d39ce4d29f14181c10101000044894f20488b4c24484889414844894150",[-3,-4,3,3,4,-4,3,3,7,-4,5,-4,-4]],[39986276,"48894f30488b4c2448c7011b000000",[-4,5,-6]],[39986311,"48894730488b442448c7001b000000",[-4,5,-6]],[41289299,"83c640408830",[3,-3]],[41289306,"8b4c24fc894801",[4,-3]],[41289425,"488b4c24f848894801",[5,-4]],[41289537,"8b4c24fc894801",[4,-3]],[42063698,"c5fa114f0cc6471001",[5,-4]],[42234798,"881688760189d1c1e910884e02c1ea188856034c89ca88560488760589d1c1e910884e06c1ea18885607885e08887e0989d9c1e910884e0ac1eb18885e0b88460c88660d89c1c1e910884e0ec1e81888460f",[-2,-3,2,3,-3,3,-3,3,-3,-3,2,3,-3,3,-3,-3,-3,2,3,-3,3,-3,-3,-3,2,3,-3,3,-3]],[42238549,"881a887a0189d8c1e810884202c1eb18885a034889f3885a04887a0589d8c1e810884206c1eb18885a074889eb885a08887a0989d8c1e81088420ac1eb18885a0b884a0c886a0d89c8c1e81088420ec1e918884a0f",[-2,-3,2,3,-3,3,-3,3,-3,-3,2,3,-3,3,-3,3,-3,-3,2,3,-3,3,-3,-3,-3,2,3,-3,3,-3]],[42242443,"4189360fb64707c1e0180fb65706c1e21009c20fb64705c1e00809d00fb66f0409c541896e040fb6470bc1e0180fb64f0ac1e11009c10fb64709c1e00809c8440fb65f084109c345895e08",[-3,4,3,4,3,2,4,3,2,4,2,-4,4,3,4,3,2,4,3,2,5,3,-4]],[42243253,"4189460c31c84889c6c1e9184133948f000c0000895424dc89f1c1e8080fb6c0c1e9100fb6c9418b9489000400004133148189f0c1e8184133948100080000400fb6c641339481000c0000413352100fb6c289d1c1e9080fb6c9458ba48f000400004533248789d0c1e8100fb6c04533a487000800004131d5c1ea184533a497000c00004489e84489eac1e8080fb6c0c1ea100fb6d2418b8c910004000041330c814489e8c1e81841338c8100080000410fb6c541338c81000c000041334a140fb6c189cac1ea080fb6d2458b9c970004000045331c8789c8c1e8100fb6c045339c87000800004131c8c1e91845339c8f000c00004489c04489c1c1e8080fb6c0c1e9100fb6c9418b948900040000413314814489c0c1e8184133948100080000410fb6c041339481000c0000413352180fb6c289d1c1e9080fb6c9418bbc8f0004000041333c8789d0c1e8100fb6c04133bc870008000031d548896c24f8c1ea184133bc97000c000089e889eac1e8080fb6c0c1ea100fb6d2418b8c910004000041330c8189e8c1e81841338c8100080000400fb6c541338c81000c000041334a1c0fb6c189cac1ea080fb6d2418bac970004000041332c8789c8c1e8100fb6c04133ac870008000031ce48897424d0c1e9184133ac8f000c000089f089f1c1e8080fb6c0c1e9100fb6c9418b9489000400004133148189f0c1e8184133948100080000400fb6c641339481000c0000413352200fb6c289d1c1e9080fb6c9418b8c8f0004000041330c8789d0c1e8100fb6c041338c87000800004131d5c1ea1841338c97000c00004489e8c1e8080fb6c0453304814489e8c1e8100fb6c045338481000400004489e8c1e8184533848100080000410fb6c545338481000c00008b4424f4418946108b5424f041895614448b4c24e845894e18448b7c24ec45897e1c8b7424e04133761089f04189762031d04189d2418946244431c889c2418946284431fa4589f94189562c31de4431d389da4189763041895e3431c2418956388b5424dc31f289de4189d74431ce4189763c418956404131df45897e4431d04189464831c64189764c4431e389de4431e24189565041895e5431c6418976584531cc4589665c4131d345895e604489da31da418956644431d84189466889c24431e24189566c4131fb45895e7031df41897e7489fa31c24189567889fa4431e24189567c4431dd4189ae8000000089ee31fe4189b68400000031e84189868800000031c24189968c00000031cd4189ae9000000031cf4189be9400000031c74189be980000004431e141898e9c000000",[-4,2,3,3,8,4,2,3,3,3,3,8,4,2,3,8,4,8,4,3,2,3,3,8,4,2,3,3,8,3,3,8,3,3,3,3,3,3,8,4,3,3,8,4,8,4,3,2,3,3,8,4,2,3,3,8,3,3,8,3,3,3,3,3,3,8,4,3,3,8,4,8,4,3,2,3,3,8,4,2,3,3,8,2,5,3,8,2,2,3,3,3,3,8,4,2,3,8,4,8,4,3,2,3,3,8,4,2,3,3,8,2,5,3,8,2,2,3,3,3,3,8,4,2,3,8,4,8,4,3,2,3,3,8,4,2,3,3,8,3,3,8,3,3,3,4,3,3,3,8,3,3,8,4,8,4,-4,4,-4,5,-4,5,-4,4,4,2,-4,2,3,-4,3,2,-4,3,3,-4,2,3,2,-4,-4,2,-4,4,2,2,3,3,-4,-4,3,-4,2,-4,2,-4,3,2,3,-4,-4,2,-4,3,-4,3,-4,3,2,-4,3,-4,2,3,-4,3,-4,2,-4,2,2,-4,2,3,-4,3,-7,2,2,-7,2,-7,2,-7,2,-7,2,-7,2,-7,3,-7]],[42244229,"418986a00000004431c141898ea40000004589aea8000000458986ac00000041c786f00000000a000000",[-7,3,-7,-7,-7,-11]],[42244333,"4589130fb64707c1e0180fb65706c1e21009c20fb64705c1e00809d00fb64f0409c1894c24f041894b044189cc0fb6470bc1e0180fb6570ac1e21009c20fb64709c1e00809d0440fb647084109c0458943080fb6470fc1e0180fb6570ec1e21009c20fb6470dc1e00809d00fb64f0c09c141894b0c",[-3,4,3,4,3,2,4,3,2,4,2,4,-4,3,4,3,4,3,2,4,3,2,5,3,-4,4,3,4,3,2,4,3,2,4,2,-4]],[42244532,"418953100fb64717",[-4,4]],[42245857,"418943148b4424e8418943188b4424e44189431c8b4424e0418943208b6c24dc41896b24448b6424d8458963288b4c24d441894b2c8b5424d04133531841895330458b731c89d089d74431f0418943344133432089c24189433831ea4189533c4431e24189d4418953404131cc45896344448b6424cc4431e74531f44589e641897b484589634c4131c6458973504589e64131ee4489f64589735431d6418973584131fd4489ee4431f141894b5c45896b604431e6418973644431e8418943684131c64589736c4189c64131d64489f64589737031ce418973744131dc4489e64131dd45896b784589637c31c64189b38000000031eb41899b840000004131de4589b3880000004531e94189de4489ce4131ce4589b38c00000045898b900000004431e64189b3940000004431c889c64189839800000031de4189b39c0000004431ca418993a00000004131d64589b3a40000004531c145898ba80000004531e0458983ac0000004431c0418983b00000004431c341899bb400000031d341899bb80000004131c8458983bc000000",[-4,4,-4,4,-4,4,-4,4,-4,5,-4,4,-4,4,4,-4,4,2,2,3,-4,4,2,-4,2,-4,3,3,-4,3,-4,5,3,3,3,-4,-4,3,-4,3,3,3,-4,2,-4,3,3,3,-4,-4,3,-4,3,-4,3,-4,3,3,3,-4,2,-4,3,3,3,-4,-4,2,-7,2,-7,3,-7,3,3,3,3,-7,-7,3,-7,3,2,-7,2,-7,3,-7,3,-7,3,-7,3,-7,3,-7,3,-7,2,-7,3,-7]],[42246275,"418983c00000004531fa458993c4000000488b4424f84131c2458993c8000000488b4424c04131c74589bbcc00000041c783f00000000c000000",[-7,3,-7,5,3,-7,5,3,-7,-11]],[42246394,"44890e0fb64707c1e0180fb65706c1e21009c20fb64705c1e00809d0440fb657044109c2448956040fb6470bc1e0180fb6570ac1e21009c20fb64709c1e00809d0440fb647084109c0448946080fb6470fc1e0180fb6570ec1e21009c20fb6470dc1e00809d00fb64f0c09c1894c24ac894e0c",[-3,4,3,4,3,2,4,3,2,5,3,-4,4,3,4,3,2,4,3,2,5,3,-4,4,3,4,3,2,4,3,2,4,2,4,-3]],[42246591,"895610440fb65f174489d9c1e1180fb6571689d3c1e31009cb0fb64f1589cdc1e50809dd0fb65f1489d809e84189c5418b8c8f0004000041330c9f41338c970008000043338c9f000c0000894e140fb6471b89c1c1e1180fb6571a89d3c1e31009cb0fb64f1989cdc1e50809dd0fb65f184189db4109eb418b8c8f0004000041330c9f41338c97000800000fb6c041338c87000c0000894e18",[-3,5,3,3,4,2,3,2,4,2,3,2,4,2,2,3,8,4,8,8,-3,4,2,3,4,2,3,2,4,2,3,2,4,3,3,8,4,8,3,8,-3]],[42248674,"89461c8b4424e08946208b4424dc8946248b4424d88946288b4424d489462c8b4424d08946308b4424cc8946348b4424c88946388b4424c489463c8b4424c033462089464033462489464433462889464833462c89464c8b4424bc33463089465033463489465433463889465833463c89465c8b4424b833464089466033464489466433464889466833464c89466c44336e5044896e7044336e5444896e7444336e5844896e7844336e5c44896e7c443376604489b680000000443376644489b684000000443376684489b6880000004433766c4489b68c00000044335e7044899e9000000044335e7444899e9400000044335e7844899e9800000044335e7c44899e9c00000044338680000000448986a000000044338684000000448986a400000044338688000000448986a80000004433868c000000448986ac00000033be9000000089beb000000033be9400000089beb400000033be9800000089beb800000033be9c00000089bebc000000338ea0000000898ec0000000338ea4000000898ec4000000338ea8000000898ec8000000338eac000000898ecc00000033aeb000000089aed000000033aeb400000089aed400000033aeb800000089aed800000033aebc00000089aedc000000",[-3,4,-3,4,-3,4,-3,4,-3,4,-3,4,-3,4,-3,4,-3,4,3,-3,3,-3,3,-3,3,-3,4,3,-3,3,-3,3,-3,3,-3,4,3,-3,3,-3,3,-3,3,-3,4,-4,4,-4,4,-4,4,-4,4,-7,4,-7,4,-7,4,-7,4,-7,4,-7,4,-7,4,-7,7,-7,7,-7,7,-7,7,-7,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6,6,-6]],[42249147,"8996e0000000488b4424f831d08986e4000000488b4424f031c28996e80000004431d28996ec000000c786f00000000e000000",[-6,5,2,-6,5,2,-6,3,-6,-10]],[42465123,"48890ec5f82807",[-3,4]],[42465500,"48891ec5f82807",[-3,4]],[42720618,"44897ae4448952e8448942ec448972f0c5fa1142f4c5fa114af8c5fa1152fc890a",[-4,-4,-4,-4,5,5,5,-2]],[42722108,"894fc48957c8895fcc8947d0c58a5cc0c5b25cc9c5aa5cd2c5fa1147d4c5fa114fd8c5fa1157dc8947e0c5da5c842484000000c4c1525ccfc4c1625cd0c5fa1147e4c5fa114fe8c5fa1157ec44896ff0c57a115ff4c57a1167f8c57a116ffc44892f",[-3,-3,-3,-3,4,4,4,5,5,5,-3,9,5,5,5,5,5,-4,5,5,5,-3]],[42723634,"448942d4897ad8896adcc742e0000000008942e4c57a114ae8c57a1152ecc57a1172f044896af4",[-4,-3,-3,-7,-3,5,5,5,-4]],[42724393,"448952f0448972f444897af844894afc893a",[-4,-4,-4,-4,-2]],[42790398,"8946a48b4424088946a88b4424048946ac44894eb0448946b4894eb8448956bc8b5424248956c08b4424148946c48b4424b88946c848c746d40000000048c746cc00000000448966dc44897ee044896ee444894ee8448946ec894ef0448956f48956f88b4c2420894efc890648c7460c0000000048c7460400000000",[-3,4,-3,4,-3,-4,-4,-3,-4,4,-3,4,-3,4,-3,-8,-8,-4,-4,-4,-4,-4,-3,-4,-3,4,-3,-2,-8,-8]],[42792142,"894f908b4c2404894f948b0c24894f984489479c8947a08957a444896fa88b5c2418895fac8b4c240c894fb08b4c24b4894fb448c747c00000000048c747b800000000448957c844895fcc44894fd0448947d48947d88957dc44896fe0895fe48b4424148947e8894fec48c747f80000000048c747f000000000",[-3,4,-3,3,-3,-4,-3,-3,-4,4,-3,4,-3,4,-3,-8,-8,-4,-4,-4,-4,-3,-3,-4,-3,4,-3,-3,-8,-8]],[42793742,"8946c48b4424fc8946c88b4424f88946cc448946d08b4424048946d48b4424f48946d8896edc8b4424ac8946e0897ee444894ee8c746ec00000000c746f00000000044897ef4448966f844896efc8b4424b08906",[-3,4,-3,4,-3,-4,4,-3,4,-3,-3,4,-3,-3,-4,-7,-7,-4,-4,-4,4,-2]],[42795229,"8942c48b4424088942c88b4424048942cc448952d08b4424108942d444895ad844894adc8b4424b88942e0448942e4894ae8c742ec00000000c742f0000000008b4424148942f48972f88b04248942fc8b4424bc8902",[-3,4,-3,4,-3,-4,4,-3,-4,-4,4,-3,-4,-3,-7,-7,4,-3,-3,3,-3,4,-2]],[43042281,"c70600000000488b4710488b4f2848ffc8482b47184801c831d248f7f1483dffff0000b9ffff00000f4ec841890a",[-6,4,4,3,4,3,2,3,6,5,3,-3]],[43046505,"c706000000000fb7470c0fb74f0e0fb7771248ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,4,4,4,3,3,3,2,3,6,5,3,-3]],[43049993,"c706000000000fb6470c0fb64f0d0fb6770f48ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,4,4,4,3,3,3,2,3,6,5,3,-3]],[43052777,"c70600000000488b4710488b4f2848ffc8482b47184801c8489948f7f9483dffff0000b9ffff00000f4ec841890a",[-6,4,4,3,4,3,2,3,6,5,3,-3]],[43059881,"c706000000004863470c48634f104863771848ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,4,4,4,3,3,3,2,3,6,5,3,-3]],[43067081,"c70600000000480fbf470c480fbf4f0e480fbf771248ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,5,5,5,3,3,3,2,3,6,5,3,-3]],[43074249,"c70600000000480fbe470c480fbe4f0d480fbe770f48ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,5,5,5,3,3,3,2,3,6,5,3,-3]],[43084297,"c706000000008b470c8b4f108b771848ffc84829c84801f0489948f7fe483dffff0000b9ffff00000f4ec841890a",[-6,3,3,3,3,3,3,2,3,6,5,3,-3]],[43960583,"c57a7f17c5d96cd5c5fa7f5710c5f96dc18d049500000000c5fa7f0407c5d96dc5c5fa7f4407108d04d500000000c5b96cc3c5fa7f0407c5c96cc7c5fa7f440710c5b96dc36bc20cc5fa7f0407c5c96dc7c5fa7f44071089d0c1e004c4c1216cc1c5fa7f0407c4c1196cc5c5fa7f440710c4c1216dc16bc214c5fa7f0407c4c1196dc5c5fa7f4407106bc218c5f96f4c24e8c5f96f5424d8c5f16cc2c5fa7f0407c4c1096cc7c5fa7f440710c5f16dc26bc21cc5fa7f0407c4c1096dc7c5fa7f440710",[-4,4,-5,4,7,-5,4,-6,7,4,-5,4,-6,4,3,-5,4,-6,2,3,5,-5,5,-6,5,3,-5,5,-6,3,6,6,4,-5,5,-6,4,3,-5,5,-6]],[43962463,"c5fa7f1fc5f96dc4c5fa7f0417c5f16cc5c4a17a7f042fc5f16dc5c4a17a7f041fc5e96cc6c5fa7f040fc5e96dc6c4a17a7f0437c5b96cc7c4a17a7f0417c5b96dc7c4a17a7f0407c4a17970440e40d8c4a179704c0e50d8c4a17970540e60d8c4217970440e70d8c4a17970a40ec0000000d8c4a17970ac0ed0000000d8c4a17970b40ee0000000d8c4a17970bc0ef0000000d8c5f96cdcc5fa7f1c1fc5f96dc4c5fa7f042fc5f16cc5c4a17a7f043fc5f16dc5488b4424d0c5fa7f0407c5e96cc6488b4424e8c5fa7f0407c5e96dc6488b4424d8c5fa7f0407c5b96cc7488b4424e0c5fa7f0407c5b96dc7c4a17a7f0427",[-4,4,-5,4,-6,4,-6,4,-5,4,-6,4,-6,4,-6,8,8,8,8,11,11,11,11,4,-5,4,-5,4,-6,4,5,-5,4,5,-5,4,5,-5,4,5,-5,4,-6]],[43962983,"c5fa7f17c5d96cd5c5fa7f5710c5f96dc1c5fa7f0417c5d96dc5c5fa7f441710c5b96cc34c8b6424d8c4a17a7f4427f0c5c96cc7c4a17a7f0427c5b96dc34c8b6424f0c4a17a7f4427f0c5c96dc7c4a17a7f0427c4a1796f441640c4a1796f4c1650c421796f441660c4a1796f5c1670c4a1796fa41640010000c4a1796fac1650010000c4a1796fb41660010000c4a1796fbc1670010000c5f96cd1c5fa7f141fc5d96cd5c5fa7f541f10c5f96dc1c4a17a7f041fc5d96dc5c4a17a7f441f10c5b96cc3c4a17a7f4437f0c5c96cc7c4a17a7f0437c5b96dc3c4a17a7f440ff0c5c96dc7c4a17a7f040fc4a1796f841680000000c4a1796f8c1690000000c421796f8416a0000000c4a1796f9c16b0000000c4a1796fa41680010000c4a1796fac1690010000c4a1796fb416a0010000c4a1796fbc16b0010000c5f96cd14c8b6424e0c4a17a7f5427f0c5d96cd5c4a17a7f1427c5f96dc1c5fa7f440ff0c5d96dc5c5fa7f040fc5b96cc3c4a17a7f043fc5c96cc7c4a17a7f443f10c5b96dc3c4a17a7f0407c5c96dc7c4a17a7f440710c4a1796f8416c0000000c4a1796f8c16d0000000c421796f8416e0000000c4a1796f9c16f0000000c4a1796fa416c0010000c4a1796fac16d0010000c4a1796fb416e0010000c4a1796fbc16f0010000c5f96cd1c5fa7f542ff0c5d96cd5c5fa7f142fc5f96dc1c5fa7f4407f0c5d96dc5c5fa7f0407c5b96cc3c4a17a7f042fc5c96cc7c4a17a7f442f10c5b96dc34c8b6424e8c4a17a7f0427c5c96dc7c4a17a7f442710",[-4,4,-5,4,-5,4,-6,4,5,-7,4,-6,4,5,-7,4,-6,7,7,7,7,10,10,10,10,4,-5,4,-6,4,-6,4,-7,4,-7,4,-6,4,-7,4,-6,10,10,10,10,10,10,10,10,4,5,-7,4,-6,4,-6,4,-5,4,-6,4,-7,4,-6,4,-7,10,10,10,10,10,10,10,10,4,-6,4,-5,4,-6,4,-5,4,-6,4,-7,4,5,-6,4,-7]],[45624704,"41c70200000000",[-7]],[45624869,"66890866428b4c22c666894802",[-3,6,-4]],[45624917,"66890866428b4c22d666894802",[-3,6,-4]],[45624936,"41ff020f1f440000",[-3,5]],[45624970,"66890866428b4c22e666894802",[-3,6,-4]],[45625014,"66890866428b4c22f666894802",[-3,6,-4]],[45625033,"41ff020f1f4000",[-3,4]],[45625229,"668928668b6a0666896802",[-3,4,-4]],[45625277,"668928668b6a0666896802",[-3,4,-4]],[45625294,"41ff026666666666662e0f1f840000000000",[-3,15]],[45625340,"668928668b6a0666896802",[-3,4,-4]],[45625384,"668928668b6a0666896802",[-3,4,-4]],[45625401,"41ff020f1f4000",[-3,4]],[45625994,"41c70100000000",[-7]],[45626279,"668908668b4c9a0666894802",[-3,5,-4]],[45626323,"668908668b4c9a1666894802",[-3,5,-4]],[45626341,"41ff010f1f840000000000",[-3,8]],[45626375,"668908668b4c9a2666894802",[-3,5,-4]],[45626393,"41ff010f1f4000",[-3,4]],[45626423,"668908668b4c9a3666894802",[-3,5,-4]],[45626441,"41ff010f1f4000",[-3,4]],[45626601,"66448910668b5a0666895802",[-4,4,-4]],[45626646,"668918668b5a0666895802",[-3,4,-4]],[45626663,"41ff01660f1f440000",[-3,6]],[45626696,"668918668b5a0666895802",[-3,4,-4]],[45626713,"41ff010f1f4000",[-3,4]],[45626744,"668918668b5a0666895802",[-3,4,-4]],[45626761,"41ff010f1f4000",[-3,4]],[45628736,"41c70200000000",[-7]],[45628910,"8918420fb74c22cec1e110420fb75c22c609cb895804",[-2,6,3,6,2,-3]],[45628976,"8928420fb74c22dec1e110420fb76c22d609cd896804",[-2,6,3,6,2,-3]],[45629043,"8928420fb74c22eec1e110420fb76c22e609cd896804",[-2,6,3,6,2,-3]],[45629071,"41ff0266666666662e0f1f840000000000",[-3,14]],[45629119,"8928420fb74c22fec1e110420fb76c22f609cd896804",[-2,6,3,6,2,-3]],[45629147,"41ff026690",[-3,2]],[45629352,"89180fb76a0ec1e5100fb75a0609eb895804",[-2,4,3,4,2,-3]],[45629418,"89180fb76a0ec1e5100fb75a0609eb895804",[-2,4,3,4,2,-3]],[45629442,"41ff0266662e0f1f840000000000",[-3,11]],[45629495,"89180fb76a0ec1e5100fb75a0609eb895804",[-2,4,3,4,2,-3]],[45629519,"41ff0266666666662e0f1f840000000000",[-3,14]],[45629571,"89180fb76a0ec1e5100fb75a0609eb895804",[-2,4,3,4,2,-3]],[45629595,"41ff026690",[-3,2]],[45630250,"41c70100000000",[-7]],[45630565,"8908440fb7549ace41c1e2100fb74c9ac64409d1894804",[-2,6,4,5,3,-3]],[45630632,"8908440fb7549ade41c1e2100fb74c9ad64409d1894804",[-2,6,4,5,3,-3]],[45630661,"41ff010f1f840000000000",[-3,8]],[45630707,"8908440fb7549aee41c1e2100fb74c9ae64409d1894804",[-2,6,4,5,3,-3]],[45630736,"41ff01666666662e0f1f840000000000",[-3,13]],[45630784,"89280fb74c9afec1e1100fb76c9af609cd896804",[-2,5,3,5,2,-3]],[45630810,"41ff010f1f00",[-3,3]],[45630984,"4489204989cc440fb7520e41c1e2100fb74a064409d1894804",[-3,3,5,4,4,3,-3]],[45631054,"8908440fb7520e41c1e2100fb74a064409d1894804",[-2,5,4,4,3,-3]],[45631081,"41ff010f1f4000",[-3,4]],[45631124,"8908440fb7520e41c1e2100fb74a064409d1894804",[-2,5,4,4,3,-3]],[45631151,"41ff0166666666662e0f1f840000000000",[-3,14]],[45631201,"89180fb74a0ec1e1100fb75a0609cb895804",[-2,4,3,4,2,-3]],[45631225,"41ff010f1f4000",[-3,4]],[45633413,"c70600000000",[-6]],[45633586,"8908428b4c2aa0894804",[-2,5,-3]],[45633624,"8908428b4c2ac0894804",[-2,5,-3]],[45633640,"ff06660f1f440000",[-2,6]],[45633668,"8908428b4c2ae0894804",[-2,5,-3]],[45633684,"ff06662e0f1f840000000000",[-2,10]],[45633716,"8908428b0c2a894804",[-2,4,-3]],[45633731,"ff0666662e0f1f840000000000",[-2,11]],[45633940,"89088b4a10894804",[-2,3,-3]],[45633978,"89088b4a10894804",[-2,3,-3]],[45633992,"ff06660f1f440000",[-2,6]],[45634022,"89088b4a10894804",[-2,3,-3]],[45634036,"ff06662e0f1f840000000000",[-2,10]],[45634069,"89088b4a10894804",[-2,3,-3]],[45634083,"ff0666662e0f1f840000000000",[-2,11]],[45634203,"c70100000000",[-6]],[45634335,"8928428b6c3ae0896804",[-2,5,-3]],[45634373,"8928428b2c3a896804",[-2,4,-3]],[45634388,"ff01662e0f1f840000000000",[-2,10]],[45634529,"89188b5a10895804",[-2,3,-3]],[45634566,"89288b6a10896804",[-2,3,-3]],[45634580,"ff01662e0f1f840000000000",[-2,10]],[45634682,"41c70100000000",[-7]],[45634984,"89088b0cda894804",[-2,3,-3]],[45635022,"89088b4cda20894804",[-2,4,-3]],[45635061,"89088b4cda40894804",[-2,4,-3]],[45635076,"41ff01660f1f840000000000",[-3,9]],[45635109,"89088b4cda60894804",[-2,4,-3]],[45635124,"41ff01660f1f840000000000",[-3,9]],[45635288,"4489108b5a10895804",[-3,3,-3]],[45635328,"89188b5a10895804",[-2,3,-3]],[45635342,"41ff016666666666662e0f1f840000000000",[-3,15]],[45635382,"89188b5a10895804",[-2,3,-3]],[45635396,"41ff01660f1f840000000000",[-3,9]],[45635430,"89188b5a10895804",[-2,3,-3]],[45635444,"41ff01660f1f840000000000",[-3,9]],[45635558,"41c70000000000",[-7]],[45635733,"8908428b4c27a0894804",[-2,5,-3]],[45635774,"8908428b4c27c0894804",[-2,5,-3]],[45635790,"41ff006666666666662e0f1f840000000000",[-3,15]],[45635830,"8908428b4c27e0894804",[-2,5,-3]],[45635846,"41ff000f1f8000000000",[-3,7]],[45635878,"8908428b0c27894804",[-2,4,-3]],[45635893,"41ff000f1f840000000000",[-3,8]]]} +diff --git a/scripts/link_modules.py b/scripts/link_modules.py +index b0a76bd..1d289fb 100644 +--- a/scripts/link_modules.py ++++ b/scripts/link_modules.py +@@ -10,9 +10,11 @@ libSceLibcInternal are served by libc.prx's same-NID exports: the internal + library is not shipped with the game and exposes the same functions. + Output: out/boot-linked.bin (format BBPROBE5) and out/link.json. + """ ++import bisect + import collections + import hashlib + import json ++import os + from pathlib import Path + import struct + from prepare import parse_self, span, unpack +@@ -20,6 +22,9 @@ from link_libc import encode_id + + DEFAULT_MODULES = ('libc.prx', 'libSceFios2.prx') + FS_LOAD = bytes.fromhex('64488b042500000000') # mov rax, fs:[0] ++RED_ZONE_SITES = Path(__file__).resolve().parent.parent / 'patches' / 'redzone.json' ++LEA_DOWN = bytes.fromhex('488d642480') # lea rsp, [rsp-0x80] ++LEA_UP = bytes.fromhex('488da42480000000') # lea rsp, [rsp+0x80] + + + def module(path): +@@ -89,7 +94,40 @@ def patch_fs_loads(image, ph, base): + return patched + + +-def link(game, out, module_names=DEFAULT_MODULES): ++def protect_red_zones(image, sites, base, skip=()): ++ """Run guest stores of red-zone leaf functions with rsp 128 bytes lower (Windows). ++ ++ Where Windows saves extended state in the compact XSAVE layout (Intel 12th gen and later), ++ an exception's frame holds the AVX registers up to 0x28 bytes below rsp, over the System V ++ red zone where leaf functions keep live locals (PS4 and Linux leave those 128 bytes alone). ++ A store that faults on a page the GPU tracker write-protected is resumed with the locals ++ overwritten: the attack-trail writer at 0x28ce7b0 then loads NULL from [rsp-0x60]. Each site ++ (tools/redzone_sites.py: offset, original bytes, instruction lengths, negative = store) ++ jumps to a copy at `base` where the stores run below the red zone. Sites whose bytes ++ differ or that overlap a relocation (`skip`: sorted targets) stay as they are. Returns ++ the copies and the number of sites redirected.""" ++ code = bytearray() ++ applied = 0 ++ for offset, original, lengths in sites: ++ original = bytes.fromhex(original) ++ end = offset + len(original) ++ near = bisect.bisect_right(skip, offset - 8) ++ if image[offset:end] != original or (near < len(skip) and skip[near] < end): ++ continue ++ here = base + len(code) ++ pos = offset ++ for length in lengths: ++ body = image[pos:pos + abs(length)] ++ code += LEA_DOWN + body + LEA_UP if length < 0 else body ++ pos += abs(length) ++ code += b'\xe9' + struct.pack('gs patched={fs_patched}') ++ f'fs->gs patched={fs_patched}, red-zone-safe stores at {red_zone_sites} sites') + + + if __name__ == '__main__': diff --git a/scripts/mods.py b/scripts/mods.py index d6818eb..ceca08e 100644 --- a/scripts/mods.py @@ -24484,8 +24589,51 @@ index da1e52e..eaeb424 100644 # BBPATCH2: the patch base, so the loader can rebase pointers the patches write into # relocated slots (60/90 FPS++ replace function pointers). blob=struct.pack('<8sQQ',b'BBPATCH2',EBOOT_BASE,len(writes)) +diff --git a/scripts/prepare.py b/scripts/prepare.py +index 9860c61..f46e297 100644 +--- a/scripts/prepare.py ++++ b/scripts/prepare.py +@@ -25,9 +25,37 @@ def unpack(fmt, data, offset): + return struct.unpack(fmt, span(data, offset, struct.calcsize(fmt))) + + ++def parse_elf(data): ++ """An eboot.bin already unwrapped to a plain ELF (some dumping tools and other ports write ++ it so): the same result as parse_self, every segment present in the file.""" ++ header = unpack('<16sHHIQQQIHHHHHH', data, 0) ++ if header[0][:7] != b'\x7fELF\x02\x01\x01' or header[2] != 62: ++ raise ValueError("expected little-endian x86-64 ELF") ++ if header[9] != 56 or not 0 < header[10] < 256: ++ raise ValueError("unsupported program headers") ++ ph = [dict(zip(('type', 'flags', 'offset', 'vaddr', 'paddr', 'filesz', 'memsz', 'align'), ++ unpack(' 512 * 1024 * 1024: ++ raise ValueError("probe image exceeds 512 MiB limit") ++ elf = bytearray(end) ++ present = min(end, len(data)) ++ elf[:present] = data[:present] ++ missing = [] ++ for i, p in enumerate(ph): ++ if p['filesz'] and p['offset'] + p['filesz'] > len(data): ++ missing.append(i) ++ if p['type'] in (1, 2, 0x61000000, 0x61000010): ++ raise ValueError(f"required segment {i} is unavailable") ++ return elf, header, ph, [], missing ++ ++ + def parse_self(data): ++ if span(data, 0, 4) == b'\x7fELF': ++ return parse_elf(data) + if span(data, 0, 4) != b'O\x15=\x1d': +- raise ValueError("expected PS4 SELF") ++ raise ValueError("expected a PS4 executable (SELF or ELF)") + count, = unpack(' ++""" ++import argparse ++import hashlib ++import json ++from pathlib import Path ++import re ++import struct ++import sys ++import xml.etree.ElementTree as ET ++import capstone ++from capstone import x86 ++ ++ROOT = Path(__file__).resolve().parent.parent ++sys.path.insert(0, str(ROOT / 'scripts')) ++from prepare import parse_self # noqa: E402 ++ ++RSP, RBP, RIP = x86.X86_REG_RSP, x86.X86_REG_RBP, x86.X86_REG_RIP ++STACK = {RSP, x86.X86_REG_ESP, x86.X86_REG_SP, x86.X86_REG_SPL} ++FLOW = {capstone.CS_GRP_JUMP, capstone.CS_GRP_CALL, capstone.CS_GRP_RET, capstone.CS_GRP_INT, capstone.CS_GRP_IRET} ++NO_ACCESS = ('lea', 'nop', 'prefetch') ++RED_ZONE_RSP = re.compile(rb'[\x44\x4c\x54\x5c\x64\x6c\x74\x7c]\x24[\x80-\xff]', re.S) # [rsp-disp8] ++FRAME_POINTER = bytes.fromhex('4889e5') # mov rbp, rsp ++ ++ ++def load(game): ++ elf, _, ph, _, _ = parse_self((game / 'eboot.bin').read_bytes()) ++ loads = [p for p in ph if p['type'] == 1] ++ image = bytearray(max(p['vaddr'] + p['memsz'] for p in loads)) ++ for p in loads: ++ image[p['vaddr']:p['vaddr'] + p['filesz']] = elf[p['offset']:p['offset'] + p['filesz']] ++ text = next(p for p in loads if p['flags'] & 1) ++ hdr = next(p for p in ph if p['type'] == 0x6474e550)['vaddr'] ++ if image[hdr + 2] != 0x03 or image[hdr + 3] != 0x3b: ++ raise ValueError('unexpected .eh_frame_hdr encoding') ++ count, = struct.unpack_from(' 0): ++ if last + 1 < len(run): ++ last += 1 ++ else: ++ first -= 1 ++ span = run[first:last + 1] ++ if sum(i.size for i in span) >= 5: ++ sites.append([span[0].address, b''.join(i.bytes for i in span).hex(), ++ [-i.size if i.address in store_at else i.size for i in span]]) ++ covered = {a for s in sites for a in range(s[0], s[0] + len(s[1]) // 2)} ++ return sites, [f'{i.address:#x}' for i in stores if i.address not in covered] ++ ++ ++def main(): ++ p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) ++ p.add_argument('game', type=Path) ++ p.add_argument('-o', '--out', type=Path, default=ROOT / 'patches' / 'redzone.json') ++ a = p.parse_args() ++ image, starts = load(a.game) ++ patched = patched_addresses() ++ md = capstone.Cs(capstone.CS_ARCH_X86, capstone.CS_MODE_64) ++ md.detail = True ++ sites, functions, skipped, uncovered = [], 0, [], [] ++ for start, end in zip(starts, starts[1:]): ++ code = image[start:end] ++ if not (RED_ZONE_RSP.search(code) or FRAME_POINTER in code): ++ continue ++ result = analyse(md, image, start, end) ++ if result is None: ++ continue ++ if any(start <= q < end for q in patched): ++ skipped.append(f'{start:#x} (community patch)') ++ continue ++ found, missing = result ++ if missing == ['jump table']: ++ skipped.append(f'{start:#x} (jump table)') ++ continue ++ functions += 1 ++ sites += found ++ uncovered += missing ++ a.out.write_text(json.dumps(dict( ++ eboot='Bloodborne 01.09', text_sha256=hashlib.sha256(image[starts[0]:starts[-1]]).hexdigest(), ++ functions=functions, skipped=skipped, uncovered_stores=uncovered, ++ sites=sites), separators=(',', ':')) + '\n', encoding='ascii') ++ print(f'{len(sites)} sites in {functions} red-zone leaf functions; {len(uncovered)} stores uncovered; ' ++ f'{len(skipped)} functions skipped -> {a.out}') ++ ++ ++if __name__ == '__main__': ++ main() diff --git a/launcher/windows/BloodborneLauncher/Core/Updater.cs b/launcher/windows/BloodborneLauncher/Core/Updater.cs index 2aceae9..7670996 100644 --- a/launcher/windows/BloodborneLauncher/Core/Updater.cs +++ b/launcher/windows/BloodborneLauncher/Core/Updater.cs @@ -26,7 +26,7 @@ namespace BloodborneLauncher.Core public static string ReleasesPage => $"https://github.com/{Repository}/releases"; /// The engine build this launcher is made for (package.json "engine"). - public const string EngineId = "bbhost-0.4.0-fps35"; + public const string EngineId = "bbhost-0.4.0-fps36"; private const string ExeName = "Bloodborne Launcher.exe"; private const string PackageFile = "package.json";