From 4fe1405411a3492205e0503bbb2e218d9a773dd4 Mon Sep 17 00:00:00 2001 From: Carl Vargklint Date: Sat, 18 Jul 2026 14:09:06 +0200 Subject: [PATCH] New compile file --- tama.bin | Bin 12308 -> 12724 bytes tama.c | 50 +- tama.elf | Bin 99624 -> 105432 bytes tama.hex | 1238 +++++++++-------- tama.lst | 4094 ++++++++++++++++++++++++++++-------------------------- tama.map | 812 +++++------ 6 files changed, 3225 insertions(+), 2969 deletions(-) diff --git a/tama.bin b/tama.bin index 6d54b536fa3806aa0a3c45b8a67af6d970bc75ef..091b611e46ae8415ebff1af05ff9b7b17cbb4ff5 100755 GIT binary patch delta 3925 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 & 0xFC000000; // latch reset flags... + RCC->RSTSCKR |= RCC_RMVF; // ...then clear for next boot gpio_setup(); lowpower_setup(); // button-wake EXTI + periodic-check timer @@ -718,6 +753,7 @@ int main(void) while (1) { led_blink(); Delay_Ms(700); } } ssd1306_init(); + apply_brightness(); // start at the configured (dimmer) brightness splash(); screen = SCR_SELECT; // pick a species before a pet is born @@ -793,7 +829,11 @@ int main(void) if (set_sel == 0) { // cycle screen-off timeout timeout_idx = (timeout_idx + 1) % TIMEOUT_OPT_COUNT; beep(880, 40); - } else if (set_sel == 1) { // toggle sound + } else if (set_sel == 1) { // cycle brightness + bright_idx = (bright_idx + 1) % BRIGHT_OPT_COUNT; + apply_brightness(); // takes effect immediately + beep(880, 40); + } else if (set_sel == 2) { // toggle sound sound_on = !sound_on; beep(988, 60); // only audible if just enabled } else { // Back diff --git a/tama.elf b/tama.elf index 522060c61ee136e2c9dc45c3df51d8051c338959..3bb836fe818d6c30c5fbed7b74e3fdba07e04b8f 100755 GIT binary patch delta 35304 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%0A2t{+C^i>CE9C&bM1Um#;{cex@Mbc!KD?@u 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 diff --git a/tama.hex b/tama.hex index dd4fef6..022257f 100644 --- a/tama.hex +++ b/tama.hex @@ -1,13 +1,13 @@ -:100000006F00F03A00000000220C0000200C0000FD +:100000006F00D03C00000000400C00003E0C0000DF :1000100000000000000000000000000000000000E0 :1000200000000000000000000000000000000000D0 -:10003000200C000000000000200C00000000000068 -:10004000200C0000200C0000200C0000200C000000 -:100050009A1A0000200C0000200C0000200C000068 -:10006000200C0000200C0000200C0000200C0000E0 -:10007000200C0000200C0000200C0000200C0000D0 -:10008000200C0000200C0000200C0000200C0000C0 -:10009000200C0000200C0000BE1A00000000000030 +:100030003E0C0000000000003E0C0000000000002C +:100040003E0C00003E0C00003E0C00003E0C000088 +:10005000C81B00003E0C00003E0C00003E0C0000DF +:100060003E0C00003E0C00003E0C00003E0C000068 +:100070003E0C00003E0C00003E0C00003E0C000058 +:100080003E0C00003E0C00003E0C00003E0C000048 +:100090003E0C00003E0C0000EC1B000000000000C5 :1000A000634E050263C305042E86AA857D5515C2DD :1000B00085466378B6006356C00006068606E36C84 :1000C000B6FE014563E4C500918D558D858205829C @@ -23,7 +23,7 @@ :10016000E74071770507239EE74003D707401367F1 :1001700017002390E74003D70740136707402390F9 :10018000E74082809307F00763E7A7029307F00335 -:1001900063E3B70293D735009E07AA971385C1C5BD +:1001900063E3B70293D735009E07AA97138541C63C :1001A0003E959D89054783470500B315B70009C6ED :1001B000CD8F2300F500828093C5F5FFED8FD5BF6D :1001C0000111328322CC26CA06CEAA843A86AE9684 @@ -33,7 +33,7 @@ :1002000022474243B246124682453A85D9B7F24068 :100210006244D244056182801301C1FD22CE26CC06 :1002200006D02A84AE82B28483C304008504638529 -:1002300003060147939733000966BA971306067FB2 +:1002300003060147939733000D66BA971306C698D5 :10024000B29703C30700814793158301E185368682 :1002500063C4050013C61600B385E2003305F4003D :1002600036CA1AC81EC63AC416C23EC0213F42430F @@ -47,7 +47,7 @@ :1002E0000243A546924785042A8705043000E3ECC3 :1002F00066FC2687BE867D17B305E60083C505002C :100300008506A38FB6FE65FBE24052443385970015 -:10031000C2447101828083C761C0ADC7311122C65A +:10031000C2447101828083C771C0ADC7311122C64A :100320002E84AA8537A507001305051206C826C422 :10033000A53B93175400818F8A07A29713141500C9 :10034000AA84A28513953700853326949317140049 @@ -57,7 +57,7 @@ :10038000510182808280611122C03714014006C26F :1003900013040480894737C502001CC8130505F201 :1003A000BD3BB707020092401CC802442101828075 -:1003B000138781C40347070171C3938781C483D620 +:1003B000138701C50347070171C3938701C583D61E :1003C00087003D671307F7A56366D7023695420598 :1003D00041812394A7009306C002054763FDA60050 :1003E00093067007094763F8A6009306F00E0D47C1 @@ -66,35 +66,35 @@ :10041000AE866302C70205468146630EC70003C766 :10042000D70031EB838647001307B0036341D7043D :10043000A386B70091462386D70079479305C0036A -:10044000130500312382E1C4F9359305C003130578 +:10044000130500312386E1C4F9359305C003130574 :10045000C03DD1359305C003130570496D3D93052B :10046000C00813050062453D8240110129BFA386E3 :10047000C7008D46C9B7E31FC7FAE5BF82804111A7 -:1004800022C406C626C24D47AA87138401C463440A +:1004800022C406C626C24D47AA87138481C463448A :10049000B7042A940347040015EB2AC09305C00350 :1004A000130500628D3D9305C00313057049A53502 -:1004B0009305A00513050037B93D82471387C1C3D3 +:1004B0009305A00513050037B93D8247138741C452 :1004C0008546BA972300D4002380D700B240224447 -:1004D0009244410182809384C1C313071003AA94FC +:1004D000924441018280938441C413071003AA947B :1004E0006343B70203C7040019EB2AC09305200336 :1004F000130500620D35824705472380E4003E94D2 -:1005000023000400E1B723800400D5BF938781C492 +:1005000023000400E1B723800400D5BF938701C511 :1005100083D56700611122C006C2038707008505E5 :10052000C205C18103C6F700838627002393B70065 -:100530007D1793074006138481C463D6E7083E877E +:100530007D1793074006138401C563D6E7083E87FD :100540006207618759CA93876600130540066351A5 :10055000F508AA87E207E1872301F4002300E400FD :100560001305D0056357D500A30704009307400681 :10057000014613F5150019C983063400130340061C :10058000FD166351D30A9A86A301D4000343E40005 :100590004DE2894663ED6600939635008D8E83A506 -:1005A00081C3AE96FD8AD1E605032307640041C5E9 +:1005A00001C4AE96FD8AD1E605032307640041C568 :1005B0008306140093054006FD1663DED512AE8651 :1005C000A300D4008DA89347F7FFFD877D8F8DBFD3 :1005D00013C5F7FF7D85E98FB5BF9387F6FF23002D :1005E000E400930640060305140063D3F602B687C1 :1005F000E207E1879306F5FF2301F40013054006A7 -:10060000138381C4635BD500AA86A300D30095B78A +:10060000138301C5635BD500AA86A300D30095B709 :1006100093C6F7FFFD86F58FE1BF13C5F6FF7D8515 :10062000E98EE5B713C3F6FF1353F341B3F6660043 :10063000A1BFE31E03F603033400CD4663CD66007D @@ -107,7 +107,7 @@ :1006A000830504000145E13B830514000545C13B7A :1006B000830524000945E133830534000D45C1332A :1006C00083074400634DF0060D479305800C130526 -:1006D000A01423080400238BE1C235399305800C54 +:1006D000A01423080400238FE1C235399305800C50 :1006E0001305700F0D39024492409305001913054C :1006F000500A21010DB193C5F6FFFD85ED8EC9B5F8 :1007000093C5F6FFFD85ED8EA9B713C7F7FF7D876B @@ -160,7 +160,7 @@ :1009F0009E073ECEE247939236000147B69783C7E3 :100A000007003EC2C247BE92F247B3845700B38785 :100A1000E2001306F0076364F6041245930700082A -:100A2000B3D7E740E98F3386E4001385C1C532951B +:100A2000B3D7E740E98F3386E400138541C632959A :100A3000034301003EC4834705001346F3FF050747 :100A40007D8EA247B337F000B307F0403373F30055 :100A5000336666002300C500A147E31AF7FA85064E @@ -184,588 +184,614 @@ :100B7000074005067D538352470183578701C2070B :100B8000B3E75700F18FE389C7F8FD16E39566FEDA :100B900019B7130181FDA300A10089450A8506D27A -:100BA00023000100D13D9250130181028280970100 -:100BB00000209381E1841381414009651305058874 -:100BC0007310053097F6FFFF9386C64393E6360011 -:100BD00073905630138581C29385C10501466356D3 -:100BE000B50010C11105E34EB5FE17250000130531 -:100BF0006540938541C0138681C26388C500144156 -:100C000094C111059105E39AC5FEB7F700E00547C9 -:100C100098C385679387A7D07390173473002030EB -:100C200001A0371702401C47B7068000D58F1CC7AC -:100C30002A96AA876393C70082802380B70085071E -:100C4000D5BF1306004081451385C1C5D5B781477F -:100C50006313F60082803387F5008346070033076D -:100C6000F50085072300D700E5B779711305100259 -:100C700006D622D426D2313F0145213F1305F00785 -:100C8000093F130520023137014521371D451384E3 -:100C9000C1C501379304044093070004A2851306DD -:100CA0000002130511002300F100553793051002CF -:100CB0000A8513040402C933E31094FEB25022548F -:100CC000925445618280B7270240054798C3B71701 -:100CD00002403707080123A207001307170898C32B -:100CE00037079F0098C7984393166700E3DD06FE19 -:100CF000D843B7160240719B13672700D8C321471A -:100D0000DC42B18BE39EE7FE8280197186DEA2DCB5 -:100D1000A6DA553FB71402409C4C37140140FD76CB -:100D200093E757039CCC9307048098439386F60F70 -:100D3000370600F11377F7F01367070198C33707F9 -:100D4000020098CB9307044098437D168545758F24 -:100D50001367071098C33707040098CB184037056E -:100D60000140419B1367870018C09843718F370675 -:100D70000008518F98C39843370610FF7D16718F76 -:100D800037068000518F98C30CC81306000490CB1F -:100D90001307000298CB1C451167130727C0D98F92 -:100DA0001CC593070540984337E500E01367170615 -:100DB00098C3D84713671706D8C7B7071000232072 -:100DC000F510DC4C19671307F7DBCD8FDCCCB707C8 -:100DD00000402394E7021167130777A92396E702DF -:100DE000239AB70079572398E70003D7C7004D8FA0 -:100DF0002396E7002322C51037050B00130505C80D -:100E0000EFF0EFB1DC4C37072000D98FDCCC9C4CE5 -:100E10007D779306F70F93E717019CCC1C4005677D -:100E2000130707D093F7F7F01CC01C4093E7070D9A -:100E30001CC01C40F58F1CC01C40D98F1CC009640D -:100E4000EFF00FAF13040457ED3B03450400930785 -:100E5000F00F6314F500113D21A005041D3B75D56D -:100E60008964C5339384C458014490408546A28563 -:100E70000145EFF06FBAD53B1315140022950A0512 -:100E80001305054B42054181E545EFF0CFC83725F5 -:100E9000140013050544EFF08FA8290493072003DD -:100EA0009104E314F4FC89659385C5B013056003D0 -:100EB000EFF07F895D3B930580071305C03DEFF0A0 -:100EC0008FC51304800CEFF09F8A1357850093574A -:100ED0000501A300E104498F2301F104D98F230008 -:100EE000A10493F7F70F81EB75651305054C7D148D -:100EF000EFF0EFA269F8238B01C2814401478147DB -:100F000083C651C0DDEAB7070040F952B7F500E0EB -:100F1000A38A01C2238A01C22392070223985700A1 -:100F200003D70700136717002390E70003A705D135 -:100F30005D9B23A8E5D07300501003D70700C1665E -:100F4000F916758F2390E70003C751C321C7130516 -:100F5000F00A81318547A382F1C023A801C22395FD -:100F600001C2EFF0DF801357850093570501A308F6 -:100F7000E1022309F1029376F50F1377F70F93F748 -:100F8000F70F2308A10236CA3ACC3ECEF24462479C -:100F9000D247BDB7938481C403C7040135DBEFF0AA -:100FA000EFD683C70401A5F31305F00ADD368547A4 -:100FB000A382F1C023A801C26DB73EC43AC2EFF0CC -:100FC0000FFB135685009377F50F935605013ECA24 -:100FD0009377F60F3ECC93F7F60F3ECED247230A17 -:100FE000A102A30AC102230BD10202C0124789C782 -:100FF000A24793B717003EC0E246834701008145F0 -:1010000099C293351700724613F7F50F814619C23E -:1010100093B61400D98FD58F99C323A801C203C7F3 -:1010200061C311466369E67E09660A07130606CEA8 -:1010300032971843028785C103C5F1C28D4536C278 -:101040000905EFF06F8BA387A1C2E5451305704139 -:10105000EFF06FAC924691CE03C5F1C28D45050508 -:10106000EFF08F89A387A1C2E54513057041EFF02A -:101070008FAA8247B5C337575A641307070523A4BD -:10108000E1C4938781C4130740062382E70003C7A6 -:10109000F1C223930700239407002385E700054747 -:1010A000A385E70023A607002388E700238701C262 -:1010B000238201C423AE01C2930500051305302924 -:1010C000238BE1C223A001C4EFF0EFA493058007B6 -:1010D0001305C03DEFF02FA4AD3689659385C5B1EA -:1010E0000145EFF04FE6854613060008A945014586 -:1010F000EFF00FEB03C4F1C289679387C76A131738 -:101100003400018F0A07BA97904313070002BA868A -:10111000B54513050003EFF03F8A89659385C5B295 -:101120008800EFF02F9889670A049387075AA297DF -:101130008C43EFF02F978965938505B3EFF08F9679 -:10114000230005008C001305F002EFF0CFDF896566 -:10115000938545B3130580038DA985C103C5E1C2FD -:101160009D4536C21905EFE03FF92387A1C2E54549 -:1011700013057041EFF02F9A924691CE03C5E1C25C -:101180009D450505EFE05FF72387A1C2E5451305FF -:101190007041EFF04F988247938481C4638E070EAD -:1011A00083C7E1C2994663E9F60E89668A0793868A -:1011B00046CFB6979C438287838704001307400677 -:1011C000F9076355F704BA872380F4008387340056 -:1011D00013074006ED176350F704BA87A381F400A4 -:1011E0001144238481C231479305C003130500379E -:1011F0002386E1C2EFF02F92930500051305704995 -:10120000EFF06F91EFF02F98114569A013C7F7FF2A -:101210007D87F98F55BF13C7F7FF7D87F98F7DBF96 -:1012200003872400B94763C9E700930580071305C6 -:10123000C00DEFF04F8E8DA08387140093064006FB -:10124000E50763D7F638B687A380F400930747FF16 -:10125000130740066353F700BA872381F400094758 -:101260002384E1C29305C00331471305C03D2386A3 -:10127000E1C2EFF04F8A9305C00313057052EFF0FF -:101280008F89130500629305A005EFF0CF88EFF07A -:101290008F8F1945EFF0CF91EFF0BF9A83C7E1C26E -:1012A00001453ED002578967938707730A07BA97AB -:1012B0008C43EFF04FC983C704013EC895C3038731 -:1012C0004400F54763CEE70083A781C3A18B89CB98 -:1012D00009668546130646B481450145EFE0DFF314 -:1012E00083C5B4009307C00413059103230CF102D6 -:1012F000EFE07FFC2300050085463018814513058B -:101300000007EFE07FF1854613060008A945014577 -:10131000EFF00FC903C4F40063040438096685467E -:10132000130686B4B9451305E004EFE0FFEE096645 -:1013300085461306C6B4B14513054005EFE0DFED61 -:10134000930700033EC4C1473EC0930700033EC25B -:1013500083C7C40009661306C6623EC632478D477E -:10136000630BF702B24611476386E63A424783C6EB -:10137000A400194519C703C7C1C2630F073403C5C9 -:1013800081C293973600958F0967AA978A0713073A -:10139000C76ABA9790438245224513070002BA866E -:1013A00032C8EFF06FE1424689679387C762630FE7 -:1013B000F61089679387C75A630AF61063180410FA -:1013C000B2476382071403C7A4009387C1C0BA97CA -:1013D00003C40700938641C1938701C1BA9736972A -:1013E00003C3070003470700824692471D46B30226 -:1013F000D7009A979385E2FF1385D7FF014791465F -:101400001AD616D42ED23EC8EFE09FDB92479255F3 -:101410000147338587001D4691467515EFE05FDA79 -:1014200032531D47C24733066440A2526352C7027B -:10143000138547009307F00763CCA7009385F2FF5D -:101440009307F00363C6B70081466516EFF04FB50A -:10145000324785476309F70A92478D073ED2824794 -:1014600012551384A7009247A285A5073ED4824750 -:1014700022568907BE863EC8EFF0CFB69247C246D5 -:101480002255DD073E86B6853ED6EFF0AFB59247D2 -:10149000C24532551386D701A286EFF0AFB482471A -:1014A0009D4611469385C700924701471385170053 -:1014B000EFE01FD18247125593868701924713862A -:1014C000A700824793852701EFF0CFB132478D47C0 -:1014D000631BF70203A481C38247054613753400DA -:1014E00093854700A24779153E95EFE0BFC9824733 -:1014F00013751400130505029385A700A24705463E -:101500003E95EFE03FC88546130600089305E002CC -:101510000145EFF0EFA8014483C7E4006360F420C5 -:10152000014409671307077093172400BA979314AF -:1015300034009043A29441478604BA869305000381 -:1015400013851400EFF04FC702579377F40F631918 -:10155000F700C54636869305F0022685EFF0EFB911 -:1015600005049D47E31FF4FA83C741C46383072A38 -:101570000147E14613064007C9451945EFE05FC43E -:10158000E14613064007C9451945EFF00FB78965D5 -:10159000938505B55545EFF00F9B89659385C5B5D6 -:1015A0008800EFE03FD0B24709671307C7718A0789 -:1015B000BA978C43EFE01FCF8965938505B6EFE0BE -:1015C0007FCE230005008C007D45EFF0CF9791A4DE -:1015D00093C6F7FFFD86F58F85B903C5F400930523 -:1015E0008007933715003335A0003305A0401375ED -:1015F000C50DA387F4001305851B25B98387140047 -:101600009306400623870400A381D400950713871F -:1016100081C463D3F602B687930520031305705285 -:10162000A300F700EFE03FCF1305704193052003BF -:10163000EFE07FCE0D45B9B993C6F7FFFD86F58F74 -:10164000E1BF838744001307400693873702635640 -:10165000F702BA879305C003130500312382F40013 -:10166000EFE07FCB9305C00313057041EFE0BFCAE5 -:101670009305A0051305705261B613C7F7FF7D8768 -:10168000F98FC9BF8947238BF1C2930580021305E7 -:10169000302945B69147238BF1C2A38601C2F5B725 -:1016A00083A781C3930500053E853EC0EFE09FA25E -:1016B000130770028247636DA7001307E5013AC460 -:1016C0002247A18BB337F000B9073AC23EC049B1F7 -:1016D0001307E006098FE5B71545E31404CA03862E -:1016E000440075473E85E35EC7C803861400614722 -:1016F000E359C7C8038604004D47E354C7C803A590 -:1017000081C39305200336C8EFE0DF9CC246133542 -:10171000450085B909661306C65AB5B913151400F4 -:10172000229521470A05BA86138681C19305600276 -:101730003A950504EFF04FA81374F40FF1BB89CB71 -:101740008547F94513050037238BF1C2EFE0BFBC95 -:10175000EFF02FCF8965938545B60145138481C489 -:10176000EFE07FFE030604008965938545B72945B0 -:10177000EFF00F9E0306140089659385C5B74D45AC -:10178000EFF00F9D030624008965938545B87145E8 -:10179000EFF00F9C0306340089659385C5B81305E7 -:1017A0005002EFF0EF9A030644008965938545B92E -:1017B0001305E002EFF0CF998344B4009307C0040F -:1017C00013051104A6852300F104EFE0DFAE89655F -:1017D0009385C5B9EFE01FAD8D4763EC970A83553C -:1017E00084008604EFE03FAD9307F0022300F5008C -:1017F000938701C2BE9483D504000505EFE0BFAB1B -:101800002300050085469000930580030145EFE025 -:10181000BFA0EFF08FC503C741C089679387477E9C -:101820000607BA9783D7070003A401C389CB63686F -:10183000F4001305E00AEFF0CFB5A38201C083C71F -:10184000C1C281C7FD172386F1C283C741C481C7C6 -:10185000FD172382F1C483C781C581CF83D7A1C27D -:101860009306900F8507C207C18363E3F622239591 -:10187000F1C283A781C337850500050485071305D9 -:1018800005E423ACF1C223A881C2EFE05F896FF0C9 -:10189000EFEF8965938545BAEFE0DFA095B785C185 -:1018A00003C5D1C28D4536C20905EFE0FF84A3868A -:1018B000A1C2E54513057041EFE0FFA5924691CE28 -:1018C00003C5D1C28D450505EFE01F83A386A1C2E4 -:1018D000E54513057041EFE01FA48247A1C303C78C -:1018E000D1C211EF03C541C099450505EFE0DF8086 -:1018F0002382A1C0930580021305003731A88547D4 -:101900006319F70E83C761C09305C0031305C03D7B -:1019100093B717002383F1C0EFE0FF9FEFF06FB2A2 -:101920008965938585BA0145EFE0FFE18546130699 -:101930000008A9450145EFE0BFE68965938585BBB1 -:101940008800EFE03F9603C741C089679387C7745B -:101950000A07BA978C43EFE0FF94896523000500DE -:10196000938545BC13051105EFE0DF9383C761C084 -:10197000C9C78965938505AEEFE0DF9289652300CD -:1019800005009385C5BC13052106EFE0BF91230038 -:101990000500C5440144938714003EC083C2D1C2F0 -:1019A0001373F40F631E53000547A946130600087E -:1019B000A685014516C21AC0EFE09F8092420243FD -:1019C00013164400B306534022969C0093851400DE -:1019D000B336D0003E961145EFE01F84B1041307E3 -:1019E00050030504E399E4FA8965938545BD6FF0DA -:1019F0006FF6238BF1C2F94501B78965938585AEF2 -:101A0000A5BF824799CF9305000513053029238B85 -:101A100001C2EFE05F90930580071305C03DEFE042 -:101A20009F8FEFF00FA2130700020966BA86130614 -:101A30004676894513050003EFE01FF8138781C43C -:101A40008346D7000947138481C4639FE6028965F2 -:101A50009385C5AE13054002EFE0FFCE89659385FF -:101A600085BE8800EFE01F848345B400EFE0BF84AB -:101A7000230005008C001305E002EFE0DFCC896550 -:101A8000938585BF6FF00FED89659385C5AFD9B795 -:101A9000239501C2EFE09FA7E9BB61113EC0B707E4 -:101AA00001403AC29387074013071006D8CB054779 -:101AB000A38AE1C2124782472101730020306111DD -:101AC0003AC23EC07957B70700402398E700054760 -:101AD000238AE1C2124782472101730020300000AF -:101AE0004F6E0000000000004F6666002A2A204367 -:101AF0004F52525550544544202A2A0053454746D8 -:101B000041554C5420283131290000007072657312 -:101B10007320616E79206B65790000007E2024209F -:101B200061646F7074202D2D706574003C2000007E -:101B3000203E00004C2F52207069636B20204F4BD9 -:101B400020676F00210000007A0000005A000000AA -:101B50003E3E2065766F6C76696E67005B20000004 -:101B6000205D00007E2F70657420242073746174E2 -:101B700000000000464F4F44000000004841505014 -:101B800059000000454E455247590000434C45411D -:101B90004E0000004845414C544800002020787019 -:101BA000200000004D4158002D2053455454494E0B -:101BB0004753202D0000000053637265656E206F4F -:101BC00066663A00536F756E643A20004261636B3B -:101BD000000000004C2F52206D6F766520204F4B87 -:101BE0002075736500000000636F72652064756D79 -:101BF000706564204C0000004F4B3A207265737092 -:101C000061776E0070616E61676F746368692076DA -:101C100032000000626F6F74696E67206B65726ED0 -:101C2000656C2E2E000000006D6F756E74202F7095 -:101C3000657420206F6B0000737061776E2073688D -:101C4000656C6C20206F6B003E202E2F74616D61DF -:101C5000676F746368695F005368656C6C000000AF -:101C600050616E6B6F000000546D757800000000CD -:101C700070726F63000000007573657200000000F1 -:101C8000726F6F7400000000436C61756465000042 -:101C9000676C6974636800004645454400000000B5 -:101CA000504C415900000000534C45455000000085 -:101CB0004845414C0000000053544154530000007B -:101CC00053455454494E47530000000035730000FB -:101CD00031307300313573003330730036307300A8 -:101CE000361000005A1100003E170000021A0000D2 -:101CF0009E180000B811000020120000DA15000044 -:101D0000FC15000042160000841600009416000026 -:101D10000000000000000000000000001FFFFFF8AE -:101D20003FFFFFFC3FFF7FFC3FFF7FFC3FFF7FFC4F -:101D30003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFCBF -:101D40003FFF7FFC3C07701C3FFF7FFC3FFF7FFC99 -:101D50003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC9F -:101D60003FFF7FFC3FFF7FFC3FFF7FFC3FFFFFFC0F -:101D70002000000427DF000427DF00042000000407 -:101D80001FFFFFF80000000000000000000000003E -:101D90000000000000000000000000001FFFFFF82E -:101DA0003FFFFFFC3FFF7FFC3FFF7FFC3FFF7FFCCF -:101DB0003FFF7FFC3FFF7FFC3FFF7FFC3FBF7EFC80 -:101DC0003F1F7C7C3E0F783C3F1F7C7C3FBF7EFCEE -:101DD0003FFF7FFC3FFF7FFC3FFF7FFC3FBF7EFC60 -:101DE0003C07701C3FFF7FFC3FFF7FFC3FFFFFFC79 -:101DF0002000000427DF000427DF00042000000487 -:101E00001FFFFFF8000000000000000000000000BD -:101E10000000000000000000000000001FFFFFF8AD -:101E20003FFFFFFC3FFF7FFC3FFF7FFC3FFF7FFC4E -:101E30003FFF7FFC3FFF7FFC3FFF7FFC3F5F7D7CE0 -:101E40003EAF7ABC3FFF7FFC3FFF7FFC3FFF7FFC44 -:101E50003FFF7FFC3FFF7FFC3FFF7FFC3C03601C9C -:101E60003FFF7FFC3FFF7FFC3FFF7FFC3FFFFFFC0E -:101E70002000000427DF000427DF00042000000406 -:101E80001FFFFFF80000000000000000000000003D -:101E90000000000000000000000000001FFFFFF82D -:101EA0003FFFFFFC3FFF7FFC3FFF7FFC3FFF7FFCCE -:101EB0003FFF7FFC3FFF7FFC3FBF7EFC3F1F7C7CE2 -:101EC0003E0F783C3F1F7C7C3FBF7EFC3FFF7FFC8A -:101ED0003FFF7FFC3FFF7FFC3C07701C3FFF7FFC08 -:101EE0003FFF7FFC3FFF7FFC3FFF7FFC3FFFFFFC8E -:101EF0002000000427DF000427DF00042000000486 -:101F00001FFFFFF8000000000000000000000000BC -:101F100000008000001088000011880000318C0053 -:101F20000039DC00003BDC00007FFE00007FFE008B -:101F300000F83F0000E7C70000DFFB0001BFFD80A5 -:101F400001FFFF8003FFFFC003FFFFC003DBDBC017 -:101F500003E7E7C003E7E7C003DBDBC001FDDF8089 -:101F600001FABF8000F77F00007FFE0001FFFFC085 -:101F700001FFFFC003FFFFE003FFFFE003FFFFE0FF -:101F800007FFFFF007FFFFF00FFFFFF80FFFFFF85D -:101F90000000800000108800001188F000318C20C3 -:101FA0000039DC40003BDCF0007FFE00007FFE00DB -:101FB00000F83F0000E7C70000DFFB0001BFFD8025 -:101FC00001FFFF8003FFFFC003FFFFC003FFFFC04F -:101FD00003C3C3C003FFFFC003FFFFC001FFFF80B7 -:101FE00001FE7F8000FFFF00007FFE0001FFFFC0B9 -:101FF00001FFFFC003FFFFE003FFFFE003FFFFE07F -:1020000007FFFFF007FFFFF00FFFFFF80FFFFFF8DC -:1020100000008000001088000011880000318C0052 -:102020000039DC00003BDC00007FFE00007FFE008A -:1020300000F83F0000E7C70000DFFB0001BFFD80A4 -:1020400001FFFF8003FFFFC003FFFFC003E7E7C0FE -:1020500003E7E7C003FFFFC003FFFFC001FC3F80B1 -:1020600001FD3F8000FCBF00007C3E0001FFFFC07F -:1020700001FFFFC003FFFFE003FFFFE003FFFFE0FE -:1020800007FFFFF007FFFFF00FFFFFF80FFFFFF85C -:1020900000008000001088000011880000318C00D2 -:1020A0000039DC00003BDC00007FFE00007FFE000A -:1020B00000F83F0000E7C70000DFFB0001BFFD8024 -:1020C00001FFFF80039FF9C003E7E7C003FFFFC0E4 -:1020D00003E7E7C003E7E7C003FFFFC001FFFF809E -:1020E00001FFFF8000FC3F00007BDE0001F7EFC036 -:1020F00001FFFFC003FFFFE003FFFFE003FFFFE07E -:1021000007FFFFF007FFFFF00FFFFFF80FFFFFF8DB -:1021100000008000001088000011880000318C0051 -:102120000039DC00003BDC00007FFE00007FFE0089 -:1021300000F83F0000E7C70000DFFB0001BFFD80A3 -:1021400001FFFF8003FFFFC003FFFFC003EFF7C0E5 -:1021500003E7EBC003DBDBC003FFFFC001FFFF8031 -:1021600001F7EF8000F7EF00007BDE0001FC3FC0CD -:1021700001FFFFC003FFFFE003FFFFE003FFFFE0FD -:1021800007FFFFF007FFFFF00FFFFFF80FFFFFF85B -:1021900000008000001088000011880000318C00D1 -:1021A0000039DC00003BDC00007FFE00007FFE0009 -:1021B00000F83F0000E7C70000DFFB0001BFFD8023 -:1021C00001FFFF8003FFFFC003FFFFC003FFFFC04D -:1021D00003C3C3C003FFFFC003FFFFC001FFFF80B5 -:1021E00001FC3F8000FFFF00007FFE0001FFFFC0F9 -:1021F00001FFFFC003FFFFE003FFFFE003FFFFE07D -:1022000007FFFFF007FFFFF00FFFFFF80FFFFFF8DA -:1022100000008000001088000011880000318C0050 -:102220000039DC00003BDC00007FFE00007FFE0088 -:1022300000F83F0000E7C70000DFFB0001BFFD80A2 -:1022400001FFFF8003FFFFC003FFFFC003E7E7C0FC -:1022500003E7E7C003FFFFC003FFFFC001FFFF80EC -:1022600001FC3F8000FFFF00007FFE0001FFFFC078 -:1022700001FFFFC003FFFFE003FFFFE003FFFFE0FC -:1022800007FFFFF007FFFFF00FFFFFF80FFFFFF85A -:1022900000000000000000000000000007FFFFE059 -:1022A0000FFFFFF00FFFFFF00FFFFFF00FFFFFF03A -:1022B0000FFFFFF00FFFFFF00FFFFFF00FFFFFF02A -:1022C0000F0180F00FFFFFF00FFFFFF00FFFFFF097 -:1022D0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A -:1022E0000FF80FF00FFFFFF00FFFFFF00FFFFFF0F1 -:1022F0000FFFFFF007FFFFE00007E0000007E0002E -:102300000007E000007FFE00007FFE00007FFE006F -:1023100000000000000000000000000007FFFFE0D8 -:102320000FFFFFF00FFFFFF00FFFFFF00FFFFFF0B9 -:102330000FFFFFF00FFFFFF00FEFF7F00FC7E3F015 -:102340000F83C1F00FC7E3F00FEFF7F00FFFFFF0BF -:102350000FFFFFF00FFFFFF00FFFFFF00FFFFFF089 -:102360000FFFFFF00FFFFFF00FF81FF00FC7E3F0B4 -:102370000FFFFFF007FFFFE00007E0000007E000AD -:102380000007E000007FFE00007FFE00007FFE00EF -:1023900000000000000000000000000007FFFFE058 -:1023A0000FFFFFF00FFFFFF00FFFFFF00FFFFFF039 -:1023B0000FFFFFF00FFFFFF00FDFEFF00FAFD7F0D1 -:1023C0000FFFFFF00FFFFFF00FFFFFF00FFFFFF019 -:1023D0000FFFFFF00FFFFFF00FFFFFF00FC7E3F05D -:1023E0000FF81FF00FFFFFF00FFFFFF00FFFFFF0E0 -:1023F0000FFFFFF007FFFFE00007E0000007E0002D -:102400000007E000007FFE00007FFE00007FFE006E -:1024100000000000000000000000000007FFFFE0D7 -:102420000FFFFFF00FFFFFF00FFFFFF00FFFFFF0B8 -:102430000FFFFFF00FEFF7F00FC7E3F00F83C1F0CE -:102440000FC7E3F00FEFF7F00FFFFFF00FFFFFF004 -:102450000FFFFFF00FFFFFF00F7FFFF00FBFFFF048 -:102460000FDFFFF00FBFFFF00F780FF00FFFFFF04F -:102470000FFFFFF007FFFFE00007E0000007E000AC -:102480000007E000007FFE00007FFE00007FFE00EE -:1024900003C003C003C007F00FF81FFCFF7FFE3F1F -:1024A000FC1FFE3F1F7C1FFC0FF807F003C003C09A -:1024B00000000000000000C000C000C006C006C050 -:1024C00006D806D836D836D836D836D80000000018 -:1024D0000000008007F00FF81C3C3C3E300E300E30 -:1024E000700F300E3C3E3C3E1FFC0FF807F00080A2 -:1024F000000000000080008001C001C007F00DF85E -:102500000DF808F81DFC0DF80FF80FF807F0008023 -:1025100000000000000004000C001C0018001C005B -:102520003C001C001E001F000FE807F000800000A8 -:1025300000000000077000001F7C3F7E3F7E3F7E52 -:1025400000003F7E3F7E3F7E1F7C00000770000042 -:102550000000000000A001900FE01BF03BF831F8F4 -:102560003BF87BFC3FF83FF83FF81FF00FE001001D -:10257000AED580A83FD300408D142000A1C8DA1248 -:10258000818FD9F1DB40A4A6AFFF0000041C00003E -:10259000141C0000281C0000381C0000481C00000F -:1025A000581C0000601C0000681C000000000000B7 -:1025B0000000000000000000000000000000000219 -:1025C000000000000000000000000000800080000B -:1025D000000FF8000015540000FFFF8001FFFFC04E -:1025E00003FFFFE00111444107D7F5F007EFFBF0CF -:1025F00007D7F5F0051144500FFFFFF807FFFFF074 -:1026000007FFFFF00555555007EAABF043FFFFE029 -:1026100003FFFFE00155554000FFFF80003FFE0033 -:10262000000FF8042000000000000000000000007F -:10263000000000000000002000000020040000A8AE -:102640000E000020040003FE00000020000080A80F -:10265000000FF820003FFE20007FFF0000FFFF80FA -:1026600001FFFFC001FFFFC003FFFFE003F7F7E03A -:1026700003F7F7E003E3E3E007F7F7F003F7F7E02A -:1026800003FFFFE003FFFFE003E7F3E001F80FC003 -:1026900001FFFFC000FFFF80007FFF00003FFE0042 -:1026A000000FF8000000800000000000102400006F -:1026B000102400009023000010230000902300004D -:1026C0009022000010230000102200009021000042 -:1026D000102100009020000010200000901F00003A -:1026E000101F0000901E0000901E0000101E000031 -:1026F000901D0000101E0000101D0000901D000025 -:10270000502500003025000010250000F0240000B6 -:10271000D0240000B024000090240000701C0000B1 -:10272000781C0000801C0000881C0000901C000029 -:10273000981C0000A01C0000A81C00008C1B0000BE -:10274000B01C0000B81C0000C01C0000CC1C000025 -:10275000D01C0000D41C0000D81C0000DC1C0000B1 -:10276000E81A0000000000000000000000FFFC006C -:1027700003FFFF0007FFFF80061FE1800630318066 -:1027800006303180063FC300063303000631830064 -:102790000630C30006000600060F060007FFFF8094 -:1027A0000FFFFFC01FFFFFE03FFFFFF07FFFFFF8BD -:1027B000FFFFFFFCFFFFFFFC00F0F00003FFF00055 -:1027C0000FFFFC00000000000000000000000000FF -:1027D00000000000000000000000000000000000F9 -:1027E000000000005300A700FA00F401E803000015 -:1027F00000000000000000007E81A581BD99817E5F -:102800007EFFDBFFC3E7FF7E6CFEFEFE7C38100020 -:1028100010387CFE7C381000387C38FEFED610382C -:1028200010387CFEFE7C10380000183C3C1800007C -:10283000FFFFE7C3C3E7FFFF003C664242663C0080 -:10284000FFC399BDBD99C3FF0F070F7DCCCCCC78DA -:102850003C6666663C187E183F333F303070F0E0CF -:102860007F637F636367E6C018DB3CE7E73CDB1808 -:1028700080E0F8FEF8E08000020E3EFE3E0E020010 -:10288000183C7E18187E3C18666666666600660010 -:102890007FDBDB7B1B1B1B003E613C66663C867C52 -:1028A000000000007E7E7E00183C7E187E3C18FFF3 -:1028B000183C7E1818181800181818187E3C1800B4 -:1028C00000180CFE0C180000003060FE60300000A4 -:1028D0000000C0C0C0FE0000002466FF66240000A7 -:1028E00000183C7EFFFF000000FFFF7E3C18000048 -:1028F0000000000000000000183C3C181800180000 -:1029000066662400000000006C6CFE6CFE6C6C00BF -:10291000183E603C067C180000C6CC183066C60025 -:10292000386C3876DCCC76001818300000000000D7 -:102930000C18303030180C0030180C0C0C1830000B -:1029400000663CFF3C6600000018187E1818000066 -:1029500000000000001818300000007E0000000099 -:102960000000000000181800060C183060C080003D -:10297000386CC6D6C66C38001838181818187E007F -:102980007CC6061C3066FE007CC6063C06C67C0083 -:102990001C3C6CCCFE0C1E00FEC0C0FC06C67C00BD -:1029A0003860C0FCC6C67C00FEC60C183030300053 -:1029B0007CC6C67CC6C67C007CC6C67E060C78007B -:1029C0000018180000181800001818000018183017 -:1029D000060C1830180C060000007E00007E000077 -:1029E0006030180C183060007CC60C1818001800F5 -:1029F0007CC6DEDEDEC07800386CC6FEC6C6C60009 -:102A0000FC66667C6666FC003C66C0C0C0663C0036 -:102A1000F86C6666666CF800FE6268786862FE00B4 -:102A2000FE6268786860F0003C66C0C0CE663A001E -:102A3000C6C6C6FEC6C6C6003C18181818183C0004 -:102A40001E0C0C0CCCCC7800E6666C786C66E6004C -:102A5000F06060606266FE00C6EEFEFED6C6C6008E -:102A6000C6E6F6DECEC6C6007CC6C6C6C6C67C00B6 -:102A7000FC66667C6060F0007CC6C6C6C6CE7C0E76 -:102A8000FC66667C6C66E6003C6630180C663C00B2 -:102A90007E7E5A1818183C00C6C6C6C6C6C67C003C -:102AA000C6C6C6C6C66C3800C6C6C6D6D6FE6C003C -:102AB000C6C66C386CC6C6006666663C18183C0014 -:102AC000FEC68C183266FE003C30303030303C00A0 -:102AD000C06030180C0602003C0C0C0C0C0C3C00C6 -:102AE00010386CC60000000000000000000000FF6D -:102AF00030180C00000000000000780C7CCC760040 -:102B0000E0607C666666DC0000007CC6C0C67C00B7 -:102B10001C0C7CCCCCCC760000007CC6FEC07C00BB -:102B20003C6660F86060F000000076CCCC7C0CF86D -:102B3000E0606C766666E6001800381818183C00ED -:102B4000060006060666663CE060666C786CE60089 -:102B50003818181818183C000000ECFED6D6D6001D -:102B60000000DC666666660000007CC6C6C67C00A7 -:102B70000000DC66667C60F0000076CCCC7C0C1E2D -:102B80000000DC766060F00000007EC07C06FC0087 -:102B90003030FC3030361C000000CCCCCCCC760081 -:102BA0000000C6C6C66C38000000C6D6D6FE6C0053 -:102BB0000000C66C386CC6000000C6C6C67E06FCA7 -:102BC00000007E4C18327E000E18187018180E0087 -:102BD00018181818181818007018180E18187000FF -:102BE00076DC0000000000000010386CC6C6FE0055 -:102BF0007CC6C0C0C67C0C78CC00CCCCCCCC7600DB -:102C00000C187CC6FEC07C007C82780C7CCC7600E4 -:102C1000C600780C7CCC76003018780C7CCC760022 -:102C20003030780C7CCC760000007EC0C07E0C3842 -:102C30007C827CC6FEC07C00C6007CC6FEC07C00D8 -:102C400030187CC6FEC07C006600381818183C009E -:102C50007C82381818183C003018003818183C00CE -:102C6000C6386CC6FEC6C600386C7CC6FEC6C6003A -:102C70001830FEC0F8C0FE0000007E187ED87E002E -:102C80003E6CCCFECCCCCE007C827CC6C6C67C0022 -:102C9000C6007CC6C6C67C0030187CC6C6C67C0092 -:102CA000788400CCCCCC76006030CCCCCCCC760018 -:102CB000C600C6C6C67E06FCC6386CC6C66C3800E2 -:102CC000C600C6C6C6C67C0018187EC0C07E1818CE -:102CD000386C64F06066FC0066663C7E187E1818EE -:102CE000F8CCCCFAC6CFC6C70E1B183C18D870005B -:102CF0001830780C7CCC76000C18003818183C0082 -:102D00000C187CC6C6C67C001830CCCCCCCC760067 -:102D100076DC00DC6666660076DC00E6F6DECE0079 -:102D20003C6C6C3E007E0000386C6C38007C00000F -:102D30001800181830633E00000000FEC0C00000FC -:102D4000000000FE0606000063E66C7E3366CC0FD2 -:102D500063E66C7A366ADF06180018183C3C1800E7 -:102D6000003366CC6633000000CC663366CC0000CE -:102D7000228822882288228855AA55AA55AA55AAAF -:102D800077DD77DD77DD77DD181818181818181833 -:102D900018181818F81818181818F818F818181813 -:102DA00036363636F636363600000000FE36363613 -:102DB0000000F818F81818183636F606F6363636C3 -:102DC00036363636363636360000FE06F6363636B7 -:102DD0003636F606FE00000036363636FE000000B7 -:102DE0001818F818F800000000000000F81818186B -:102DF000181818181F00000018181818FF000000F5 -:102E000000000000FF181818181818181F181818B4 -:102E100000000000FF00000018181818FF1818180C -:102E200018181F181F181818363636363736363623 -:102E3000363637303F00000000003F303736363638 -:102E40003636F700FF0000000000FF00F736363688 -:102E500036363730373636360000FF00FF000000C8 -:102E60003636F700F73636361818FF00FF00000038 -:102E700036363636FF0000000000FF00FF18181835 -:102E800000000000FF363636363636363F0000008A -:102E900018181F181F00000000001F181F1818180E -:102EA000000000003F36363636363636FF363636C8 -:102EB0001818FF18FF18181818181818F80000002C -:102EC000000000001F181818FFFFFFFFFFFFFFFFA3 -:102ED00000000000FFFFFFFFF0F0F0F0F0F0F0F076 -:102EE0000F0F0F0F0F0F0F0FFFFFFFFF000000006E -:102EF000000076DCC8DC760078CCCCD8CCC6CC0020 -:102F0000FEC6C0C0C0C0C0000000FE6C6C6C6C008F -:102F1000FEC6603060C6FE0000007ED8D8D87000C3 -:102F20000000666666667CC00076DC18181818001B -:102F30007E183C66663C187E386CC6FEC66C38004F -:102F4000386CC6C66C6CEE000E180C3E66663C0013 -:102F500000007EDBDB7E0000060C7EDBDB7E60C0DB -:102F60001E30607E60301E00007CC6C6C6C6C6002D -:102F700000FE00FE00FE000018187E1818007E00FB -:102F800030180C1830007E000C1830180C007E0031 -:102F90000E1B1B18181818181818181818D8D870DD -:102FA0000018007E001800000076DC0076DC0000CF -:102FB000386C6C3800000000000000181800000099 -:102FC00000000018000000000F0C0C0CEC6C3C1C06 -:102FD0006C36363636000000780C18307C00000065 -:102FE00000003C3C3C3C00000000000000000000F1 -:102FF0000101010000000000141517000B0B09006F -:103000000B110C0000183C6C7EFFFF0000002D002F -:043010007800F00054 +:100BA00023000100D13D9250130181028280711116 +:100BB0001305100806C0F13F83C761C0138781C2C7 +:100BC000BA97824003C507001101E1B797010020E1 +:100BD00093810183138141400965130505887310D2 +:100BE000053097F6FFFF9386E64193E63600739053 +:100BF00056301385C1C29385410601466356B50040 +:100C000010C11105E34EB5FE172500001305455828 +:100C1000938541C01386C1C26388C500144194C145 +:100C200011059105E39AC5FEB7F700E0054798C3A3 +:100C30008567938787D2739017347300203001A0A3 +:100C4000371702401C47B7068000D58F1CC72A966D +:100C5000AA876393C70082802380B7008507D5BF2A +:100C6000130600408145138541C6D5B781476313FC +:100C7000F60082803387F500834607003307F500CE +:100C800085072300D700E5B779711305100206D652 +:100C900022D426D2FD3D0145ED3D1305F007D53D9B +:100CA00013052002FD350145ED351D45138441C670 +:100CB000CD359304044093070004A2851306000277 +:100CC000130511002300F1005537930510020A8522 +:100CD000130404025533E31094FEB250225492548C +:100CE00045618280B7270240054798C3B717024085 +:100CF0003707080123A207001307170898C337070F +:100D00009F0098C7984393166700E3DD06FED8431B +:100D1000B7160240719B13672700D8C32147DC42F6 +:100D2000B18BE39EE7FE8280757106C722C526C39C +:100D3000553FB7170240D853B70600FC758F23AC58 +:100D4000E1C2D853B7060001B7140140558FD8D37C +:100D5000984F7D761306F60F1367570398CF1387C6 +:100D600004801443B70500F1FD1593F6F6F093E601 +:100D7000060114C3B706020014CB138704401443C2 +:100D8000054537030140F18E93E6061014C3B706FC +:100D9000040014CB9440C19A93E6860094C0144397 +:100DA000ED8EB7050008CD8E14C31443B70510FFB0 +:100DB000FD15ED8EB7058000CD8E14C388C8930550 +:100DC00000040CCB9306000214CB0327830091662A +:100DD000938626C0558F2324E30013070340144352 +:100DE00037E300E093E6160614C3544793E616066D +:100DF00054C7370710002320E310D84F9966938615 +:100E0000F6DB498FD8CF370700402314D70291660D +:100E1000938676A92316D702F956231AA70023181A +:100E2000D7008356C700C98E2316D70037050B009D +:100E30002322B310130505C8EFF06FAEB7170240B9 +:100E4000D84FB7062000558FD8CF984F136717019A +:100E500098CF9C407D771306F70F93F7F7F09CC06F +:100E60009C400567130707D093E7070D9CC09C4083 +:100E7000F18F9CC09C40D98F9CC08964EFF04FAB30 +:100E80009384C46FF13B03C504009307F00F631410 +:100E9000F500DD3B21A08504ED3975D5093BC9334B +:100EA000896793878771814490438546A68501456C +:100EB0003EC0EFF06FB6C93B1395140026950A05A6 +:100EC0001305054B42054181E545EFF0CFC43725B9 +:100ED000140013050544EFF08FA48247A9041307FB +:100EE00020039107E392E4FC8965938585C388001C +:100EF000EFF04FBB03A481C3AA8763580400896540 +:100F0000938505C4EFF00FBAAA871317140063592D +:100F1000070089653E85938585C4EFF0AFB8AA8741 +:100F2000131724006359070089653E85938505C51D +:100F3000EFF04FB7AA87131734006359070089658C +:100F40003E85938585C5EFF0EFB5AA87131744005A +:100F50006359070089653E85938505C6EFF08FB418 +:100F6000AA87131754006359070089653E85938546 +:100F700085C6EFF02FB3AA87D8006399E70089658B +:100F80003E85938505C7EFF0EFB1AA872380070060 +:100F9000854690009305C0020145EFF0EFA78965F3 +:100FA000938585C713056003EFF0EFF9F1399305D9 +:100FB00080071305C03DEFF00FB61304800CEFF06F +:100FC0000FFB1357850093570501A30CE102498FCE +:100FD000230DF102D98F230CA10293F7F70F81EBB8 +:100FE00075651305054C7D14EFF06F9369F8238F39 +:100FF00001C281440147814783C651C0DDEAB7077A +:101000000040F952B7F500E0A38E01C2238E01C261 +:10101000239207022398570003D70700136717008E +:101020002390E70003A705D15D9B23A8E5D07300BB +:10103000501003D70700C166F916758F2390E7009B +:1010400003C7D1C321C71305F00AA1368547A38280 +:10105000F1C023AA01C2239701C2EFF04FF1135749 +:10106000850093570501A308E1022309F102937655 +:10107000F50F1377F70F93F7F70F2308A10236CA7E +:101080003ACC3ECEF2446247D247BDB7938401C505 +:1010900003C7040135DBEFF06FC783C70401A5F375 +:1010A0001305F00AFD348547A382F1C023AA01C2CB +:1010B0006DB73EC43AC2EFF08FEB135685009377BD +:1010C000F50F935605013ECA9377F60F3ECC93F782 +:1010D000F60F3ECED247230AA102A30AC102230B78 +:1010E000D10202C0124789C7A24793B717003EC07A +:1010F000E24683470100814599C293351700724645 +:1011000013F7F50F814619C293B61400D98FD58F06 +:1011100099C323AA01C203C7E1C311466369E67EEE +:1011200009660A071306C6E632971843028785C187 +:1011300003C531C38D4536C20905EFE0FFFBA38926 +:10114000A1C2E54513057041EFF0EF9C924691CEA8 +:1011500003C531C38D450505EFE01FFAA389A1C280 +:10116000E54513057041EFF00F9B8247B5C3375734 +:101170005A641307070523A8E1C4938701C5130721 +:1011800040062382E70003C731C32393070023945B +:1011900007002385E7000547A385E70023A607008E +:1011A0002388E700238901C2238601C423A201C446 +:1011B0009305000513053029238FE1C223A401C440 +:1011C000EFF06F95930580071305C03DEFF0AF94E6 +:1011D000413C8965938585C80145EFF0CFD68546AA +:1011E00013060008A9450145EFF08FDB03C431C3A6 +:1011F0008D679387878313173400018F0A07BA9787 +:10120000904313070002BA86B54513050003EFF0BB +:10121000AFFA8965938585C98800EFF0AF88896743 +:101220000A049387C772A2978C43EFF0AF87896552 +:101230009385C5C9EFF00F87230005008C001305C7 +:10124000F002EFF04FD08965938505CA130580033E +:101250008DA985C103C521C39D4536C21905EFE09F +:10126000BFE92389A1C2E54513057041EFF0AF8ABC +:10127000924691CE03C521C39D450505EFE0DFE70A +:101280002389A1C2E54513057041EFF0CF8882475D +:10129000938401C5638E070E83C721C3994663E912 +:1012A000F60E89668A07938606E8B6979C4382877E +:1012B0008387040013074006F9076355F704BA87CC +:1012C0002380F4008387340013074006ED17635032 +:1012D000F704BA87A381F4001144238681C2314701 +:1012E0009305C003130500372388E1C2EFF0AF82F6 +:1012F0009305000513057049EFF0EF81EFF0AF881B +:10130000114569A013C7F7FF7D87F98F55BF13C734 +:10131000F7FF7D87F98F7DBF03872400B94763C935 +:10132000E700930580071305C00DEFE0DFFE8DA0F9 +:101330008387140093064006E50763D7F638B6871F +:10134000A380F400930747FF130740066353F70099 +:10135000BA872381F40009472386E1C29305C003BD +:1013600031471305C03D2388E1C2EFE0DFFA930562 +:10137000C00313057052EFE01FFA130500629305D6 +:10138000A005EFE05FF9EFF00F801945EFF04F8215 +:10139000EFF01F8D83C721C301453ED002578D67F3 +:1013A0009387C78B0A07BA978C43EFF0CFB983C7EF +:1013B00004013EC895C303874400F54763CEE700A8 +:1013C00083A701C4A18B89CB09668546130606CB8A +:1013D00081450145EFE05FE483C5B4009307C00495 +:1013E00013059103230CF102EFE0FFEC230005004D +:1013F00085463018814513050007EFE0FFE185467B +:1014000013060008A9450145EFF08FB903C4F400A5 +:101410006304043809668546130646CBB9451305AF +:10142000E004EFE07FDF09668546130686CBB14511 +:1014300013054005EFE05FDE930700033EC4C1479C +:101440003EC0930700033EC283C7C400096613066B +:10145000867B3EC632478D47630BF702B246114783 +:101460006386E63A424783C6A400194519C703C7F5 +:1014700001C3630F073403C5C1C293973600958F2C +:101480000D67AA978A0713078783BA979043824507 +:10149000224513070002BA8632C8EFF0EFD1424668 +:1014A00089679387877B630FF610896793878773B4 +:1014B000630AF61063180410B2476382071403C767 +:1014C000A4009387C1C0BA9703C40700938641C1A3 +:1014D000938701C1BA97369703C3070003470700F4 +:1014E000824692471D46B302D7009A979385E2FF42 +:1014F0001385D7FF014791461AD616D42ED23EC87F +:10150000EFE01FCC924792550147338587001D4677 +:1015100091467515EFE0DFCA32531D47C2473306C7 +:101520006440A2526352C702138547009307F00735 +:1015300063CCA7009385F2FF9307F00363C6B7005F +:1015400081466516EFF0CFA5324785476309F70A54 +:1015500092478D073ED2824712551384A7009247C7 +:10156000A285A5073ED4824722568907BE863EC87B +:10157000EFF04FA79247C2462255DD073E86B6855B +:101580003ED6EFF02FA69247C24532551386D701BB +:10159000A286EFF02FA582479D4611469385C7008E +:1015A0009247014713851700EFE09FC1824712550C +:1015B0009386870192471386A70082479385270168 +:1015C000EFF04FA232478D47631BF70203A401C41B +:1015D000824705461375340093854700A247791565 +:1015E0003E95EFE03FBA82471375140013050502DC +:1015F0009385A700A24705463E95EFE0BFB8854614 +:10160000130600089305E0020145EFF06F990144CD +:1016100083C7E4006360F42001440D671307C788A3 +:1016200093172400BA97931434009043A29441472F +:101630008604BA869305000313851400EFF0CFB734 +:1016400002579377F40F6319F700C5463686930562 +:10165000F0022685EFF06FAA05049D47E31FF4FA18 +:1016600083C7C1C46383072A0147E14613064007C5 +:10167000C9451945EFE0DFB4E14613064007C94507 +:101680001945EFF08FA789659385C5CB5545EFF0D8 +:101690008F8B8965938585CC8800EFE0BFC0B2470A +:1016A0000D671307878A8A07BA978C43EFE09FBFBD +:1016B00089659385C5CCEFE0FFBE230005008C0053 +:1016C0007D45EFF04F8891A493C6F7FFFD86F58F17 +:1016D00085B903C5F40093058007933715003335AA +:1016E000A0003305A0401375C50DA387F4001305B2 +:1016F000851B25B9838714009306400623870400C1 +:10170000A381D4009507138701C563D3F602B6877A +:101710009305200313057052A300F700EFE0BFBF4D +:101720001305704193052003EFE0FFBE0D45B9B9E5 +:1017300093C6F7FFFD86F58FE1BF8387440013074B +:101740004006938737026356F702BA879305C003B2 +:10175000130500312382F400EFE0FFBB9305C003C3 +:1017600013057041EFE03FBB9305A00513057052D0 +:1017700061B613C7F7FF7D87F98FC9BF8947238FEC +:10178000F1C2930580021305302945B69147238F96 +:10179000F1C2A38801C2F5B783A701C49305000570 +:1017A0003E853EC0EFE01F93130770028247636DD2 +:1017B000A7001307E5013AC42247A18BB337F00015 +:1017C000B9073AC23EC049B11307E006098FE5B731 +:1017D0001545E31404CA0386440075473E85E35E5D +:1017E000C7C8038614006147E359C7C803860400CD +:1017F0004D47E354C7C803A501C49305200336C869 +:10180000EFE05F8DC2461335450085B909661306C2 +:101810008673B5B913151400229521470A05BA86B7 +:10182000138681C1930560023A950504EFF0CF98C5 +:101830001374F40FF1BB89CB8547F94513050037C5 +:10184000238FF1C2EFE03FADEFF08FC18965938543 +:1018500005CD0145138401C5EFE0FFEE030604004A +:101860008965938505CE2945EFF08F8E0306140018 +:101870008965938585CE4D45EFF08F8D0306240055 +:101880008965938505CF7145EFF08F8C0306340091 +:101890008965938585CF13055002EFF06F8B0306A2 +:1018A00044008965938505D01305E002EFF04F8A67 +:1018B0008344B4009307C00413051104A6852300D4 +:1018C000F104EFE05F9F8965938585D0EFE09F9DF0 +:1018D0008D4763EC970A835584008604EFE0BF9D33 +:1018E0009307F0022300F500938701C2BE9483D5CD +:1018F00004000505EFE03F9C2300050085469000AD +:10190000930580030145EFE03F91EFF0EFB703C788 +:1019100041C08D67938707980607BA9783D707005A +:1019200003A441C389CB6368F4001305E00AEFF018 +:101930004FA6A38201C083C701C381C7FD172388B7 +:10194000F1C283C7C1C481C7FD172386F1C483C711 +:1019500001C681CF83D7E1C29306900F8507C207E6 +:10196000C18363EEF6242397F1C283A701C43785B0 +:10197000050005048507130505E423A0F1C423AA87 +:1019800081C2EFE0CFF96FF0EFEF8965938505D164 +:10199000EFE05F9195B791CD83C711C3E54513057E +:1019A00070418D078D8B36C2A388F1C2EFE0BF96E0 +:1019B000924681CE83C711C3E54513057041850763 +:1019C0008D8BA388F1C2EFE01F958247A1CF83C71B +:1019D00011C391EF03C541C099450505EFE0CFF173 +:1019E0002382A1C0930580021305003715A805477F +:1019F000639BE70083C761C085078D8B2383F1C09C +:101A0000EFF0EF9AC5B78946639CD71083C771C0C2 +:101A10009305C0031305C03D93B71700A383F1C01E +:101A2000EFE07F8FEFF0CFA38965938545D1014526 +:101A3000EFE07FD1854613060008A9450145EFE098 +:101A40003FD68965938545D28800EFE0BF8503C7FF +:101A500041C08D679387878E0A07BA978C43EFE062 +:101A60007F84896523000500938505D3130511053F +:101A7000EFE05F8303C761C08D679387878D0A0797 +:101A8000BA978C43EFE01F82896523000500938598 +:101A9000C5D313052106EFE0FF8083C771C0C9C716 +:101AA00089659385C5C0EFE0EFFF896523000500D8 +:101AB000938545D413053107EFE0CFFE23000500E1 +:101AC000AD440144938714003EC083C211C3137315 +:101AD000F40F631E53000547A94613060008A685A8 +:101AE000014516C21AC0EFE0AFED92420243131651 +:101AF0004400B306534022969C0093851400B336ED +:101B0000D0003E961145EFE02FF1AD0413077003AE +:101B10000504E399E4FA89659385C5D46FF00FF362 +:101B2000238FE1C2F945C9B58965938545C1A5BF34 +:101B3000824799CF9305000513053029238F01C2F1 +:101B4000EFE06FFD930580071305C03DEFE0AFFCAC +:101B5000EFF00F91130700020D66BA861306069088 +:101B6000894513050003EFE03FE5138701C5834670 +:101B7000D7000947138401C5639FE60289659385F1 +:101B800085C113054002EFE01FBC8965938505D62A +:101B90008800EFE02FF18345B400EFE0CFF12300A0 +:101BA00005008C001305E002EFE0FFB9896593851D +:101BB00005D76FF0AFE98965938585C2D9B72397BB +:101BC00001C2EFE0BF9455B361113EC0B7070140B9 +:101BD0003AC29387074013071006D8CB0547A38E58 +:101BE000E1C21247824721017300203061113AC2DD +:101BF0003EC07957B70700402398E7000547238E7A +:101C0000E1C2124782472101730020304F6E00006D +:101C1000000000004F6666002A2A20434F525255AA +:101C200050544544202A2A005345474641554C54B8 +:101C300020283131290000007273743A000000003E +:101C40004C5057200000000057574420000000006F +:101C50005744472000000000534654200000000075 +:101C6000504F52200000000050494E20000000005C +:101C70006E6F6E6500000000707265737320616E98 +:101C800079206B65790000007E20242061646F70EC +:101C900074202D2D706574003C200000203E000053 +:101CA0004C2F52207069636B20204F4B20676F00D0 +:101CB000210000007A0000005A0000003E3E20652E +:101CC000766F6C76696E67005B200000205D000017 +:101CD0007E2F7065742024207374617400000000EE +:101CE000464F4F440000000048415050590000004A +:101CF000454E455247590000434C45414E000000B7 +:101D00004845414C544800002020787020000000D5 +:101D10004D4158002D2053455454494E4753202DD2 +:101D20000000000053637265656E206F66663A00BE +:101D30004272696768743A2000000000536F756E44 +:101D4000643A20004261636B000000004C2F522077 +:101D50006D6F766520204F4B207573650000000085 +:101D6000636F72652064756D706564204C000000BF +:101D70004F4B3A207265737061776E0070616E61CF +:101D8000676F74636869207632000000626F6F7459 +:101D9000696E67206B65726E656C2E2E0000000008 +:101DA0006D6F756E74202F70657420206F6B00004E +:101DB000737061776E207368656C6C20206F6B00A8 +:101DC0003E202E2F74616D61676F746368695F00D8 +:101DD0005368656C6C00000050616E6B6F00000012 +:101DE000546D75780000000070726F630000000091 +:101DF0007573657200000000726F6F740000000060 +:101E0000436C617564650000676C69746368000009 +:101E10004645454400000000504C41590000000078 +:101E2000534C4545500000004845414C000000001F +:101E3000535441545300000053455454494E4753A2 +:101E4000000000004C6F77004D65640048696768CA +:101E5000000000004D6178003573000031307300E0 +:101E60003135730033307300363073002E110000AB +:101E70005212000036180000301B000096190000B6 +:101E8000B012000018130000D2160000F416000073 +:101E90003A1700007C1700008C17000000000000BB +:101EA00000000000000000001FFFFFF83FFFFFFCE4 +:101EB0003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC3E +:101EC0003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC2E +:101ED0003C07701C3FFF7FFC3FFF7FFC3FFF7FFC08 +:101EE0003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC0E +:101EF0003FFF7FFC3FFF7FFC3FFFFFFC2000000413 +:101F000027DF000427DF0004200000041FFFFFF884 +:101F100000000000000000000000000000000000C1 +:101F200000000000000000001FFFFFF83FFFFFFC63 +:101F30003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFCBD +:101F40003FFF7FFC3FFF7FFC3FBF7EFC3F1F7C7C51 +:101F50003E0F783C3F1F7C7C3FBF7EFC3FFF7FFCF9 +:101F60003FFF7FFC3FFF7FFC3FBF7EFC3C07701CB8 +:101F70003FFF7FFC3FFF7FFC3FFFFFFC2000000492 +:101F800027DF000427DF0004200000041FFFFFF804 +:101F90000000000000000000000000000000000041 +:101FA00000000000000000001FFFFFF83FFFFFFCE3 +:101FB0003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC3D +:101FC0003FFF7FFC3FFF7FFC3F5F7D7C3EAF7ABCE5 +:101FD0003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFC1D +:101FE0003FFF7FFC3FFF7FFC3C03601C3FFF7FFC0B +:101FF0003FFF7FFC3FFF7FFC3FFFFFFC2000000412 +:1020000027DF000427DF0004200000041FFFFFF883 +:1020100000000000000000000000000000000000C0 +:1020200000000000000000001FFFFFF83FFFFFFC62 +:102030003FFF7FFC3FFF7FFC3FFF7FFC3FFF7FFCBC +:102040003FFF7FFC3FBF7EFC3F1F7C7C3E0F783C08 +:102050003F1F7C7C3FBF7EFC3FFF7FFC3FFF7FFC40 +:102060003FFF7FFC3C07701C3FFF7FFC3FFF7FFC76 +:102070003FFF7FFC3FFF7FFC3FFFFFFC2000000491 +:1020800027DF000427DF0004200000041FFFFFF803 +:1020900000000000000000000000000000008000C0 +:1020A000001088000011880000318C000039DC002D +:1020B000003BDC00007FFE00007FFE0000F83F00D8 +:1020C00000E7C70000DFFB0001BFFD8001FFFF80CC +:1020D00003FFFFC003FFFFC003DBDBC003E7E7C074 +:1020E00003E7E7C003DBDBC001FDDF8001FABF804F +:1020F00000F77F00007FFE0001FFFFC001FFFFC06F +:1021000003FFFFE003FFFFE003FFFFE007FFFFF037 +:1021100007FFFFF00FFFFFF80FFFFFF80000800040 +:1021200000108800001188F000318C200039DC405C +:10213000003BDCF0007FFE00007FFE0000F83F0067 +:1021400000E7C70000DFFB0001BFFD8001FFFF804B +:1021500003FFFFC003FFFFC003FFFFC003C3C3C0F3 +:1021600003FFFFC003FFFFC001FFFF8001FE7F8070 +:1021700000FFFF00007FFE0001FFFFC001FFFFC066 +:1021800003FFFFE003FFFFE003FFFFE007FFFFF0B7 +:1021900007FFFFF00FFFFFF80FFFFFF800008000C0 +:1021A000001088000011880000318C000039DC002C +:1021B000003BDC00007FFE00007FFE0000F83F00D7 +:1021C00000E7C70000DFFB0001BFFD8001FFFF80CB +:1021D00003FFFFC003FFFFC003E7E7C003E7E7C05B +:1021E00003FFFFC003FFFFC001FC3F8001FD3F80F4 +:1021F00000FCBF00007C3E0001FFFFC001FFFFC0EC +:1022000003FFFFE003FFFFE003FFFFE007FFFFF036 +:1022100007FFFFF00FFFFFF80FFFFFF8000080003F +:10222000001088000011880000318C000039DC00AB +:10223000003BDC00007FFE00007FFE0000F83F0056 +:1022400000E7C70000DFFB0001BFFD8001FFFF804A +:10225000039FF9C003E7E7C003FFFFC003E7E7C040 +:1022600003E7E7C003FFFFC001FFFF8001FFFF801E +:1022700000FC3F00007BDE0001F7EFC001FFFFC064 +:1022800003FFFFE003FFFFE003FFFFE007FFFFF0B6 +:1022900007FFFFF00FFFFFF80FFFFFF800008000BF +:1022A000001088000011880000318C000039DC002B +:1022B000003BDC00007FFE00007FFE0000F83F00D6 +:1022C00000E7C70000DFFB0001BFFD8001FFFF80CA +:1022D00003FFFFC003FFFFC003EFF7C003E7EBC03E +:1022E00003DBDBC003FFFFC001FFFF8001F7EF80CE +:1022F00000F7EF00007BDE0001FC3FC001FFFFC0E4 +:1023000003FFFFE003FFFFE003FFFFE007FFFFF035 +:1023100007FFFFF00FFFFFF80FFFFFF8000080003E +:10232000001088000011880000318C000039DC00AA +:10233000003BDC00007FFE00007FFE0000F83F0055 +:1023400000E7C70000DFFB0001BFFD8001FFFF8049 +:1023500003FFFFC003FFFFC003FFFFC003C3C3C0F1 +:1023600003FFFFC003FFFFC001FFFF8001FC3F80B0 +:1023700000FFFF00007FFE0001FFFFC001FFFFC064 +:1023800003FFFFE003FFFFE003FFFFE007FFFFF0B5 +:1023900007FFFFF00FFFFFF80FFFFFF800008000BE +:1023A000001088000011880000318C000039DC002A +:1023B000003BDC00007FFE00007FFE0000F83F00D5 +:1023C00000E7C70000DFFB0001BFFD8001FFFF80C9 +:1023D00003FFFFC003FFFFC003E7E7C003E7E7C059 +:1023E00003FFFFC003FFFFC001FFFF8001FC3F8030 +:1023F00000FFFF00007FFE0001FFFFC001FFFFC0E4 +:1024000003FFFFE003FFFFE003FFFFE007FFFFF034 +:1024100007FFFFF00FFFFFF80FFFFFF800000000BD +:10242000000000000000000007FFFFE00FFFFFF0CA +:102430000FFFFFF00FFFFFF00FFFFFF00FFFFFF0A8 +:102440000FFFFFF00FFFFFF00FFFFFF00F0180F015 +:102450000FFFFFF00FFFFFF00FFFFFF00FFFFFF088 +:102460000FFFFFF00FFFFFF00FFFFFF00FF80FF06F +:102470000FFFFFF00FFFFFF00FFFFFF00FFFFFF068 +:1024800007FFFFE00007E0000007E0000007E000B2 +:10249000007FFE00007FFE00007FFE0000000000C5 +:1024A000000000000000000007FFFFE00FFFFFF04A +:1024B0000FFFFFF00FFFFFF00FFFFFF00FFFFFF028 +:1024C0000FFFFFF00FEFF7F00FC7E3F00F83C1F03E +:1024D0000FC7E3F00FEFF7F00FFFFFF00FFFFFF074 +:1024E0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0F8 +:1024F0000FFFFFF00FF81FF00FC7E3F00FFFFFF023 +:1025000007FFFFE00007E0000007E0000007E00031 +:10251000007FFE00007FFE00007FFE000000000044 +:10252000000000000000000007FFFFE00FFFFFF0C9 +:102530000FFFFFF00FFFFFF00FFFFFF00FFFFFF0A7 +:102540000FFFFFF00FDFEFF00FAFD7F00FFFFFF03F +:102550000FFFFFF00FFFFFF00FFFFFF00FFFFFF087 +:102560000FFFFFF00FFFFFF00FC7E3F00FF81FF0B2 +:102570000FFFFFF00FFFFFF00FFFFFF00FFFFFF067 +:1025800007FFFFE00007E0000007E0000007E000B1 +:10259000007FFE00007FFE00007FFE0000000000C4 +:1025A000000000000000000007FFFFE00FFFFFF049 +:1025B0000FFFFFF00FFFFFF00FFFFFF00FFFFFF027 +:1025C0000FEFF7F00FC7E3F00F83C1F00FC7E3F091 +:1025D0000FEFF7F00FFFFFF00FFFFFF00FFFFFF01F +:1025E0000FFFFFF00F7FFFF00FBFFFF00FDFFFF0D7 +:1025F0000FBFFFF00F780FF00FFFFFF00FFFFFF09E +:1026000007FFFFE00007E0000007E0000007E00030 +:10261000007FFE00007FFE00007FFE0003C003C0BD +:1026200003C007F00FF81FFCFF7FFE3FFC1FFE3FBB +:102630001F7C1FFC0FF807F003C003C00000000060 +:10264000000000C000C000C006C006C006D806D802 +:1026500036D836D836D836D80000000000000080C2 +:1026600007F00FF81C3C3C3E300E300E700F300E61 +:102670003C3E3C3E1FFC0FF807F0008000000000CD +:102680000080008001C001C007F00DF80DF808F8C7 +:102690001DFC0DF80FF80FF807F000800000000097 +:1026A000000004000C001C0018001C003C001C0072 +:1026B0001E001F000FE807F000800000000000006F +:1026C000077000001F7C3F7E3F7E3F7E00003F7E04 +:1026D0003F7E3F7E1F7C000007700000000000006E +:1026E00000A001900FE01BF03BF831F83BF87BFCB9 +:1026F0003FF83FF83FF81FF00FE00100AED580A88B +:102700003FD300408D142000A1C8DA12818FD9F187 +:10271000DB40A4A6AFFF00007C1D00008C1D000064 +:10272000A01D0000B01D0000C01D0000D01D000055 +:10273000D81D0000E01D00000000000000000000A7 +:102740000000000000000000000000020000000087 +:10275000000000000000000080008000000FF80072 +:102760000015540000FFFF8001FFFFC003FFFFE0E2 +:102770000111444107D7F5F007EFFBF007D7F5F05B +:10278000051144500FFFFFF807FFFFF007FFFFF0B0 +:102790000555555007EAABF043FFFFE003FFFFE0AC +:1027A0000155554000FFFF80003FFE00000FF80478 +:1027B00020000000000000000000000000000000F9 +:1027C0000000002000000020040000A80E000020EF +:1027D000040003FE00000020000080A8000FF82085 +:1027E000003FFE20007FFF0000FFFF8001FFFFC0D1 +:1027F00001FFFFC003FFFFE003F7F7E003F7F7E097 +:1028000003E3E3E007F7F7F003F7F7E003FFFFE088 +:1028100003FFFFE003E7F3E001F80FC001FFFFC093 +:1028200000FFFF80007FFF00003FFE00000FF80068 +:1028300000008000000000009C2500009C25000096 +:102840001C2500009C2400001C2500001C24000006 +:102850009C2400009C2300001C2300009C220000FC +:102860001C2200009C2100001C2100009C20000074 +:102870001C2000001C2000009C1F00001C1F0000EA +:102880009C1F00009C1E00001C1F0000DC26000096 +:10289000BC2600009C2600007C2600005C26000070 +:1028A0003C2600001C260000E81D0000F01D000072 +:1028B000F81D0000001E0000081E0000101E000091 +:1028C000181E0000201E0000F81C0000281E00003A +:1028D000301E0000381E0000441E0000481E00008C +:1028E0004C1E0000541E0000581E00005C1E00001C +:1028F000601E0000641E0000681E0000141C000022 +:10290000000000000000000000FFFC0003FFFF00CB +:1029100007FFFF80061FE1800630318006303180DE +:10292000063FC30006330300063183000630C300B0 +:1029300006000600060F060007FFFF800FFFFFC01E +:102940001FFFFFE03FFFFFF07FFFFFF8FFFFFFFCEF +:10295000FFFFFFFC00F0F00003FFF0000FFFFC00A2 +:102960000000000000000000000000000000000067 +:102970000000000000000000000000000000000057 +:102980005300A700FA00F401E80300000000000073 +:10299000000000007E81A581BD99817E7EFFDBFF66 +:1029A000C3E7FF7E6CFEFEFE7C38100010387CFE14 +:1029B0007C381000387C38FEFED6103810387CFE8B +:1029C000FE7C10380000183C3C180000FFFFE7C3F5 +:1029D000C3E7FFFF003C664242663C00FFC399BD6F +:1029E000BD99C3FF0F070F7DCCCCCC783C666666E3 +:1029F0003C187E183F333F303070F0E07F637F63D8 +:102A00006367E6C018DB3CE7E73CDB1880E0F8FED4 +:102A1000F8E08000020E3EFE3E0E0200183C7E18DA +:102A2000187E3C1866666666660066007FDBDB7BA8 +:102A30001B1B1B003E613C66663C867C0000000060 +:102A40007E7E7E00183C7E187E3C18FF183C7E1867 +:102A500018181800181818187E3C180000180CFEDA +:102A60000C180000003060FE603000000000C0C0A4 +:102A7000C0FE0000002466FF6624000000183C7EB3 +:102A8000FFFF000000FFFF7E3C1800000000000078 +:102A900000000000183C3C1818001800666624006E +:102AA000000000006C6CFE6CFE6C6C00183E603C1C +:102AB000067C180000C6CC183066C600386C387624 +:102AC000DCCC760018183000000000000C18303004 +:102AD00030180C0030180C0C0C18300000663CFF4D +:102AE0003C6600000018187E181800000000000066 +:102AF000001818300000007E0000000000000000F8 +:102B000000181800060C183060C08000386CC6D65B +:102B1000C66C38001838181818187E007CC6061CB9 +:102B20003066FE007CC6063C06C67C001C3C6CCCB5 +:102B3000FE0C1E00FEC0C0FC06C67C003860C0FC57 +:102B4000C6C67C00FEC60C18303030007CC6C67C81 +:102B5000C6C67C007CC6C67E060C7800001818002D +:102B6000001818000018180000181830060C18304B +:102B7000180C060000007E00007E00006030180C7B +:102B8000183060007CC60C18180018007CC6DEDE09 +:102B9000DEC07800386CC6FEC6C6C600FC66667C21 +:102BA0006666FC003C66C0C0C0663C00F86C6666A9 +:102BB000666CF800FE6268786862FE00FE62687803 +:102BC0006860F0003C66C0C0CE663A00C6C6C6FE6D +:102BD000C6C6C6003C18181818183C001E0C0C0C71 +:102BE000CCCC7800E6666C786C66E600F0606060DD +:102BF0006266FE00C6EEFEFED6C6C600C6E6F6DE7D +:102C0000CEC6C6007CC6C6C6C6C67C00FC66667C50 +:102C10006060F0007CC6C6C6C6CE7C0EFC66667CD4 +:102C20006C66E6003C6630180C663C007E7E5A18E6 +:102C300018183C00C6C6C6C6C6C67C00C6C6C6C6F0 +:102C4000C66C3800C6C6C6D6D6FE6C00C6C66C3882 +:102C50006CC6C6006666663C18183C00FEC68C183A +:102C60003266FE003C30303030303C00C0603018FE +:102C70000C0602003C0C0C0C0C0C3C0010386CC612 +:102C80000000000000000000000000FF30180C00F1 +:102C9000000000000000780C7CCC7600E0607C66D0 +:102CA0006666DC0000007CC6C0C67C001C0C7CCCC8 +:102CB000CCCC760000007CC6FEC07C003C6660F890 +:102CC0006060F000000076CCCC7C0CF8E0606C76A4 +:102CD0006666E6001800381818183C00060006065C +:102CE0000666663CE060666C786CE600381818187A +:102CF00018183C000000ECFED6D6D6000000DC66BA +:102D00006666660000007CC6C6C67C000000DC6605 +:102D1000667C60F0000076CCCC7C0C1E0000DC767B +:102D20006060F00000007EC07C06FC003030FC30AB +:102D300030361C000000CCCCCCCC76000000C6C6DF +:102D4000C66C38000000C6D6D6FE6C000000C66C0B +:102D5000386CC6000000C6C6C67E06FC00007E4C6D +:102D600018327E000E18187018180E00181818184F +:102D7000181818007018180E1818700076DC00006B +:102D8000000000000010386CC6C6FE007CC6C0C043 +:102D9000C67C0C78CC00CCCCCCCC76000C187CC695 +:102DA000FEC07C007C82780C7CCC7600C600780C5F +:102DB0007CCC76003018780C7CCC76003030780CE7 +:102DC0007CCC760000007EC0C07E0C387C827CC645 +:102DD000FEC07C00C6007CC6FEC07C0030187CC6ED +:102DE000FEC07C006600381818183C007C82381839 +:102DF00018183C003018003818183C00C6386CC64B +:102E0000FEC6C600386C7CC6FEC6C6001830FEC0C2 +:102E1000F8C0FE0000007E187ED87E003E6CCCFE1E +:102E2000CCCCCE007C827CC6C6C67C00C6007CC6EC +:102E3000C6C67C0030187CC6C6C67C00788400CC30 +:102E4000CCCC76006030CCCCCCCC7600C600C6C6EC +:102E5000C67E06FCC6386CC6C66C3800C600C6C640 +:102E6000C6C67C0018187EC0C07E1818386C64F086 +:102E70006066FC0066663C7E187E1818F8CCCCFABA +:102E8000C6CFC6C70E1B183C18D870001830780C77 +:102E90007CCC76000C18003818183C000C187CC646 +:102EA000C6C67C001830CCCCCCCC760076DC00DCFE +:102EB0006666660076DC00E6F6DECE003C6C6C3EB4 +:102EC000007E0000386C6C38007C00001800181878 +:102ED00030633E00000000FEC0C00000000000FEA5 +:102EE0000606000063E66C7E3366CC0F63E66C7A00 +:102EF000366ADF06180018183C3C1800003366CC10 +:102F00006633000000CC663366CC0000228822883D +:102F10002288228855AA55AA55AA55AA77DD77DDB9 +:102F200077DD77DD181818181818181818181818D9 +:102F3000F81818181818F818F818181836363636F9 +:102F4000F636363600000000FE3636360000F81839 +:102F5000F81818183636F606F63636363636363659 +:102F6000363636360000FE06F63636363636F60685 +:102F7000FE00000036363636FE0000001818F8183D +:102F8000F800000000000000F818181818181818A9 +:102F90001F00000018181818FF00000000000000B3 +:102FA000FF181818181818181F1818180000000013 +:102FB000FF00000018181818FF18181818181F1804 +:102FC0001F18181836363636373636363636373016 +:102FD0003F00000000003F30373636363636F70007 +:102FE000FF0000000000FF00F73636363636373077 +:102FF000373636360000FF00FF0000003636F70097 +:10300000F73636361818FF00FF0000003636363621 +:10301000FF0000000000FF00FF181818000000006B +:10302000FF363636363636363F00000018181F1881 +:103030001F00000000001F181F18181800000000D3 +:103040003F36363636363636FF3636361818FF18DF +:10305000FF18181818181818F800000000000000D1 +:103060001F181818FFFFFFFFFFFFFFFF0000000001 +:10307000FFFFFFFFF0F0F0F0F0F0F0F00F0F0F0F98 +:103080000F0F0F0FFFFFFFFF00000000000076DCB6 +:10309000C8DC760078CCCCD8CCC6CC00FEC6C0C08C +:1030A000C0C0C0000000FE6C6C6C6C00FEC66030DE +:1030B00060C6FE0000007ED8D8D8700000006666AA +:1030C00066667CC00076DC18181818007E183C660E +:1030D000663C187E386CC6FEC66C3800386CC6C6B6 +:1030E0006C6CEE000E180C3E66663C0000007EDB49 +:1030F000DB7E0000060C7EDBDB7E60C01E30607E67 +:1031000060301E00007CC6C6C6C6C60000FE00FEBB +:1031100000FE000018187E1818007E0030180C18E9 +:1031200030007E000C1830180C007E000E1B1B189F +:10313000181818181818181818D8D8700018007E01 +:10314000001800000076DC0076DC0000386C6C387B +:103150000000000000000018180000000000001827 +:10316000000000000F0C0C0CEC6C3C1C6C3636366E +:1031700036000000780C18307C00000000003C3C59 +:0C3180003C3C00000000000000000000CB +:10318C000101010100000000141517000B0B0900D0 +:10319C000B110C0000183C6C7EFFFF0000002D0092 +:0831AC007800F000013080CF33 :00000001FF diff --git a/tama.lst b/tama.lst index c2a737f..cb95600 100644 --- a/tama.lst +++ b/tama.lst @@ -11,38 +11,38 @@ Disassembly of section .init: { #if !defined(FUNCONF_TINYVECTOR) || !FUNCONF_TINYVECTOR asm volatile( DEFAULT_INTERRUPT_VECTOR_CONTENTS ); - 0: 3af0006f j bae + 0: 3cd0006f j bcc 4: 00000000 .word 0x00000000 - 8: 00000c22 .word 0x00000c22 - c: 00000c20 .word 0x00000c20 + 8: 00000c40 .word 0x00000c40 + c: 00000c3e .word 0x00000c3e ... - 30: 00000c20 .word 0x00000c20 + 30: 00000c3e .word 0x00000c3e 34: 00000000 .word 0x00000000 - 38: 00000c20 .word 0x00000c20 + 38: 00000c3e .word 0x00000c3e 3c: 00000000 .word 0x00000000 - 40: 00000c20 .word 0x00000c20 - 44: 00000c20 .word 0x00000c20 - 48: 00000c20 .word 0x00000c20 - 4c: 00000c20 .word 0x00000c20 - 50: 00001a9a .word 0x00001a9a - 54: 00000c20 .word 0x00000c20 - 58: 00000c20 .word 0x00000c20 - 5c: 00000c20 .word 0x00000c20 - 60: 00000c20 .word 0x00000c20 - 64: 00000c20 .word 0x00000c20 - 68: 00000c20 .word 0x00000c20 - 6c: 00000c20 .word 0x00000c20 - 70: 00000c20 .word 0x00000c20 - 74: 00000c20 .word 0x00000c20 - 78: 00000c20 .word 0x00000c20 - 7c: 00000c20 .word 0x00000c20 - 80: 00000c20 .word 0x00000c20 - 84: 00000c20 .word 0x00000c20 - 88: 00000c20 .word 0x00000c20 - 8c: 00000c20 .word 0x00000c20 - 90: 00000c20 .word 0x00000c20 - 94: 00000c20 .word 0x00000c20 - 98: 00001abe .word 0x00001abe + 40: 00000c3e .word 0x00000c3e + 44: 00000c3e .word 0x00000c3e + 48: 00000c3e .word 0x00000c3e + 4c: 00000c3e .word 0x00000c3e + 50: 00001bc8 .word 0x00001bc8 + 54: 00000c3e .word 0x00000c3e + 58: 00000c3e .word 0x00000c3e + 5c: 00000c3e .word 0x00000c3e + 60: 00000c3e .word 0x00000c3e + 64: 00000c3e .word 0x00000c3e + 68: 00000c3e .word 0x00000c3e + 6c: 00000c3e .word 0x00000c3e + 70: 00000c3e .word 0x00000c3e + 74: 00000c3e .word 0x00000c3e + 78: 00000c3e .word 0x00000c3e + 7c: 00000c3e .word 0x00000c3e + 80: 00000c3e .word 0x00000c3e + 84: 00000c3e .word 0x00000c3e + 88: 00000c3e .word 0x00000c3e + 8c: 00000c3e .word 0x00000c3e + 90: 00000c3e .word 0x00000c3e + 94: 00000c3e .word 0x00000c3e + 98: 00001bec .word 0x00001bec 9c: 0000 unimp ... @@ -149,7 +149,7 @@ void ssd1306_i2c_setup(void) 14e: 4047d703 lhu a4,1028(a5) # 40005404 <_eusrstack+0x20004c04> tempreg &= ~I2C_CTLR2_FREQ; 152: 66c1 lui a3,0x10 - 154: fc068693 addi a3,a3,-64 # ffc0 + 154: fc068693 addi a3,a3,-64 # ffc0 158: 8f75 and a4,a4,a3 tempreg |= (FUNCONF_SYSTEM_CORE_CLOCK/SSD1306_I2C_PRERATE)&I2C_CTLR2_FREQ; 15a: 01876713 ori a4,a4,24 @@ -206,7 +206,7 @@ void ssd1306_drawPixel(uint32_t x, uint32_t y, int color) /* set/clear bit in buffer */ if(color) ssd1306_buffer[addr] |= (1<<(y&7)); - 19c: c5c18513 addi a0,gp,-932 # 20000058 + 19c: c6418513 addi a0,gp,-924 # 20000060 1a0: 953e add a0,a0,a5 1a2: 899d andi a1,a1,7 1a4: 4705 li a4,1 @@ -313,9 +313,9 @@ void ssd1306_drawstr(int x, int y, const char *str, uint8_t color) 232: 4701 li a4,0 d = fontdata[(chr<<3)+i]; 234: 00339793 slli a5,t2,0x3 - 238: 6609 lui a2,0x2 + 238: 660d lui a2,0x3 23a: 97ba add a5,a5,a4 - 23c: 7f060613 addi a2,a2,2032 # 27f0 + 23c: 98c60613 addi a2,a2,-1652 # 298c 240: 97b2 add a5,a5,a2 242: 0007c303 lbu t1,0(a5) 246: 4781 li a5,0 @@ -444,7 +444,7 @@ static char *u_cat(char *p, unsigned v) static void beep(uint16_t freq, uint16_t ms) { if (!sound_on) return; - 316: c061c783 lbu a5,-1018(gp) # 20000002 + 316: c071c783 lbu a5,-1017(gp) # 20000003 31a: c7ad beqz a5,384 { 31c: 1131 addi sp,sp,-20 @@ -454,7 +454,7 @@ static void beep(uint16_t freq, uint16_t ms) uint32_t half = 500000u / freq; // half-period in us 322: 85aa mv a1,a0 324: 0007a537 lui a0,0x7a - 328: 12050513 addi a0,a0,288 # 7a120 + 328: 12050513 addi a0,a0,288 # 7a120 { 32c: c806 sw ra,16(sp) 32e: c426 sw s1,8(sp) @@ -532,7 +532,7 @@ static void led_blink(void) funDigitalWrite(LED_PIN, FUN_HIGH); 39a: c81c sw a5,16(s0) Delay_Ms(30); - 39c: f2050513 addi a0,a0,-224 # 2bf20 + 39c: f2050513 addi a0,a0,-224 # 2bf20 3a0: 3bbd jal 11e funDigitalWrite(LED_PIN, FUN_LOW); 3a2: 000207b7 lui a5,0x20 @@ -552,14 +552,14 @@ static void led_blink(void) static void add_xp(uint8_t n) { if (!pet.alive) return; - 3b0: c4818713 addi a4,gp,-952 # 20000044 + 3b0: c5018713 addi a4,gp,-944 # 2000004c 3b4: 01074703 lbu a4,16(a4) 3b8: c371 beqz a4,47c - 3ba: c4818793 addi a5,gp,-952 # 20000044 + 3ba: c5018793 addi a5,gp,-944 # 2000004c if (pet.xp < 60000) pet.xp += n; - 3be: 0087d683 lhu a3,8(a5) # 20008 + 3be: 0087d683 lhu a3,8(a5) # 20008 3c2: 673d lui a4,0xf - 3c4: a5f70713 addi a4,a4,-1441 # ea5f + 3c4: a5f70713 addi a4,a4,-1441 # ea5f 3c8: 02d76663 bltu a4,a3,3f4 3cc: 9536 add a0,a0,a3 3ce: 0542 slli a0,a0,0x10 @@ -618,7 +618,7 @@ static void add_xp(uint8_t n) 43c: 03c00593 li a1,60 440: 31000513 li a0,784 evo_anim = 30; // ~1.8 s celebratory banner - 444: c4e18223 sb a4,-956(gp) # 20000040 + 444: c4e18623 sb a4,-948(gp) # 20000048 beep(784, 60); beep(988, 60); beep(1175, 60); beep(1568, 140); 448: 35f9 jal 316 44a: 03c00593 li a1,60 @@ -664,7 +664,7 @@ static void notify(uint8_t idx, int8_t val) { 488: 87aa mv a5,a0 if (val < 20) { - 48a: c4018413 addi s0,gp,-960 # 2000003c + 48a: c4818413 addi s0,gp,-952 # 20000044 48e: 04b74463 blt a4,a1,4d6 if (!crit_flag[idx]) { // urgent: descending triple 492: 942a add s0,s0,a0 @@ -683,7 +683,7 @@ static void notify(uint8_t idx, int8_t val) 4b8: 3db9 jal 316 crit_flag[idx] = 1; warn_flag[idx] = 1; 4ba: 4782 lw a5,0(sp) - 4bc: c3c18713 addi a4,gp,-964 # 20000038 + 4bc: c4418713 addi a4,gp,-956 # 20000040 4c0: 4685 li a3,1 4c2: 97ba add a5,a5,a4 4c4: 00d40023 sb a3,0(s0) @@ -700,7 +700,7 @@ static void notify(uint8_t idx, int8_t val) 4d2: 0141 addi sp,sp,16 4d4: 8082 ret } else if (val < 50) { - 4d6: c3c18493 addi s1,gp,-964 # 20000038 + 4d6: c4418493 addi s1,gp,-956 # 20000040 4da: 03100713 li a4,49 if (!warn_flag[idx]) { // gentle: single chirp 4de: 94aa add s1,s1,a0 @@ -734,7 +734,7 @@ static void notify(uint8_t idx, int8_t val) static void game_tick(void) { pet.age_min++; - 50c: c4818793 addi a5,gp,-952 # 20000044 + 50c: c5018793 addi a5,gp,-944 # 2000004c 510: 0067d583 lhu a1,6(a5) { 514: 1161 addi sp,sp,-8 @@ -760,7 +760,7 @@ static void game_tick(void) 530: 177d addi a4,a4,-1 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } 532: 06400793 li a5,100 - 536: c4818413 addi s0,gp,-952 # 20000044 + 536: c5018413 addi s0,gp,-944 # 2000004c 53a: 08e7d663 bge a5,a4,5c6 53e: 873e mv a4,a5 540: 0762 slli a4,a4,0x18 @@ -768,7 +768,7 @@ static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } if (pet.sleeping) { 544: ca59 beqz a2,5da pet.energy = clamp100(pet.energy + 6); - 546: 00668793 addi a5,a3,6 # 40006 + 546: 00668793 addi a5,a3,6 # 40006 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } 54a: 06400513 li a0,100 54e: 08f55163 bge a0,a5,5d0 @@ -812,7 +812,7 @@ static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } ((pet.age_min * 7u + frame) & 0x1F) == 0) 598: 00359693 slli a3,a1,0x3 59c: 8e8d sub a3,a3,a1 - 59e: c381a583 lw a1,-968(gp) # 20000034 + 59e: c401a583 lw a1,-960(gp) # 2000003c 5a2: 96ae add a3,a3,a1 5a4: 8afd andi a3,a3,31 if (!pet.sleeping && pet.poop < 3 && @@ -862,7 +862,7 @@ static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } 5fc: 06400513 li a0,100 pet.happy = clamp100(pet.happy - 1); - 600: c4818313 addi t1,gp,-952 # 20000044 + 600: c5018313 addi t1,gp,-944 # 2000004c static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } 604: 00d55b63 bge a0,a3,61a 608: 86aa mv a3,a0 @@ -962,7 +962,7 @@ static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } pet.alive = 0; 6d2: 00040823 sb zero,16(s0) screen = SCR_DEAD; - 6d6: c2e18b23 sb a4,-970(gp) # 20000032 + 6d6: c2e18f23 sb a4,-962(gp) # 2000003a beep(330, 200); beep(247, 200); beep(165, 400); 6da: 3935 jal 316 6dc: 0c800593 li a1,200 @@ -1431,7 +1431,7 @@ void ssd1306_drawImage(uint32_t x, uint32_t y, const unsigned char* input, uint3 buffer_addr = x_absolute + SSD1306_W * (y_absolute / 8); a26: 00e48633 add a2,s1,a4 ssd1306_buffer[buffer_addr] = (ssd1306_buffer[buffer_addr] & ~v_mask) | (input_pixel ? v_mask : 0); - a2a: c5c18513 addi a0,gp,-932 # 20000058 + a2a: c6418513 addi a0,gp,-924 # 20000060 a2e: 9532 add a0,a0,a2 a30: 00014303 lbu t1,0(sp) uint8_t input_pixel = input_byte & (0x80 >> pixel); // MSB first (default) @@ -1477,7 +1477,7 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) while((I2C1->STAR2 & I2C_STAR2_BUSY) && (timeout--)); a7a: 400057b7 lui a5,0x40005 timeout = TIMEOUT_MAX; - a7e: 6a070713 addi a4,a4,1696 # 186a0 + a7e: 6a070713 addi a4,a4,1696 # 186a0 while((I2C1->STAR2 & I2C_STAR2_BUSY) && (timeout--)); a82: 40078793 addi a5,a5,1024 # 40005400 <_eusrstack+0x20004c00> a86: 567d li a2,-1 @@ -1504,7 +1504,7 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) aa2: 0111 addi sp,sp,4 aa4: 8082 ret aa6: 67e1 lui a5,0x18 - aa8: 6a178793 addi a5,a5,1697 # 186a1 + aa8: 6a178793 addi a5,a5,1697 # 186a1 while(!(I2C1->STAR1 & I2C_STAR1_TXE) && (timeout--)); aac: 01475683 lhu a3,20(a4) ab0: 0806f693 andi a3,a3,128 @@ -1525,11 +1525,11 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_BYTE_TRANSMITTED)) && (timeout--)); ad0: 00070637 lui a2,0x70 timeout = TIMEOUT_MAX; - ad4: 6a068693 addi a3,a3,1696 # 186a0 + ad4: 6a068693 addi a3,a3,1696 # 186a0 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); ad8: 40070713 addi a4,a4,1024 # 40005400 <_eusrstack+0x20004c00> while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_BYTE_TRANSMITTED)) && (timeout--)); - adc: 08460613 addi a2,a2,132 # 70084 + adc: 08460613 addi a2,a2,132 # 70084 ae0: 55fd li a1,-1 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); ae2: 01475503 lhu a0,20(a4) @@ -1566,11 +1566,11 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && (timeout--)); b26: 00070737 lui a4,0x70 timeout = TIMEOUT_MAX; - b2a: 6a060613 addi a2,a2,1696 # 186a0 + b2a: 6a060613 addi a2,a2,1696 # 186a0 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); b2e: 40068693 addi a3,a3,1024 # 40005400 <_eusrstack+0x20004c00> while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && (timeout--)); - b32: 08270713 addi a4,a4,130 # 70082 + b32: 08270713 addi a4,a4,130 # 70082 b36: 537d li t1,-1 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); b38: 0146d283 lhu t0,20(a3) @@ -1595,11 +1595,11 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); b66: 40005737 lui a4,0x40005 timeout = TIMEOUT_MAX; - b6a: 6a068693 addi a3,a3,1696 # 186a0 + b6a: 6a068693 addi a3,a3,1696 # 186a0 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); b6e: 40070713 addi a4,a4,1024 # 40005400 <_eusrstack+0x20004c00> while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_MODE_SELECT)) && (timeout--)); - b72: 0605 addi a2,a2,1 # 30001 + b72: 0605 addi a2,a2,1 # 30001 b74: 537d li t1,-1 uint32_t status = I2C1->STAR1 | (I2C1->STAR2<<16); b76: 01475283 lhu t0,20(a4) @@ -1641,2474 +1641,2654 @@ uint8_t ssd1306_i2c_send(uint8_t addr, const uint8_t *data, int sz) ba8: 02810113 addi sp,sp,40 bac: 8082 ret -00000bae : +00000bae : +{ + bae: 1171 addi sp,sp,-4 + ssd1306_cmd(SSD1306_SETCONTRAST); + bb0: 08100513 li a0,129 +{ + bb4: c006 sw ra,0(sp) + ssd1306_cmd(SSD1306_SETCONTRAST); + bb6: 3ff1 jal b92 + ssd1306_cmd(brightness_opts[bright_idx]); + bb8: c061c783 lbu a5,-1018(gp) # 20000002 + bbc: c2818713 addi a4,gp,-984 # 20000024 + bc0: 97ba add a5,a5,a4 +} + bc2: 4082 lw ra,0(sp) + ssd1306_cmd(brightness_opts[bright_idx]); + bc4: 0007c503 lbu a0,0(a5) +} + bc8: 0111 addi sp,sp,4 + ssd1306_cmd(brightness_opts[bright_idx]); + bca: b7e1 j b92 + +00000bcc : asm volatile( "\n\ - bae: 20000197 auipc gp,0x20000 - bb2: 84e18193 addi gp,gp,-1970 # 200003fc <__global_pointer$> - bb6: 40418113 addi sp,gp,1028 # 20000800 <_eusrstack> - bba: 6509 lui a0,0x2 - bbc: 88050513 addi a0,a0,-1920 # 1880 - bc0: 30051073 csrw mstatus,a0 - bc4: fffff697 auipc a3,0xfffff - bc8: 43c68693 addi a3,a3,1084 # 0 - bcc: 0036e693 ori a3,a3,3 - bd0: 30569073 csrw mtvec,a3 + bcc: 20000197 auipc gp,0x20000 + bd0: 83018193 addi gp,gp,-2000 # 200003fc <__global_pointer$> + bd4: 40418113 addi sp,gp,1028 # 20000800 <_eusrstack> + bd8: 6509 lui a0,0x2 + bda: 88050513 addi a0,a0,-1920 # 1880 + bde: 30051073 csrw mstatus,a0 + be2: fffff697 auipc a3,0xfffff + be6: 41e68693 addi a3,a3,1054 # 0 + bea: 0036e693 ori a3,a3,3 + bee: 30569073 csrw mtvec,a3 asm volatile( - bd4: c2818513 addi a0,gp,-984 # 20000024 - bd8: 05c18593 addi a1,gp,92 # 20000458 <_ebss> - bdc: 4601 li a2,0 - bde: 00b55663 bge a0,a1,bea - be2: c110 sw a2,0(a0) - be4: 0511 addi a0,a0,4 - be6: feb54ee3 blt a0,a1,be2 - bea: 00002517 auipc a0,0x2 - bee: 40650513 addi a0,a0,1030 # 2ff0 <_data_lma> - bf2: c0418593 addi a1,gp,-1020 # 20000000 - bf6: c2818613 addi a2,gp,-984 # 20000024 - bfa: 00c58863 beq a1,a2,c0a - bfe: 4114 lw a3,0(a0) - c00: c194 sw a3,0(a1) + bf2: c2c18513 addi a0,gp,-980 # 20000028 + bf6: 06418593 addi a1,gp,100 # 20000460 <_ebss> + bfa: 4601 li a2,0 + bfc: 00b55663 bge a0,a1,c08 + c00: c110 sw a2,0(a0) c02: 0511 addi a0,a0,4 - c04: 0591 addi a1,a1,4 - c06: fec59ae3 bne a1,a2,bfa + c04: feb54ee3 blt a0,a1,c00 + c08: 00002517 auipc a0,0x2 + c0c: 58450513 addi a0,a0,1412 # 318c <_data_lma> + c10: c0418593 addi a1,gp,-1020 # 20000000 + c14: c2c18613 addi a2,gp,-980 # 20000028 + c18: 00c58863 beq a1,a2,c28 + c1c: 4114 lw a3,0(a0) + c1e: c194 sw a3,0(a1) + c20: 0511 addi a0,a0,4 + c22: 0591 addi a1,a1,4 + c24: fec59ae3 bne a1,a2,c18 SysTick->CTLR = 1; - c0a: e000f7b7 lui a5,0xe000f - c0e: 4705 li a4,1 - c10: c398 sw a4,0(a5) + c28: e000f7b7 lui a5,0xe000f + c2c: 4705 li a4,1 + c2e: c398 sw a4,0(a5) asm volatile( - c12: 6785 lui a5,0x1 - c14: d0a78793 addi a5,a5,-758 # d0a
- c18: 34179073 csrw mepc,a5 - c1c: 30200073 mret + c30: 6785 lui a5,0x1 + c32: d2878793 addi a5,a5,-728 # d28
+ c36: 34179073 csrw mepc,a5 + c3a: 30200073 mret -00000c20 : +00000c3e : asm volatile( "1: j 1b" ); - c20: a001 j c20 + c3e: a001 j c3e -00000c22 : +00000c40 : RCC->INTR |= RCC_CSSC; // clear the clock security int flag - c22: 40021737 lui a4,0x40021 - c26: 471c lw a5,8(a4) - c28: 008006b7 lui a3,0x800 - c2c: 8fd5 or a5,a5,a3 - c2e: c71c sw a5,8(a4) + c40: 40021737 lui a4,0x40021 + c44: 471c lw a5,8(a4) + c46: 008006b7 lui a3,0x800 + c4a: 8fd5 or a5,a5,a3 + c4c: c71c sw a5,8(a4) -00000c30 : +00000c4e : WEAK void *memset(void *dest, int c, size_t n) { unsigned char *s = dest; for (; n; n--, s++) *s = c; return dest; } - c30: 962a add a2,a2,a0 - c32: 87aa mv a5,a0 - c34: 00c79363 bne a5,a2,c3a - c38: 8082 ret - c3a: 00b78023 sb a1,0(a5) - c3e: 0785 addi a5,a5,1 - c40: bfd5 j c34 + c4e: 962a add a2,a2,a0 + c50: 87aa mv a5,a0 + c52: 00c79363 bne a5,a2,c58 + c56: 8082 ret + c58: 00b78023 sb a1,0(a5) + c5c: 0785 addi a5,a5,1 + c5e: bfd5 j c52 -00000c42 : +00000c60 : memset(ssd1306_buffer, color ? 0xFF : 0x00, sizeof(ssd1306_buffer)); - c42: 40000613 li a2,1024 - c46: 4581 li a1,0 - c48: c5c18513 addi a0,gp,-932 # 20000058 - c4c: b7d5 j c30 + c60: 40000613 li a2,1024 + c64: 4581 li a1,0 + c66: c6418513 addi a0,gp,-924 # 20000060 + c6a: b7d5 j c4e -00000c4e : +00000c6c : for (; n; n--) *d++ = *s++; - c4e: 4781 li a5,0 - c50: 00f61363 bne a2,a5,c56 + c6c: 4781 li a5,0 + c6e: 00f61363 bne a2,a5,c74 } - c54: 8082 ret + c72: 8082 ret for (; n; n--) *d++ = *s++; - c56: 00f58733 add a4,a1,a5 - c5a: 00074683 lbu a3,0(a4) # 40021000 <_eusrstack+0x20020800> - c5e: 00f50733 add a4,a0,a5 - c62: 0785 addi a5,a5,1 - c64: 00d70023 sb a3,0(a4) - c68: b7e5 j c50 + c74: 00f58733 add a4,a1,a5 + c78: 00074683 lbu a3,0(a4) # 40021000 <_eusrstack+0x20020800> + c7c: 00f50733 add a4,a0,a5 + c80: 0785 addi a5,a5,1 + c82: 00d70023 sb a3,0(a4) + c86: b7e5 j c6e -00000c6a : +00000c88 : { - c6a: 7179 addi sp,sp,-48 + c88: 7179 addi sp,sp,-48 ssd1306_cmd(SSD1306_COLUMNADDR); - c6c: 02100513 li a0,33 + c8a: 02100513 li a0,33 { - c70: d606 sw ra,44(sp) - c72: d422 sw s0,40(sp) - c74: d226 sw s1,36(sp) + c8e: d606 sw ra,44(sp) + c90: d422 sw s0,40(sp) + c92: d226 sw s1,36(sp) ssd1306_cmd(SSD1306_COLUMNADDR); - c76: 3f31 jal b92 + c94: 3dfd jal b92 ssd1306_cmd(SSD1306_OFFSET); // Column start address (0 = reset) - c78: 4501 li a0,0 - c7a: 3f21 jal b92 + c96: 4501 li a0,0 + c98: 3ded jal b92 ssd1306_cmd(SSD1306_OFFSET+SSD1306_W-1); // Column end address (127 = reset) - c7c: 07f00513 li a0,127 - c80: 3f09 jal b92 + c9a: 07f00513 li a0,127 + c9e: 3dd5 jal b92 ssd1306_cmd(SSD1306_PAGEADDR); - c82: 02200513 li a0,34 - c86: 3731 jal b92 + ca0: 02200513 li a0,34 + ca4: 35fd jal b92 ssd1306_cmd(0); // Page start address (0 = reset) - c88: 4501 li a0,0 - c8a: 3721 jal b92 + ca6: 4501 li a0,0 + ca8: 35ed jal b92 ssd1306_cmd(7); // Page end address - c8c: 451d li a0,7 - c8e: c5c18413 addi s0,gp,-932 # 20000058 - c92: 3701 jal b92 + caa: 451d li a0,7 + cac: c6418413 addi s0,gp,-924 # 20000060 + cb0: 35cd jal b92 for(i=0;i + cc8: 3755 jal c6c return ssd1306_i2c_send(SSD1306_I2C_ADDR, pkt, sz+1); - cac: 02100593 li a1,33 - cb0: 850a mv a0,sp - cb2: 02040413 addi s0,s0,32 - cb6: 33c9 jal a78 - cb8: fe9410e3 bne s0,s1,c98 + cca: 02100593 li a1,33 + cce: 850a mv a0,sp + cd0: 02040413 addi s0,s0,32 + cd4: 3355 jal a78 + cd6: fe9410e3 bne s0,s1,cb6 } - cbc: 50b2 lw ra,44(sp) - cbe: 5422 lw s0,40(sp) - cc0: 5492 lw s1,36(sp) - cc2: 6145 addi sp,sp,48 - cc4: 8082 ret + cda: 50b2 lw ra,44(sp) + cdc: 5422 lw s0,40(sp) + cde: 5492 lw s1,36(sp) + ce0: 6145 addi sp,sp,48 + ce2: 8082 ret -00000cc6 : +00000ce4 : //#define BASE_CTLR (((FUNCONF_HSITRIM) << 3) | HSEBYP | RCC_CSS) // disable HSI in HSE modes // Flash latency settings. #if defined(CH32V003) #if FUNCONF_SYSTEM_CORE_CLOCK > 25000000 FLASH->ACTLR = FLASH_ACTLR_LATENCY_1; // +1 Cycle Latency - cc6: 400227b7 lui a5,0x40022 - cca: 4705 li a4,1 - ccc: c398 sw a4,0(a5) + ce4: 400227b7 lui a5,0x40022 + ce8: 4705 li a4,1 + cea: c398 sw a4,0(a5) #elif defined(FUNCONF_USE_HSI) && FUNCONF_USE_HSI #if defined(CH32V30x) || defined(CH32V20x) || defined(CH32L103) || defined(CH32V10x) EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE; #endif #if defined(FUNCONF_USE_PLL) && FUNCONF_USE_PLL RCC->CFGR0 = BASE_CFGR0; - cce: 400217b7 lui a5,0x40021 + cec: 400217b7 lui a5,0x40021 RCC->CTLR = BASE_CTLR | RCC_HSION | RCC_PLLON; // Use HSI, enable PLL. - cd2: 01080737 lui a4,0x1080 + cf0: 01080737 lui a4,0x1080 RCC->CFGR0 = BASE_CFGR0; - cd6: 0007a223 sw zero,4(a5) # 40021004 <_eusrstack+0x20020804> + cf4: 0007a223 sw zero,4(a5) # 40021004 <_eusrstack+0x20020804> RCC->CTLR = BASE_CTLR | RCC_HSION | RCC_PLLON; // Use HSI, enable PLL. - cda: 08170713 addi a4,a4,129 # 1080081 - cde: c398 sw a4,0(a5) + cf8: 08170713 addi a4,a4,129 # 1080081 + cfc: c398 sw a4,0(a5) FLASH->ACTLR = FLASH_ACTLR_LATENCY_0; #endif #endif #ifndef CH5xx RCC->INTR = 0x009F0000; // Clear PLL, CSSC, HSE, HSI and LSI ready flags. - ce0: 009f0737 lui a4,0x9f0 - ce4: c798 sw a4,8(a5) + cfe: 009f0737 lui a4,0x9f0 + d02: c798 sw a4,8(a5) #endif #if defined(FUNCONF_USE_PLL) && FUNCONF_USE_PLL && !defined(CH5xx) while((RCC->CTLR & RCC_PLLRDY) == 0) {}; // Wait till PLL is ready - ce6: 4398 lw a4,0(a5) - ce8: 00671693 slli a3,a4,0x6 - cec: fe06dde3 bgez a3,ce6 + d04: 4398 lw a4,0(a5) + d06: 00671693 slli a3,a4,0x6 + d0a: fe06dde3 bgez a3,d04 #if defined(CH32H41x) RCC->PLLCFGR |= RCC_SYSPLL_GATE; #endif uint32_t tmp32 = RCC->CFGR0 & ~(0x03); // clr the SW - cf0: 43d8 lw a4,4(a5) + d0e: 43d8 lw a4,4(a5) RCC->CFGR0 = tmp32 | RCC_SW_PLL; // Select PLL as system clock source while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08); // Wait till PLL is used as system clock source - cf2: 400216b7 lui a3,0x40021 + d10: 400216b7 lui a3,0x40021 uint32_t tmp32 = RCC->CFGR0 & ~(0x03); // clr the SW - cf6: 9b71 andi a4,a4,-4 + d14: 9b71 andi a4,a4,-4 RCC->CFGR0 = tmp32 | RCC_SW_PLL; // Select PLL as system clock source - cf8: 00276713 ori a4,a4,2 - cfc: c3d8 sw a4,4(a5) + d16: 00276713 ori a4,a4,2 + d1a: c3d8 sw a4,4(a5) while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08); // Wait till PLL is used as system clock source - cfe: 4721 li a4,8 - d00: 42dc lw a5,4(a3) - d02: 8bb1 andi a5,a5,12 - d04: fee79ee3 bne a5,a4,d00 + d1c: 4721 li a4,8 + d1e: 42dc lw a5,4(a3) + d20: 8bb1 andi a5,a5,12 + d22: fee79ee3 bne a5,a4,d1e SetupDebugPrintf(); #endif #if defined(FUNCONF_SUPPORT_CONSTRUCTORS) && FUNCONF_SUPPORT_CONSTRUCTORS CallConstructors(); #endif } - d08: 8082 ret + d26: 8082 ret -00000d0a
: +00000d28
: } } // ----------------------------------------------------------------- main int main(void) { - d0a: 7119 addi sp,sp,-128 - d0c: de86 sw ra,124(sp) - d0e: dca2 sw s0,120(sp) - d10: daa6 sw s1,116(sp) + d28: 7175 addi sp,sp,-144 + d2a: c706 sw ra,140(sp) + d2c: c522 sw s0,136(sp) + d2e: c326 sw s1,132(sp) SystemInit(); - d12: 3f55 jal cc6 - funGpioInitAll(); - d14: 400214b7 lui s1,0x40021 - d18: 4c9c lw a5,24(s1) + d30: 3f55 jal ce4 + reset_cause = RCC->RSTSCKR & 0xFC000000; // latch reset flags... + d32: 400217b7 lui a5,0x40021 + d36: 53d8 lw a4,36(a5) + d38: fc0006b7 lui a3,0xfc000 + d3c: 8f75 and a4,a4,a3 + d3e: c2e1ac23 sw a4,-968(gp) # 20000034 + RCC->RSTSCKR |= RCC_RMVF; // ...then clear for next boot + d42: 53d8 lw a4,36(a5) + d44: 010006b7 lui a3,0x1000 funPinMode(LED_PIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d1a: 40011437 lui s0,0x40011 - funPinMode(BUZZER, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d1e: 76fd lui a3,0xfffff + d48: 400114b7 lui s1,0x40011 + RCC->RSTSCKR |= RCC_RMVF; // ...then clear for next boot + d4c: 8f55 or a4,a4,a3 + d4e: d3d8 sw a4,36(a5) funGpioInitAll(); - d20: 0357e793 ori a5,a5,53 - d24: cc9c sw a5,24(s1) - funPinMode(LED_PIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d26: 80040793 addi a5,s0,-2048 # 40010800 <_eusrstack+0x20010000> - d2a: 4398 lw a4,0(a5) + d50: 4f98 lw a4,24(a5) funPinMode(BUZZER, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d2c: 0ff68693 addi a3,a3,255 # fffff0ff <_eusrstack+0xdfffe8ff> + d52: 767d lui a2,0xfffff + d54: 0ff60613 addi a2,a2,255 # fffff0ff <_eusrstack+0xdfffe8ff> + funGpioInitAll(); + d58: 03576713 ori a4,a4,53 + d5c: cf98 sw a4,24(a5) + funPinMode(LED_PIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); + d5e: 80048713 addi a4,s1,-2048 # 40010800 <_eusrstack+0x20010000> + d62: 4314 lw a3,0(a4) funPinMode(BTN_LEFT, GPIO_CNF_IN_PUPD); - d30: f1000637 lui a2,0xf1000 + d64: f10005b7 lui a1,0xf1000 + d68: 15fd addi a1,a1,-1 # f0ffffff <_eusrstack+0xd0fff7ff> funPinMode(LED_PIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d34: f0f77713 andi a4,a4,-241 - d38: 01076713 ori a4,a4,16 - d3c: c398 sw a4,0(a5) + d6a: f0f6f693 andi a3,a3,-241 + d6e: 0106e693 ori a3,a3,16 + d72: c314 sw a3,0(a4) funDigitalWrite(LED_PIN, FUN_LOW); - d3e: 00020737 lui a4,0x20 - d42: cb98 sw a4,16(a5) + d74: 000206b7 lui a3,0x20 + d78: cb14 sw a3,16(a4) funPinMode(BUZZER, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d44: 40040793 addi a5,s0,1024 - d48: 4398 lw a4,0(a5) - funPinMode(BTN_LEFT, GPIO_CNF_IN_PUPD); - d4a: 167d addi a2,a2,-1 # f0ffffff <_eusrstack+0xd0fff7ff> + d7a: 40048713 addi a4,s1,1024 + d7e: 4314 lw a3,0(a4) funDigitalWrite(BTN_OK, FUN_HIGH); - d4c: 4585 li a1,1 + d80: 4505 li a0,1 + AFIO->EXTICR |= AFIO_EXTICR_EXTI0_PC | // OK on PC0 + d82: 40010337 lui t1,0x40010 funPinMode(BUZZER, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP); - d4e: 8f75 and a4,a4,a3 - d50: 10076713 ori a4,a4,256 - d54: c398 sw a4,0(a5) + d86: 8ef1 and a3,a3,a2 + d88: 1006e693 ori a3,a3,256 + d8c: c314 sw a3,0(a4) funDigitalWrite(BUZZER, FUN_LOW); - d56: 00040737 lui a4,0x40 - d5a: cb98 sw a4,16(a5) + d8e: 000406b7 lui a3,0x40 + d92: cb14 sw a3,16(a4) funPinMode(BTN_OK, GPIO_CNF_IN_PUPD); - d5c: 4018 lw a4,0(s0) - AFIO->EXTICR |= AFIO_EXTICR_EXTI0_PC | // OK on PC0 - d5e: 40010537 lui a0,0x40010 - funPinMode(BTN_OK, GPIO_CNF_IN_PUPD); - d62: 9b41 andi a4,a4,-16 - d64: 00876713 ori a4,a4,8 - d68: c018 sw a4,0(s0) + d94: 4094 lw a3,0(s1) + d96: 9ac1 andi a3,a3,-16 + d98: 0086e693 ori a3,a3,8 + d9c: c094 sw a3,0(s1) funPinMode(BTN_LEFT, GPIO_CNF_IN_PUPD); - d6a: 4398 lw a4,0(a5) - d6c: 8f71 and a4,a4,a2 - d6e: 08000637 lui a2,0x8000 - d72: 8f51 or a4,a4,a2 - d74: c398 sw a4,0(a5) + d9e: 4314 lw a3,0(a4) + da0: 8eed and a3,a3,a1 + da2: 080005b7 lui a1,0x8000 + da6: 8ecd or a3,a3,a1 + da8: c314 sw a3,0(a4) funPinMode(BTN_RIGHT, GPIO_CNF_IN_PUPD); - d76: 4398 lw a4,0(a5) - d78: ff100637 lui a2,0xff100 - d7c: 167d addi a2,a2,-1 # ff0fffff <_eusrstack+0xdf0ff7ff> - d7e: 8f71 and a4,a4,a2 - d80: 00800637 lui a2,0x800 - d84: 8f51 or a4,a4,a2 - d86: c398 sw a4,0(a5) + daa: 4314 lw a3,0(a4) + dac: ff1005b7 lui a1,0xff100 + db0: 15fd addi a1,a1,-1 # ff0fffff <_eusrstack+0xdf0ff7ff> + db2: 8eed and a3,a3,a1 + db4: 008005b7 lui a1,0x800 + db8: 8ecd or a3,a3,a1 + dba: c314 sw a3,0(a4) funDigitalWrite(BTN_OK, FUN_HIGH); - d88: c80c sw a1,16(s0) + dbc: c888 sw a0,16(s1) funDigitalWrite(BTN_LEFT, FUN_HIGH); - d8a: 04000613 li a2,64 - d8e: cb90 sw a2,16(a5) + dbe: 04000593 li a1,64 + dc2: cb0c sw a1,16(a4) funDigitalWrite(BTN_RIGHT, FUN_HIGH); - d90: 02000713 li a4,32 - d94: cb98 sw a4,16(a5) + dc4: 02000693 li a3,32 + dc8: cb14 sw a3,16(a4) AFIO->EXTICR |= AFIO_EXTICR_EXTI0_PC | // OK on PC0 - d96: 451c lw a5,8(a0) - d98: 6711 lui a4,0x4 - d9a: c0270713 addi a4,a4,-1022 # 3c02 - d9e: 8fd9 or a5,a5,a4 - da0: c51c sw a5,8(a0) + dca: 00832703 lw a4,8(t1) # 40010008 <_eusrstack+0x2000f808> + dce: 6691 lui a3,0x4 + dd0: c0268693 addi a3,a3,-1022 # 3c02 + dd4: 8f55 or a4,a4,a3 + dd6: 00e32423 sw a4,8(t1) EXTI->INTENR |= EXTI_Line0 | EXTI_Line5 | EXTI_Line6; - da2: 40050793 addi a5,a0,1024 # 40010400 <_eusrstack+0x2000fc00> - da6: 4398 lw a4,0(a5) + dda: 40030713 addi a4,t1,1024 + dde: 4314 lw a3,0(a4) } // Enable Interrupt (by interrupt number) RV_STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) { NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); - da8: e000e537 lui a0,0xe000e - dac: 06176713 ori a4,a4,97 - db0: c398 sw a4,0(a5) + de0: e000e337 lui t1,0xe000e + de4: 0616e693 ori a3,a3,97 + de8: c314 sw a3,0(a4) EXTI->FTENR |= EXTI_Line0 | EXTI_Line5 | EXTI_Line6; // press == falling edge - db2: 47d8 lw a4,12(a5) - db4: 06176713 ori a4,a4,97 - db8: c7d8 sw a4,12(a5) - dba: 001007b7 lui a5,0x100 - dbe: 10f52023 sw a5,256(a0) # e000e100 <_eusrstack+0xc000d900> + dea: 4754 lw a3,12(a4) + dec: 0616e693 ori a3,a3,97 + df0: c754 sw a3,12(a4) + df2: 00100737 lui a4,0x100 + df6: 10e32023 sw a4,256(t1) # e000e100 <_eusrstack+0xc000d900> RCC->APB1PCENR |= RCC_APB1Periph_TIM2; - dc2: 4cdc lw a5,28(s1) + dfa: 4fd8 lw a4,28(a5) TIM2->PSC = 23999; // 24 MHz / 24000 = 1 kHz (1 ms/count) - dc4: 6719 lui a4,0x6 - dc6: dbf70713 addi a4,a4,-577 # 5dbf + dfc: 6699 lui a3,0x6 + dfe: dbf68693 addi a3,a3,-577 # 5dbf RCC->APB1PCENR |= RCC_APB1Periph_TIM2; - dca: 8fcd or a5,a5,a1 - dcc: ccdc sw a5,28(s1) + e02: 8f49 or a4,a4,a0 + e04: cfd8 sw a4,28(a5) TIM2->PSC = 23999; // 24 MHz / 24000 = 1 kHz (1 ms/count) - dce: 400007b7 lui a5,0x40000 - dd2: 02e79423 sh a4,40(a5) # 40000028 <_eusrstack+0x1ffff828> + e06: 40000737 lui a4,0x40000 + e0a: 02d71423 sh a3,40(a4) # 40000028 <_eusrstack+0x1ffff828> TIM2->ATRLR = TICK_MS - 1; // overflow once per game tick - dd6: 6711 lui a4,0x4 - dd8: a9770713 addi a4,a4,-1385 # 3a97 - ddc: 02e79623 sh a4,44(a5) - TIM2->SWEVGR = TIM_PSCReloadMode_Immediate; // latch PSC/ARR now - de0: 00b79a23 sh a1,20(a5) + e0e: 6691 lui a3,0x4 + e10: a9768693 addi a3,a3,-1385 # 3a97 + e14: 02d71623 sh a3,44(a4) TIM2->INTFR = (uint16_t)~TIM_FLAG_Update; - de4: 5779 li a4,-2 - de6: 00e79823 sh a4,16(a5) + e18: 56f9 li a3,-2 + TIM2->SWEVGR = TIM_PSCReloadMode_Immediate; // latch PSC/ARR now + e1a: 00a71a23 sh a0,20(a4) + TIM2->INTFR = (uint16_t)~TIM_FLAG_Update; + e1e: 00d71823 sh a3,16(a4) TIM2->DMAINTENR |= TIM_UIE; // enable update interrupt - dea: 00c7d703 lhu a4,12(a5) - dee: 8f4d or a4,a4,a1 - df0: 00e79623 sh a4,12(a5) - df4: 10c52223 sw a2,260(a0) + e22: 00c75683 lhu a3,12(a4) + e26: 8ec9 or a3,a3,a0 + e28: 00d71623 sh a3,12(a4) gpio_setup(); lowpower_setup(); // button-wake EXTI + periodic-check timer Delay_Ms(120); // let the OLED rail settle - df8: 000b0537 lui a0,0xb0 - dfc: c8050513 addi a0,a0,-896 # afc80 - e00: b1eff0ef jal 11e + e2c: 000b0537 lui a0,0xb0 + e30: 10b32223 sw a1,260(t1) + e34: c8050513 addi a0,a0,-896 # afc80 + e38: ae6ff0ef jal 11e * init I2C and GPIO */ uint8_t ssd1306_i2c_init(void) { // Enable GPIOC and I2C RCC->APB1PCENR |= RCC_APB1Periph_I2C1; - e04: 4cdc lw a5,28(s1) - e06: 00200737 lui a4,0x200 - e0a: 8fd9 or a5,a5,a4 - e0c: ccdc sw a5,28(s1) + e3c: 400217b7 lui a5,0x40021 + e40: 4fd8 lw a4,28(a5) + e42: 002006b7 lui a3,0x200 + e46: 8f55 or a4,a4,a3 + e48: cfd8 sw a4,28(a5) funPinMode( PB6, GPIO_CFGLR_OUT_10Mhz_AF_OD ); funPinMode( PB7, GPIO_CFGLR_OUT_10Mhz_AF_OD ); #endif #else RCC->APB2PCENR |= RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO; - e0e: 4c9c lw a5,24(s1) + e4a: 4f98 lw a4,24(a5) + e4c: 01176713 ori a4,a4,17 + e50: cf98 sw a4,24(a5) // PC1 is SDA, 10MHz Output, alt func, open-drain GPIOC->CFGLR &= ~(0xf<<(4*1)); + e52: 409c lw a5,0(s1) GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*1); // PC2 is SCL, 10MHz Output, alt func, open-drain GPIOC->CFGLR &= ~(0xf<<(4*2)); - e10: 777d lui a4,0xfffff - e12: 0ff70693 addi a3,a4,255 # fffff0ff <_eusrstack+0xdfffe8ff> - RCC->APB2PCENR |= RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO; - e16: 0117e793 ori a5,a5,17 - e1a: cc9c sw a5,24(s1) + e54: 777d lui a4,0xfffff + e56: 0ff70613 addi a2,a4,255 # fffff0ff <_eusrstack+0xdfffe8ff> GPIOC->CFGLR &= ~(0xf<<(4*1)); - e1c: 401c lw a5,0(s0) - GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*2); - e1e: 6705 lui a4,0x1 - e20: d0070713 addi a4,a4,-768 # d00 - GPIOC->CFGLR &= ~(0xf<<(4*1)); - e24: f0f7f793 andi a5,a5,-241 - e28: c01c sw a5,0(s0) + e5a: f0f7f793 andi a5,a5,-241 + e5e: c09c sw a5,0(s1) GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*1); - e2a: 401c lw a5,0(s0) - e2c: 0d07e793 ori a5,a5,208 - e30: c01c sw a5,0(s0) - GPIOC->CFGLR &= ~(0xf<<(4*2)); - e32: 401c lw a5,0(s0) - e34: 8ff5 and a5,a5,a3 - e36: c01c sw a5,0(s0) + e60: 409c lw a5,0(s1) GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*2); - e38: 401c lw a5,0(s0) - e3a: 8fd9 or a5,a5,a4 - e3c: c01c sw a5,0(s0) + e62: 6705 lui a4,0x1 + e64: d0070713 addi a4,a4,-768 # d00 + GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*1); + e68: 0d07e793 ori a5,a5,208 + e6c: c09c sw a5,0(s1) + GPIOC->CFGLR &= ~(0xf<<(4*2)); + e6e: 409c lw a5,0(s1) + e70: 8ff1 and a5,a5,a2 + e72: c09c sw a5,0(s1) + GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_OD_AF)<<(4*2); + e74: 409c lw a5,0(s1) + e76: 8fd9 or a5,a5,a4 + e78: c09c sw a5,0(s1) ssd1306_setbuf(0); // initialize OLED #if !defined(SSD1306_CUSTOM_INIT_ARRAY) || !SSD1306_CUSTOM_INIT_ARRAY uint8_t *cmd_list = (uint8_t *)ssd1306_init_array; - e3e: 6409 lui s0,0x2 + e7a: 6489 lui s1,0x2 GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4); GPIOC->BSHR = (1<<(16+4)); #endif // load I2C regs ssd1306_i2c_setup(); - e40: af0ff0ef jal 130 - e44: 57040413 addi s0,s0,1392 # 2570 + e7c: ab4ff0ef jal 130 + e80: 6fc48493 addi s1,s1,1788 # 26fc ssd1306_setbuf(0); - e48: 3bed jal c42 + e84: 3bf1 jal c60 while(*cmd_list != SSD1306_TERMINATE_CMDS) - e4a: 00044503 lbu a0,0(s0) - e4e: 0ff00793 li a5,255 - e52: 00f51463 bne a0,a5,e5a + e86: 0004c503 lbu a0,0(s1) + e8a: 0ff00793 li a5,255 + e8e: 00f51463 bne a0,a5,e96 { if(ssd1306_cmd(*cmd_list++)) return 1; } ssd1306_refresh(); - e56: 3d11 jal c6a + e92: 3bdd jal c88 #endif return 0; - e58: a021 j e60 + e94: a021 j e9c if(ssd1306_cmd(*cmd_list++)) - e5a: 0405 addi s0,s0,1 - e5c: 3b1d jal b92 - e5e: d575 beqz a0,e4a - ssd1306_setbuf(0); - e60: 6489 lui s1,0x2 - e62: 33c5 jal c42 - for (uint8_t i = 0; i < 5; i++) { - e64: 58c48493 addi s1,s1,1420 # 258c - ssd1306_setbuf(0); - e68: 4401 li s0,0 - ssd1306_drawstr(0, i * 10, boot[i], 1); - e6a: 4090 lw a2,0(s1) - e6c: 4685 li a3,1 - e6e: 85a2 mv a1,s0 - e70: 4501 li a0,0 - e72: ba6ff0ef jal 218 - ssd1306_refresh(); - e76: 3bd5 jal c6a - beep(1200 + i * 120, 25); - e78: 00141513 slli a0,s0,0x1 - e7c: 9522 add a0,a0,s0 - e7e: 050a slli a0,a0,0x2 - e80: 4b050513 addi a0,a0,1200 - e84: 0542 slli a0,a0,0x10 - e86: 8141 srli a0,a0,0x10 - e88: 45e5 li a1,25 - e8a: c8cff0ef jal 316 - Delay_Ms(220); - e8e: 00142537 lui a0,0x142 - e92: 44050513 addi a0,a0,1088 # 142440 - e96: a88ff0ef jal 11e - for (uint8_t i = 0; i < 5; i++) { - e9a: 0429 addi s0,s0,10 - e9c: 03200793 li a5,50 - ea0: 0491 addi s1,s1,4 - ea2: fcf414e3 bne s0,a5,e6a - draw_center_str(54, "press any key"); - ea6: 6589 lui a1,0x2 - ea8: b0c58593 addi a1,a1,-1268 # 1b0c - eac: 03600513 li a0,54 - eb0: 897ff0ef jal 746 - ssd1306_refresh(); - eb4: 3b5d jal c6a - beep(988, 120); - eb6: 07800593 li a1,120 - eba: 3dc00513 li a0,988 - ebe: c58ff0ef jal 316 - ec2: 0c800413 li s0,200 - Buttons b = read_buttons(); - ec6: 8a9ff0ef jal 76e - eca: 00855713 srli a4,a0,0x8 - ece: 01055793 srli a5,a0,0x10 - ed2: 04e100a3 sb a4,65(sp) - if (b.ok || b.left || b.right) break; - ed6: 8f49 or a4,a4,a0 - Buttons b = read_buttons(); - ed8: 04f10123 sb a5,66(sp) - if (b.ok || b.left || b.right) break; - edc: 8fd9 or a5,a5,a4 - Buttons b = read_buttons(); - ede: 04a10023 sb a0,64(sp) - if (b.ok || b.left || b.right) break; - ee2: 0ff7f793 zext.b a5,a5 - ee6: eb81 bnez a5,ef6 - Delay_Ms(20); - ee8: 6575 lui a0,0x1d - eea: 4c050513 addi a0,a0,1216 # 1d4c0 - for (int i = 0; i < 200; i++) { - eee: 147d addi s0,s0,-1 - Delay_Ms(20); - ef0: a2eff0ef jal 11e - for (int i = 0; i < 200; i++) { - ef4: f869 bnez s0,ec6 + e96: 0485 addi s1,s1,1 + e98: 39ed jal b92 + e9a: d575 beqz a0,e86 + if (ssd1306_i2c_init()) { // non-zero == failure + // no display: fall back to a heartbeat blink so the board still shows life while (1) { led_blink(); Delay_Ms(700); } } ssd1306_init(); + apply_brightness(); // start at the configured (dimmer) brightness + e9c: 3b09 jal bae + ssd1306_setbuf(0); + e9e: 33c9 jal c60 + for (uint8_t i = 0; i < 5; i++) { + ea0: 6789 lui a5,0x2 + ea2: 71878793 addi a5,a5,1816 # 2718 + ssd1306_setbuf(0); + ea6: 4481 li s1,0 + ssd1306_drawstr(0, i * 10, boot[i], 1); + ea8: 4390 lw a2,0(a5) + eaa: 4685 li a3,1 + eac: 85a6 mv a1,s1 + eae: 4501 li a0,0 + eb0: c03e sw a5,0(sp) + eb2: b66ff0ef jal 218 + ssd1306_refresh(); + eb6: 3bc9 jal c88 + beep(1200 + i * 120, 25); + eb8: 00149513 slli a0,s1,0x1 + ebc: 9526 add a0,a0,s1 + ebe: 050a slli a0,a0,0x2 + ec0: 4b050513 addi a0,a0,1200 + ec4: 0542 slli a0,a0,0x10 + ec6: 8141 srli a0,a0,0x10 + ec8: 45e5 li a1,25 + eca: c4cff0ef jal 316 + Delay_Ms(220); + ece: 00142537 lui a0,0x142 + ed2: 44050513 addi a0,a0,1088 # 142440 + ed6: a48ff0ef jal 11e + for (uint8_t i = 0; i < 5; i++) { + eda: 4782 lw a5,0(sp) + edc: 04a9 addi s1,s1,10 + ede: 03200713 li a4,50 + ee2: 0791 addi a5,a5,4 + ee4: fce492e3 bne s1,a4,ea8 + rp = s_cat(rp, "rst:"); + ee8: 6589 lui a1,0x2 + eea: c3858593 addi a1,a1,-968 # 1c38 + eee: 0088 addi a0,sp,64 + ef0: bb4ff0ef jal 2a4 + if (reset_cause & RCC_LPWRRSTF) rp = s_cat(rp, "LPW "); + ef4: c381a403 lw s0,-968(gp) # 20000034 + rp = s_cat(rp, "rst:"); + ef8: 87aa mv a5,a0 + if (reset_cause & RCC_LPWRRSTF) rp = s_cat(rp, "LPW "); + efa: 00045863 bgez s0,f0a + efe: 6589 lui a1,0x2 + f00: c4058593 addi a1,a1,-960 # 1c40 + f04: ba0ff0ef jal 2a4 + f08: 87aa mv a5,a0 + if (reset_cause & RCC_WWDGRSTF) rp = s_cat(rp, "WWD "); + f0a: 00141713 slli a4,s0,0x1 + f0e: 00075963 bgez a4,f20 + f12: 6589 lui a1,0x2 + f14: 853e mv a0,a5 + f16: c4858593 addi a1,a1,-952 # 1c48 + f1a: b8aff0ef jal 2a4 + f1e: 87aa mv a5,a0 + if (reset_cause & RCC_IWDGRSTF) rp = s_cat(rp, "WDG "); + f20: 00241713 slli a4,s0,0x2 + f24: 00075963 bgez a4,f36 + f28: 6589 lui a1,0x2 + f2a: 853e mv a0,a5 + f2c: c5058593 addi a1,a1,-944 # 1c50 + f30: b74ff0ef jal 2a4 + f34: 87aa mv a5,a0 + if (reset_cause & RCC_SFTRSTF) rp = s_cat(rp, "SFT "); + f36: 00341713 slli a4,s0,0x3 + f3a: 00075963 bgez a4,f4c + f3e: 6589 lui a1,0x2 + f40: 853e mv a0,a5 + f42: c5858593 addi a1,a1,-936 # 1c58 + f46: b5eff0ef jal 2a4 + f4a: 87aa mv a5,a0 + if (reset_cause & RCC_PORRSTF) rp = s_cat(rp, "POR "); + f4c: 00441713 slli a4,s0,0x4 + f50: 00075963 bgez a4,f62 + f54: 6589 lui a1,0x2 + f56: 853e mv a0,a5 + f58: c6058593 addi a1,a1,-928 # 1c60 + f5c: b48ff0ef jal 2a4 + f60: 87aa mv a5,a0 + if (reset_cause & RCC_PINRSTF) rp = s_cat(rp, "PIN "); + f62: 00541713 slli a4,s0,0x5 + f66: 00075963 bgez a4,f78 + f6a: 6589 lui a1,0x2 + f6c: 853e mv a0,a5 + f6e: c6858593 addi a1,a1,-920 # 1c68 + f72: b32ff0ef jal 2a4 + f76: 87aa mv a5,a0 + if (rp == rc + 4) rp = s_cat(rp, "none"); + f78: 00d8 addi a4,sp,68 + f7a: 00e79963 bne a5,a4,f8c + f7e: 6589 lui a1,0x2 + f80: 853e mv a0,a5 + f82: c7058593 addi a1,a1,-912 # 1c70 + f86: b1eff0ef jal 2a4 + f8a: 87aa mv a5,a0 + *rp = 0; + f8c: 00078023 sb zero,0(a5) + ssd1306_drawstr(0, 44, rc, 1); + f90: 4685 li a3,1 + f92: 0090 addi a2,sp,64 + f94: 02c00593 li a1,44 + f98: 4501 li a0,0 + f9a: a7eff0ef jal 218 + draw_center_str(54, "press any key"); + f9e: 6589 lui a1,0x2 + fa0: c7858593 addi a1,a1,-904 # 1c78 + fa4: 03600513 li a0,54 + fa8: f9eff0ef jal 746 + ssd1306_refresh(); + fac: 39f1 jal c88 + beep(988, 120); + fae: 07800593 li a1,120 + fb2: 3dc00513 li a0,988 + fb6: b60ff0ef jal 316 + fba: 0c800413 li s0,200 + Buttons b = read_buttons(); + fbe: fb0ff0ef jal 76e + fc2: 00855713 srli a4,a0,0x8 + fc6: 01055793 srli a5,a0,0x10 + fca: 02e10ca3 sb a4,57(sp) + if (b.ok || b.left || b.right) break; + fce: 8f49 or a4,a4,a0 + Buttons b = read_buttons(); + fd0: 02f10d23 sb a5,58(sp) + if (b.ok || b.left || b.right) break; + fd4: 8fd9 or a5,a5,a4 + Buttons b = read_buttons(); + fd6: 02a10c23 sb a0,56(sp) + if (b.ok || b.left || b.right) break; + fda: 0ff7f793 zext.b a5,a5 + fde: eb81 bnez a5,fee + Delay_Ms(20); + fe0: 6575 lui a0,0x1d + fe2: 4c050513 addi a0,a0,1216 # 1d4c0 + for (int i = 0; i < 200; i++) { + fe6: 147d addi s0,s0,-1 + Delay_Ms(20); + fe8: 936ff0ef jal 11e + for (int i = 0; i < 200; i++) { + fec: f869 bnez s0,fbe splash(); screen = SCR_SELECT; // pick a species before a pet is born - ef6: c2018b23 sb zero,-970(gp) # 20000032 + fee: c2018f23 sb zero,-962(gp) # 2000003a Buttons prev = {0, 0, 0}; - efa: 4481 li s1,0 - efc: 4701 li a4,0 - efe: 4781 li a5,0 + ff2: 4481 li s1,0 + ff4: 4701 li a4,0 + ff6: 4781 li a5,0 while (1) { if (!disp_on) { - f00: c051c683 lbu a3,-1019(gp) # 20000001 - f04: eadd bnez a3,fba + ff8: c051c683 lbu a3,-1019(gp) # 20000001 + ffc: eadd bnez a3,10b2 TIM2->CNT = 0; - f06: 400007b7 lui a5,0x40000 + ffe: 400007b7 lui a5,0x40000 TIM2->INTFR = (uint16_t)~TIM_FLAG_Update; - f0a: 52f9 li t0,-2 + 1002: 52f9 li t0,-2 } // WFI - wait for interrupt (like a light sleep) __attribute__( ( always_inline ) ) RV_STATIC_INLINE void __WFI(void) { NVIC->SCTLR &= ~(1<<3); // wfi - f0c: e000f5b7 lui a1,0xe000f + 1004: e000f5b7 lui a1,0xe000f exti_wake = 0; - f10: c2018aa3 sb zero,-971(gp) # 20000031 + 1008: c2018ea3 sb zero,-963(gp) # 20000039 tick_wake = 0; - f14: c2018a23 sb zero,-972(gp) # 20000030 + 100c: c2018e23 sb zero,-964(gp) # 20000038 TIM2->CNT = 0; - f18: 02079223 sh zero,36(a5) # 40000024 <_eusrstack+0x1ffff824> + 1010: 02079223 sh zero,36(a5) # 40000024 <_eusrstack+0x1ffff824> TIM2->INTFR = (uint16_t)~TIM_FLAG_Update; - f1c: 00579823 sh t0,16(a5) + 1014: 00579823 sh t0,16(a5) TIM2->CTLR1 |= TIM_CEN; // arm the periodic wake - f20: 0007d703 lhu a4,0(a5) - f24: 00176713 ori a4,a4,1 - f28: 00e79023 sh a4,0(a5) - f2c: d105a703 lw a4,-752(a1) # e000ed10 <_eusrstack+0xc000e510> - f30: 9b5d andi a4,a4,-9 - f32: d0e5a823 sw a4,-752(a1) + 1018: 0007d703 lhu a4,0(a5) + 101c: 00176713 ori a4,a4,1 + 1020: 00e79023 sh a4,0(a5) + 1024: d105a703 lw a4,-752(a1) # e000ed10 <_eusrstack+0xc000e510> + 1028: 9b5d andi a4,a4,-9 + 102a: d0e5a823 sw a4,-752(a1) __ASM volatile ("wfi"); - f36: 10500073 wfi + 102e: 10500073 wfi TIM2->CTLR1 &= ~TIM_CEN; // halt it while we're awake - f3a: 0007d703 lhu a4,0(a5) - f3e: 66c1 lui a3,0x10 - f40: 16f9 addi a3,a3,-2 # fffe - f42: 8f75 and a4,a4,a3 - f44: 00e79023 sh a4,0(a5) + 1032: 0007d703 lhu a4,0(a5) + 1036: 66c1 lui a3,0x10 + 1038: 16f9 addi a3,a3,-2 # fffe + 103a: 8f75 and a4,a4,a3 + 103c: 00e79023 sh a4,0(a5) if (exti_wake) { // a button: bring the screen back - f48: c351c703 lbu a4,-971(gp) # 20000031 - f4c: c721 beqz a4,f94 + 1040: c3d1c703 lbu a4,-963(gp) # 20000039 + 1044: c721 beqz a4,108c ssd1306_cmd(SSD1306_DISPLAYON); - f4e: 0af00513 li a0,175 - f52: 3181 jal b92 + 1046: 0af00513 li a0,175 + 104a: 36a1 jal b92 disp_on = 1; - f54: 4785 li a5,1 - f56: c0f182a3 sb a5,-1019(gp) # 20000001 + 104c: 4785 li a5,1 + 104e: c0f182a3 sb a5,-1019(gp) # 20000001 idle_frames = 0; - f5a: c201a823 sw zero,-976(gp) # 2000002c + 1052: c201aa23 sw zero,-972(gp) # 20000030 tick_acc = 0; - f5e: c2019523 sh zero,-982(gp) # 20000026 + 1056: c2019723 sh zero,-978(gp) # 2000002a // Display is off: hand the core to WFI light-sleep, waking only // for button presses or the periodic background check. It returns // once the screen is lit again; swallow whatever press woke us so // it just wakes the display rather than also firing an action. enter_low_power(); prev = read_buttons(); - f62: 80dff0ef jal 76e - f66: 00855713 srli a4,a0,0x8 - f6a: 01055793 srli a5,a0,0x10 - f6e: 02e108a3 sb a4,49(sp) - f72: 02f10923 sb a5,50(sp) - f76: 0ff57693 zext.b a3,a0 - f7a: 0ff77713 zext.b a4,a4 - f7e: 0ff7f793 zext.b a5,a5 - f82: 02a10823 sb a0,48(sp) - f86: ca36 sw a3,20(sp) - f88: cc3a sw a4,24(sp) - f8a: ce3e sw a5,28(sp) + 105a: f14ff0ef jal 76e + 105e: 00855713 srli a4,a0,0x8 + 1062: 01055793 srli a5,a0,0x10 + 1066: 02e108a3 sb a4,49(sp) + 106a: 02f10923 sb a5,50(sp) + 106e: 0ff57693 zext.b a3,a0 + 1072: 0ff77713 zext.b a4,a4 + 1076: 0ff7f793 zext.b a5,a5 + 107a: 02a10823 sb a0,48(sp) + 107e: ca36 sw a3,20(sp) + 1080: cc3a sw a4,24(sp) + 1082: ce3e sw a5,28(sp) beep(988, 120); - f8c: 44f2 lw s1,28(sp) - f8e: 4762 lw a4,24(sp) - f90: 47d2 lw a5,20(sp) - f92: b7bd j f00 + 1084: 44f2 lw s1,28(sp) + 1086: 4762 lw a4,24(sp) + 1088: 47d2 lw a5,20(sp) + 108a: b7bd j ff8 if (pet.alive) { - f94: c4818493 addi s1,gp,-952 # 20000044 - f98: 0104c703 lbu a4,16(s1) - f9c: db35 beqz a4,f10 + 108c: c5018493 addi s1,gp,-944 # 2000004c + 1090: 0104c703 lbu a4,16(s1) + 1094: db35 beqz a4,1008 game_tick(); - f9e: d6eff0ef jal 50c + 1096: c76ff0ef jal 50c if (!pet.alive) { // it died in its sleep: show the grave - fa2: 0104c783 lbu a5,16(s1) - fa6: f3a5 bnez a5,f06 + 109a: 0104c783 lbu a5,16(s1) + 109e: f3a5 bnez a5,ffe ssd1306_cmd(SSD1306_DISPLAYON); - fa8: 0af00513 li a0,175 - fac: 36dd jal b92 + 10a0: 0af00513 li a0,175 + 10a4: 34fd jal b92 disp_on = 1; - fae: 4785 li a5,1 - fb0: c0f182a3 sb a5,-1019(gp) # 20000001 + 10a6: 4785 li a5,1 + 10a8: c0f182a3 sb a5,-1019(gp) # 20000001 idle_frames = 0; - fb4: c201a823 sw zero,-976(gp) # 2000002c + 10ac: c201aa23 sw zero,-972(gp) # 20000030 return; - fb8: b76d j f62 - fba: c43e sw a5,8(sp) - fbc: c23a sw a4,4(sp) + 10b0: b76d j 105a + 10b2: c43e sw a5,8(sp) + 10b4: c23a sw a4,4(sp) continue; } Buttons b = read_buttons(); - fbe: fb0ff0ef jal 76e - fc2: 00855613 srli a2,a0,0x8 - fc6: 0ff57793 zext.b a5,a0 - fca: 01055693 srli a3,a0,0x10 - fce: ca3e sw a5,20(sp) - fd0: 0ff67793 zext.b a5,a2 - fd4: cc3e sw a5,24(sp) - fd6: 0ff6f793 zext.b a5,a3 - fda: ce3e sw a5,28(sp) + 10b6: eb8ff0ef jal 76e + 10ba: 00855613 srli a2,a0,0x8 + 10be: 0ff57793 zext.b a5,a0 + 10c2: 01055693 srli a3,a0,0x10 + 10c6: ca3e sw a5,20(sp) + 10c8: 0ff67793 zext.b a5,a2 + 10cc: cc3e sw a5,24(sp) + 10ce: 0ff6f793 zext.b a5,a3 + 10d2: ce3e sw a5,28(sp) uint8_t ok_edge = b.ok && !prev.ok; - fdc: 47d2 lw a5,20(sp) + 10d4: 47d2 lw a5,20(sp) Buttons b = read_buttons(); - fde: 02a10a23 sb a0,52(sp) - fe2: 02c10aa3 sb a2,53(sp) - fe6: 02d10b23 sb a3,54(sp) + 10d6: 02a10a23 sb a0,52(sp) + 10da: 02c10aa3 sb a2,53(sp) + 10de: 02d10b23 sb a3,54(sp) uint8_t ok_edge = b.ok && !prev.ok; - fea: c002 sw zero,0(sp) - fec: 4712 lw a4,4(sp) - fee: c789 beqz a5,ff8 - ff0: 47a2 lw a5,8(sp) - ff2: 0017b793 seqz a5,a5 - ff6: c03e sw a5,0(sp) + 10e2: c002 sw zero,0(sp) + 10e4: 4712 lw a4,4(sp) + 10e6: c789 beqz a5,10f0 + 10e8: 47a2 lw a5,8(sp) + 10ea: 0017b793 seqz a5,a5 + 10ee: c03e sw a5,0(sp) uint8_t left_edge = b.left && !prev.left; - ff8: 46e2 lw a3,24(sp) + 10f0: 46e2 lw a3,24(sp) uint8_t ok_edge = b.ok && !prev.ok; - ffa: 00014783 lbu a5,0(sp) + 10f2: 00014783 lbu a5,0(sp) uint8_t left_edge = b.left && !prev.left; - ffe: 4581 li a1,0 - 1000: c299 beqz a3,1006 - 1002: 00173593 seqz a1,a4 + 10f6: 4581 li a1,0 + 10f8: c299 beqz a3,10fe + 10fa: 00173593 seqz a1,a4 uint8_t right_edge = b.right && !prev.right; - 1006: 4672 lw a2,28(sp) + 10fe: 4672 lw a2,28(sp) uint8_t left_edge = b.left && !prev.left; - 1008: 0ff5f713 zext.b a4,a1 + 1100: 0ff5f713 zext.b a4,a1 uint8_t right_edge = b.right && !prev.right; - 100c: 4681 li a3,0 - 100e: c219 beqz a2,1014 - 1010: 0014b693 seqz a3,s1 + 1104: 4681 li a3,0 + 1106: c219 beqz a2,110c + 1108: 0014b693 seqz a3,s1 uint8_t any_edge = ok_edge | left_edge | right_edge; - 1014: 8fd9 or a5,a5,a4 - 1016: 8fd5 or a5,a5,a3 + 110c: 8fd9 or a5,a5,a4 + 110e: 8fd5 or a5,a5,a3 prev = b; if (any_edge) idle_frames = 0; - 1018: c399 beqz a5,101e - 101a: c201a823 sw zero,-976(gp) # 2000002c + 1110: c399 beqz a5,1116 + 1112: c201aa23 sw zero,-972(gp) # 20000030 { switch (screen) { - 101e: c361c703 lbu a4,-970(gp) # 20000032 - 1022: 4611 li a2,4 - 1024: 7ee66963 bltu a2,a4,1816 - 1028: 6609 lui a2,0x2 - 102a: 070a slli a4,a4,0x2 - 102c: ce060613 addi a2,a2,-800 # 1ce0 - 1030: 9732 add a4,a4,a2 - 1032: 4318 lw a4,0(a4) - 1034: 8702 jr a4 + 1116: c3e1c703 lbu a4,-962(gp) # 2000003a + 111a: 4611 li a2,4 + 111c: 7ee66963 bltu a2,a4,190e + 1120: 6609 lui a2,0x2 + 1122: 070a slli a4,a4,0x2 + 1124: e6c60613 addi a2,a2,-404 # 1e6c + 1128: 9732 add a4,a4,a2 + 112a: 4318 lw a4,0(a4) + 112c: 8702 jr a4 case SCR_SELECT: if (left_edge) { - 1036: c185 beqz a1,1056 + 112e: c185 beqz a1,114e sel_species = (sel_species + SPECIES_COUNT - 1) % SPECIES_COUNT; - 1038: c2f1c503 lbu a0,-977(gp) # 2000002b - 103c: 458d li a1,3 - 103e: c236 sw a3,4(sp) - 1040: 0509 addi a0,a0,2 - 1042: 8b6ff0ef jal f8 <__modsi3> - 1046: c2a187a3 sb a0,-977(gp) # 2000002b + 1130: c331c503 lbu a0,-973(gp) # 2000002f + 1134: 458d li a1,3 + 1136: c236 sw a3,4(sp) + 1138: 0509 addi a0,a0,2 + 113a: fbffe0ef jal f8 <__modsi3> + 113e: c2a189a3 sb a0,-973(gp) # 2000002f beep(1047, 25); - 104a: 45e5 li a1,25 - 104c: 41700513 li a0,1047 - 1050: ac6ff0ef jal 316 - 1054: 4692 lw a3,4(sp) + 1142: 45e5 li a1,25 + 1144: 41700513 li a0,1047 + 1148: 9ceff0ef jal 316 + 114c: 4692 lw a3,4(sp) } if (right_edge) { - 1056: ce91 beqz a3,1072 + 114e: ce91 beqz a3,116a sel_species = (sel_species + 1) % SPECIES_COUNT; - 1058: c2f1c503 lbu a0,-977(gp) # 2000002b - 105c: 458d li a1,3 - 105e: 0505 addi a0,a0,1 - 1060: 898ff0ef jal f8 <__modsi3> - 1064: c2a187a3 sb a0,-977(gp) # 2000002b + 1150: c331c503 lbu a0,-973(gp) # 2000002f + 1154: 458d li a1,3 + 1156: 0505 addi a0,a0,1 + 1158: fa1fe0ef jal f8 <__modsi3> + 115c: c2a189a3 sb a0,-973(gp) # 2000002f beep(1047, 25); - 1068: 45e5 li a1,25 - 106a: 41700513 li a0,1047 - 106e: aa8ff0ef jal 316 + 1160: 45e5 li a1,25 + 1162: 41700513 li a0,1047 + 1166: 9b0ff0ef jal 316 } if (ok_edge) { // born! boot the chosen species - 1072: 4782 lw a5,0(sp) - 1074: c3b5 beqz a5,10d8 + 116a: 4782 lw a5,0(sp) + 116c: c3b5 beqz a5,11d0 pet.satiety = 80; - 1076: 645a5737 lui a4,0x645a5 - 107a: 05070713 addi a4,a4,80 # 645a5050 <_eusrstack+0x445a4850> - 107e: c4e1a423 sw a4,-952(gp) # 20000044 + 116e: 645a5737 lui a4,0x645a5 + 1172: 05070713 addi a4,a4,80 # 645a5050 <_eusrstack+0x445a4850> + 1176: c4e1a823 sw a4,-944(gp) # 2000004c pet.health = 100; - 1082: c4818793 addi a5,gp,-952 # 20000044 - 1086: 06400713 li a4,100 - 108a: 00e78223 sb a4,4(a5) + 117a: c5018793 addi a5,gp,-944 # 2000004c + 117e: 06400713 li a4,100 + 1182: 00e78223 sb a4,4(a5) pet.species = sel_species; - 108e: c2f1c703 lbu a4,-977(gp) # 2000002b + 1186: c331c703 lbu a4,-973(gp) # 2000002f pet.age_min = 0; - 1092: 00079323 sh zero,6(a5) + 118a: 00079323 sh zero,6(a5) pet.xp = 0; - 1096: 00079423 sh zero,8(a5) + 118e: 00079423 sh zero,8(a5) pet.species = sel_species; - 109a: 00e78523 sb a4,10(a5) + 1192: 00e78523 sb a4,10(a5) pet.level = 1; - 109e: 4705 li a4,1 - 10a0: 00e785a3 sb a4,11(a5) + 1196: 4705 li a4,1 + 1198: 00e785a3 sb a4,11(a5) pet.form = FORM_PROC; - 10a4: 0007a623 sw zero,12(a5) + 119c: 0007a623 sw zero,12(a5) pet.alive = 1; - 10a8: 00e78823 sb a4,16(a5) + 11a0: 00e78823 sb a4,16(a5) cursor = 0; - 10ac: c2018723 sb zero,-978(gp) # 2000002a + 11a4: c2018923 sb zero,-974(gp) # 2000002e evo_anim = 0; - 10b0: c4018223 sb zero,-956(gp) # 20000040 + 11a8: c4018623 sb zero,-948(gp) # 20000048 for (int i = 0; i < N_COUNT; i++) { warn_flag[i] = 0; crit_flag[i] = 0; } - 10b4: c201ae23 sw zero,-964(gp) # 20000038 + 11ac: c401a223 sw zero,-956(gp) # 20000040 pet_reset(); // sets screen = SCR_MAIN, species = sel_species beep(659, 80); beep(988, 120); - 10b8: 05000593 li a1,80 - 10bc: 29300513 li a0,659 + 11b0: 05000593 li a1,80 + 11b4: 29300513 li a0,659 screen = SCR_MAIN; - 10c0: c2e18b23 sb a4,-970(gp) # 20000032 + 11b8: c2e18f23 sb a4,-962(gp) # 2000003a for (int i = 0; i < N_COUNT; i++) { warn_flag[i] = 0; crit_flag[i] = 0; } - 10c4: c401a023 sw zero,-960(gp) # 2000003c + 11bc: c401a423 sw zero,-952(gp) # 20000044 beep(659, 80); beep(988, 120); - 10c8: a4eff0ef jal 316 - 10cc: 07800593 li a1,120 - 10d0: 3dc00513 li a0,988 - 10d4: a42ff0ef jal 316 + 11c0: 956ff0ef jal 316 + 11c4: 07800593 li a1,120 + 11c8: 3dc00513 li a0,988 + 11cc: 94aff0ef jal 316 ssd1306_setbuf(0); - 10d8: 36ad jal c42 + 11d0: 3c41 jal c60 draw_center_str(0, "~ $ adopt --pet"); - 10da: 6589 lui a1,0x2 - 10dc: b1c58593 addi a1,a1,-1252 # 1b1c - 10e0: 4501 li a0,0 - 10e2: e64ff0ef jal 746 + 11d2: 6589 lui a1,0x2 + 11d4: c8858593 addi a1,a1,-888 # 1c88 + 11d8: 4501 li a0,0 + 11da: d6cff0ef jal 746 if((x >= SSD1306_W) || (y >= SSD1306_H)) return; - 10e6: 4685 li a3,1 - 10e8: 08000613 li a2,128 - 10ec: 45a9 li a1,10 - 10ee: 4501 li a0,0 - 10f0: eb0ff0ef jal 7a0 + 11de: 4685 li a3,1 + 11e0: 08000613 li a2,128 + 11e4: 45a9 li a1,10 + 11e6: 4501 li a0,0 + 11e8: db8ff0ef jal 7a0 ssd1306_drawImage(48, 13, species_frames[sel_species][EXP_IDLE], - 10f4: c2f1c403 lbu s0,-977(gp) # 2000002b - 10f8: 6789 lui a5,0x2 - 10fa: 6ac78793 addi a5,a5,1708 # 26ac - 10fe: 00341713 slli a4,s0,0x3 - 1102: 8f01 sub a4,a4,s0 - 1104: 070a slli a4,a4,0x2 - 1106: 97ba add a5,a5,a4 - 1108: 4390 lw a2,0(a5) - 110a: 02000713 li a4,32 - 110e: 86ba mv a3,a4 - 1110: 45b5 li a1,13 - 1112: 03000513 li a0,48 - 1116: 8a3ff0ef jal 9b8 + 11ec: c331c403 lbu s0,-973(gp) # 2000002f + 11f0: 678d lui a5,0x3 + 11f2: 83878793 addi a5,a5,-1992 # 2838 + 11f6: 00341713 slli a4,s0,0x3 + 11fa: 8f01 sub a4,a4,s0 + 11fc: 070a slli a4,a4,0x2 + 11fe: 97ba add a5,a5,a4 + 1200: 4390 lw a2,0(a5) + 1202: 02000713 li a4,32 + 1206: 86ba mv a3,a4 + 1208: 45b5 li a1,13 + 120a: 03000513 li a0,48 + 120e: faaff0ef jal 9b8 p = s_cat(p, "< "); - 111a: 6589 lui a1,0x2 - 111c: b2c58593 addi a1,a1,-1236 # 1b2c - 1120: 0088 addi a0,sp,64 - 1122: 982ff0ef jal 2a4 + 1212: 6589 lui a1,0x2 + 1214: c9858593 addi a1,a1,-872 # 1c98 + 1218: 0088 addi a0,sp,64 + 121a: 88aff0ef jal 2a4 p = s_cat(p, species_names[sel_species]); - 1126: 6789 lui a5,0x2 - 1128: 040a slli s0,s0,0x2 - 112a: 5a078793 addi a5,a5,1440 # 25a0 - 112e: 97a2 add a5,a5,s0 - 1130: 438c lw a1,0(a5) - 1132: 972ff0ef jal 2a4 + 121e: 6789 lui a5,0x2 + 1220: 040a slli s0,s0,0x2 + 1222: 72c78793 addi a5,a5,1836 # 272c + 1226: 97a2 add a5,a5,s0 + 1228: 438c lw a1,0(a5) + 122a: 87aff0ef jal 2a4 p = s_cat(p, " >"); - 1136: 6589 lui a1,0x2 - 1138: b3058593 addi a1,a1,-1232 # 1b30 - 113c: 968ff0ef jal 2a4 + 122e: 6589 lui a1,0x2 + 1230: c9c58593 addi a1,a1,-868 # 1c9c + 1234: 870ff0ef jal 2a4 *p = 0; - 1140: 00050023 sb zero,0(a0) + 1238: 00050023 sb zero,0(a0) draw_center_str(47, line); - 1144: 008c addi a1,sp,64 - 1146: 02f00513 li a0,47 - 114a: dfcff0ef jal 746 + 123c: 008c addi a1,sp,64 + 123e: 02f00513 li a0,47 + 1242: d04ff0ef jal 746 draw_center_str(56, "L/R pick OK go"); - 114e: 6589 lui a1,0x2 - 1150: b3458593 addi a1,a1,-1228 # 1b34 + 1246: 6589 lui a1,0x2 + 1248: ca058593 addi a1,a1,-864 # 1ca0 draw_center_str(56, "OK: respawn"); - 1154: 03800513 li a0,56 - 1158: a98d j 15ca + 124c: 03800513 li a0,56 + 1250: a98d j 16c2 } draw_select(); break; case SCR_MAIN: if (left_edge) { - 115a: c185 beqz a1,117a + 1252: c185 beqz a1,1272 cursor = (cursor + ICON_COUNT - 1) % ICON_COUNT; - 115c: c2e1c503 lbu a0,-978(gp) # 2000002a - 1160: 459d li a1,7 - 1162: c236 sw a3,4(sp) - 1164: 0519 addi a0,a0,6 - 1166: f93fe0ef jal f8 <__modsi3> - 116a: c2a18723 sb a0,-978(gp) # 2000002a + 1254: c321c503 lbu a0,-974(gp) # 2000002e + 1258: 459d li a1,7 + 125a: c236 sw a3,4(sp) + 125c: 0519 addi a0,a0,6 + 125e: e9bfe0ef jal f8 <__modsi3> + 1262: c2a18923 sb a0,-974(gp) # 2000002e beep(1047, 25); - 116e: 45e5 li a1,25 - 1170: 41700513 li a0,1047 - 1174: 9a2ff0ef jal 316 - 1178: 4692 lw a3,4(sp) + 1266: 45e5 li a1,25 + 1268: 41700513 li a0,1047 + 126c: 8aaff0ef jal 316 + 1270: 4692 lw a3,4(sp) } if (right_edge) { - 117a: ce91 beqz a3,1196 + 1272: ce91 beqz a3,128e cursor = (cursor + 1) % ICON_COUNT; - 117c: c2e1c503 lbu a0,-978(gp) # 2000002a - 1180: 459d li a1,7 - 1182: 0505 addi a0,a0,1 - 1184: f75fe0ef jal f8 <__modsi3> - 1188: c2a18723 sb a0,-978(gp) # 2000002a + 1274: c321c503 lbu a0,-974(gp) # 2000002e + 1278: 459d li a1,7 + 127a: 0505 addi a0,a0,1 + 127c: e7dfe0ef jal f8 <__modsi3> + 1280: c2a18923 sb a0,-974(gp) # 2000002e beep(1047, 25); - 118c: 45e5 li a1,25 - 118e: 41700513 li a0,1047 - 1192: 984ff0ef jal 316 + 1284: 45e5 li a1,25 + 1286: 41700513 li a0,1047 + 128a: 88cff0ef jal 316 } if (ok_edge) do_action(cursor); - 1196: 4782 lw a5,0(sp) - 1198: c4818493 addi s1,gp,-952 # 20000044 - 119c: 0e078e63 beqz a5,1298 + 128e: 4782 lw a5,0(sp) + 1290: c5018493 addi s1,gp,-944 # 2000004c + 1294: 0e078e63 beqz a5,1390 switch (act) { - 11a0: c2e1c783 lbu a5,-978(gp) # 2000002a - 11a4: 4699 li a3,6 - 11a6: 0ef6e963 bltu a3,a5,1298 - 11aa: 6689 lui a3,0x2 - 11ac: 078a slli a5,a5,0x2 - 11ae: cf468693 addi a3,a3,-780 # 1cf4 - 11b2: 97b6 add a5,a5,a3 - 11b4: 439c lw a5,0(a5) - 11b6: 8782 jr a5 + 1298: c321c783 lbu a5,-974(gp) # 2000002e + 129c: 4699 li a3,6 + 129e: 0ef6e963 bltu a3,a5,1390 + 12a2: 6689 lui a3,0x2 + 12a4: 078a slli a5,a5,0x2 + 12a6: e8068693 addi a3,a3,-384 # 1e80 + 12aa: 97b6 add a5,a5,a3 + 12ac: 439c lw a5,0(a5) + 12ae: 8782 jr a5 pet.satiety = clamp100(pet.satiety + 30); - 11b8: 00048783 lb a5,0(s1) + 12b0: 00048783 lb a5,0(s1) static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 11bc: 06400713 li a4,100 + 12b4: 06400713 li a4,100 pet.satiety = clamp100(pet.satiety + 30); - 11c0: 07f9 addi a5,a5,30 + 12b8: 07f9 addi a5,a5,30 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 11c2: 04f75563 bge a4,a5,120c - 11c6: 87ba mv a5,a4 - 11c8: 00f48023 sb a5,0(s1) + 12ba: 04f75563 bge a4,a5,1304 + 12be: 87ba mv a5,a4 + 12c0: 00f48023 sb a5,0(s1) pet.hygiene = clamp100(pet.hygiene - 5); - 11cc: 00348783 lb a5,3(s1) + 12c4: 00348783 lb a5,3(s1) static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 11d0: 06400713 li a4,100 + 12c8: 06400713 li a4,100 pet.hygiene = clamp100(pet.hygiene - 5); - 11d4: 17ed addi a5,a5,-5 + 12cc: 17ed addi a5,a5,-5 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 11d6: 04f75063 bge a4,a5,1216 - 11da: 87ba mv a5,a4 - 11dc: 00f481a3 sb a5,3(s1) + 12ce: 04f75063 bge a4,a5,130e + 12d2: 87ba mv a5,a4 + 12d4: 00f481a3 sb a5,3(s1) static void react(uint8_t exp) { anim_exp = exp; anim_timer = ANIM_FRAMES; } - 11e0: 4411 li s0,4 - 11e2: c2818423 sb s0,-984(gp) # 20000024 - 11e6: 4731 li a4,12 + 12d8: 4411 li s0,4 + 12da: c2818623 sb s0,-980(gp) # 20000028 + 12de: 4731 li a4,12 beep(880, 60); beep(1175, 80); - 11e8: 03c00593 li a1,60 - 11ec: 37000513 li a0,880 + 12e0: 03c00593 li a1,60 + 12e4: 37000513 li a0,880 static void react(uint8_t exp) { anim_exp = exp; anim_timer = ANIM_FRAMES; } - 11f0: c2e18623 sb a4,-980(gp) # 20000028 + 12e8: c2e18823 sb a4,-976(gp) # 2000002c beep(880, 60); beep(1175, 80); - 11f4: 922ff0ef jal 316 - 11f8: 05000593 li a1,80 - 11fc: 49700513 li a0,1175 + 12ec: 82aff0ef jal 316 + 12f0: 05000593 li a1,80 + 12f4: 49700513 li a0,1175 beep(784, 60); beep(1047, 60); beep(1319, 90); - 1200: 916ff0ef jal 316 + 12f8: 81eff0ef jal 316 led_blink(); - 1204: 982ff0ef jal 386 + 12fc: 88aff0ef jal 386 add_xp(4); - 1208: 4511 li a0,4 - 120a: a069 j 1294 + 1300: 4511 li a0,4 + 1302: a069 j 138c static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 120c: fff7c713 not a4,a5 - 1210: 877d srai a4,a4,0x1f - 1212: 8ff9 and a5,a5,a4 - 1214: bf55 j 11c8 - 1216: fff7c713 not a4,a5 - 121a: 877d srai a4,a4,0x1f - 121c: 8ff9 and a5,a5,a4 - 121e: bf7d j 11dc + 1304: fff7c713 not a4,a5 + 1308: 877d srai a4,a4,0x1f + 130a: 8ff9 and a5,a5,a4 + 130c: bf55 j 12c0 + 130e: fff7c713 not a4,a5 + 1312: 877d srai a4,a4,0x1f + 1314: 8ff9 and a5,a5,a4 + 1316: bf7d j 12d4 if (pet.energy < 15) { beep(220, 120); break; } // too tired - 1220: 00248703 lb a4,2(s1) - 1224: 47b9 li a5,14 - 1226: 00e7c963 blt a5,a4,1238 - 122a: 07800593 li a1,120 - 122e: 0dc00513 li a0,220 + 1318: 00248703 lb a4,2(s1) + 131c: 47b9 li a5,14 + 131e: 00e7c963 blt a5,a4,1330 + 1322: 07800593 li a1,120 + 1326: 0dc00513 li a0,220 beep(659, 40); - 1232: 8e4ff0ef jal 316 + 132a: fedfe0ef jal 316 break; - 1236: a08d j 1298 + 132e: a08d j 1390 pet.happy = clamp100(pet.happy + 25); - 1238: 00148783 lb a5,1(s1) + 1330: 00148783 lb a5,1(s1) static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 123c: 06400693 li a3,100 + 1334: 06400693 li a3,100 pet.happy = clamp100(pet.happy + 25); - 1240: 07e5 addi a5,a5,25 + 1338: 07e5 addi a5,a5,25 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1242: 38f6d763 bge a3,a5,15d0 - 1246: 87b6 mv a5,a3 - 1248: 00f480a3 sb a5,1(s1) + 133a: 38f6d763 bge a3,a5,16c8 + 133e: 87b6 mv a5,a3 + 1340: 00f480a3 sb a5,1(s1) pet.energy = clamp100(pet.energy - 12); - 124c: ff470793 addi a5,a4,-12 + 1344: ff470793 addi a5,a4,-12 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1250: 06400713 li a4,100 - 1254: 00f75363 bge a4,a5,125a - 1258: 87ba mv a5,a4 - 125a: 00f48123 sb a5,2(s1) + 1348: 06400713 li a4,100 + 134c: 00f75363 bge a4,a5,1352 + 1350: 87ba mv a5,a4 + 1352: 00f48123 sb a5,2(s1) static void react(uint8_t exp) { anim_exp = exp; anim_timer = ANIM_FRAMES; } - 125e: 4709 li a4,2 - 1260: c2e18423 sb a4,-984(gp) # 20000024 + 1356: 4709 li a4,2 + 1358: c2e18623 sb a4,-980(gp) # 20000028 beep(988, 60); beep(1319, 60); beep(1568, 90); - 1264: 03c00593 li a1,60 + 135c: 03c00593 li a1,60 static void react(uint8_t exp) { anim_exp = exp; anim_timer = ANIM_FRAMES; } - 1268: 4731 li a4,12 + 1360: 4731 li a4,12 beep(988, 60); beep(1319, 60); beep(1568, 90); - 126a: 3dc00513 li a0,988 + 1362: 3dc00513 li a0,988 static void react(uint8_t exp) { anim_exp = exp; anim_timer = ANIM_FRAMES; } - 126e: c2e18623 sb a4,-980(gp) # 20000028 + 1366: c2e18823 sb a4,-976(gp) # 2000002c beep(988, 60); beep(1319, 60); beep(1568, 90); - 1272: 8a4ff0ef jal 316 - 1276: 03c00593 li a1,60 - 127a: 52700513 li a0,1319 - 127e: 898ff0ef jal 316 - 1282: 62000513 li a0,1568 - 1286: 05a00593 li a1,90 - 128a: 88cff0ef jal 316 + 136a: fadfe0ef jal 316 + 136e: 03c00593 li a1,60 + 1372: 52700513 li a0,1319 + 1376: fa1fe0ef jal 316 + 137a: 62000513 li a0,1568 + 137e: 05a00593 li a1,90 + 1382: f95fe0ef jal 316 led_blink(); - 128e: 8f8ff0ef jal 386 + 1386: 800ff0ef jal 386 add_xp(6); - 1292: 4519 li a0,6 + 138a: 4519 li a0,6 add_xp(4); - 1294: 91cff0ef jal 3b0 + 138c: 824ff0ef jal 3b0 ssd1306_setbuf(0); - 1298: 9abff0ef jal c42 + 1390: 8d1ff0ef jal c60 draw_center_str(0, menu_labels[cursor]); - 129c: c2e1c783 lbu a5,-978(gp) # 2000002a - 12a0: 4501 li a0,0 - 12a2: d03e sw a5,32(sp) - 12a4: 5702 lw a4,32(sp) - 12a6: 6789 lui a5,0x2 - 12a8: 73078793 addi a5,a5,1840 # 2730 - 12ac: 070a slli a4,a4,0x2 - 12ae: 97ba add a5,a5,a4 - 12b0: 438c lw a1,0(a5) - 12b2: c94ff0ef jal 746 + 1394: c321c783 lbu a5,-974(gp) # 2000002e + 1398: 4501 li a0,0 + 139a: d03e sw a5,32(sp) + 139c: 5702 lw a4,32(sp) + 139e: 678d lui a5,0x3 + 13a0: 8bc78793 addi a5,a5,-1860 # 28bc + 13a4: 070a slli a4,a4,0x2 + 13a6: 97ba add a5,a5,a4 + 13a8: 438c lw a1,0(a5) + 13aa: b9cff0ef jal 746 if (pet.alive && pet.health < 30 && (frame & 8)) - 12b6: 0104c783 lbu a5,16(s1) - 12ba: c83e sw a5,16(sp) - 12bc: c395 beqz a5,12e0 - 12be: 00448703 lb a4,4(s1) - 12c2: 47f5 li a5,29 - 12c4: 00e7ce63 blt a5,a4,12e0 - 12c8: c381a783 lw a5,-968(gp) # 20000034 - 12cc: 8ba1 andi a5,a5,8 - 12ce: cb89 beqz a5,12e0 + 13ae: 0104c783 lbu a5,16(s1) + 13b2: c83e sw a5,16(sp) + 13b4: c395 beqz a5,13d8 + 13b6: 00448703 lb a4,4(s1) + 13ba: 47f5 li a5,29 + 13bc: 00e7ce63 blt a5,a4,13d8 + 13c0: c401a783 lw a5,-960(gp) # 2000003c + 13c4: 8ba1 andi a5,a5,8 + 13c6: cb89 beqz a5,13d8 ssd1306_drawstr(0, 0, "!", 1); - 12d0: 6609 lui a2,0x2 - 12d2: 4685 li a3,1 - 12d4: b4460613 addi a2,a2,-1212 # 1b44 - 12d8: 4581 li a1,0 - 12da: 4501 li a0,0 - 12dc: f3dfe0ef jal 218 + 13c8: 6609 lui a2,0x2 + 13ca: 4685 li a3,1 + 13cc: cb060613 addi a2,a2,-848 # 1cb0 + 13d0: 4581 li a1,0 + 13d2: 4501 li a0,0 + 13d4: e45fe0ef jal 218 bp = u_cat(bp, pet.level); - 12e0: 00b4c583 lbu a1,11(s1) + 13d8: 00b4c583 lbu a1,11(s1) *bp++ = 'L'; - 12e4: 04c00793 li a5,76 + 13dc: 04c00793 li a5,76 bp = u_cat(bp, pet.level); - 12e8: 03910513 addi a0,sp,57 + 13e0: 03910513 addi a0,sp,57 *bp++ = 'L'; - 12ec: 02f10c23 sb a5,56(sp) + 13e4: 02f10c23 sb a5,56(sp) bp = u_cat(bp, pet.level); - 12f0: fc7fe0ef jal 2b6 + 13e8: ecffe0ef jal 2b6 *bp = 0; - 12f4: 00050023 sb zero,0(a0) + 13ec: 00050023 sb zero,0(a0) ssd1306_drawstr(SSD1306_W - 2 * 8, 0, badge, 1); - 12f8: 4685 li a3,1 - 12fa: 1830 addi a2,sp,56 - 12fc: 4581 li a1,0 - 12fe: 07000513 li a0,112 - 1302: f17fe0ef jal 218 - 1306: 4685 li a3,1 - 1308: 08000613 li a2,128 - 130c: 45a9 li a1,10 - 130e: 4501 li a0,0 - 1310: c90ff0ef jal 7a0 + 13f0: 4685 li a3,1 + 13f2: 1830 addi a2,sp,56 + 13f4: 4581 li a1,0 + 13f6: 07000513 li a0,112 + 13fa: e1ffe0ef jal 218 + 13fe: 4685 li a3,1 + 1400: 08000613 li a2,128 + 1404: 45a9 li a1,10 + 1406: 4501 li a0,0 + 1408: b98ff0ef jal 7a0 if (pet.sleeping) { - 1314: 00f4c403 lbu s0,15(s1) - 1318: 38040463 beqz s0,16a0 + 140c: 00f4c403 lbu s0,15(s1) + 1410: 38040463 beqz s0,1798 ssd1306_drawstr(px + PANA_W - 2, 14, "z", 1); - 131c: 6609 lui a2,0x2 - 131e: 4685 li a3,1 - 1320: b4860613 addi a2,a2,-1208 # 1b48 - 1324: 45b9 li a1,14 - 1326: 04e00513 li a0,78 - 132a: eeffe0ef jal 218 + 1414: 6609 lui a2,0x2 + 1416: 4685 li a3,1 + 1418: cb460613 addi a2,a2,-844 # 1cb4 + 141c: 45b9 li a1,14 + 141e: 04e00513 li a0,78 + 1422: df7fe0ef jal 218 ssd1306_drawstr(px + PANA_W + 4, 12, "Z", 1); - 132e: 6609 lui a2,0x2 - 1330: 4685 li a3,1 - 1332: b4c60613 addi a2,a2,-1204 # 1b4c - 1336: 45b1 li a1,12 - 1338: 05400513 li a0,84 - 133c: eddfe0ef jal 218 - 1340: 03000793 li a5,48 - 1344: c43e sw a5,8(sp) + 1426: 6609 lui a2,0x2 + 1428: 4685 li a3,1 + 142a: cb860613 addi a2,a2,-840 # 1cb8 + 142e: 45b1 li a1,12 + 1430: 05400513 li a0,84 + 1434: de5fe0ef jal 218 + 1438: 03000793 li a5,48 + 143c: c43e sw a5,8(sp) px = 48; py = 16; - 1346: 47c1 li a5,16 - 1348: c03e sw a5,0(sp) - 134a: 03000793 li a5,48 - 134e: c23e sw a5,4(sp) + 143e: 47c1 li a5,16 + 1440: c03e sw a5,0(sp) + 1442: 03000793 li a5,48 + 1446: c23e sw a5,4(sp) if (pet.form == FORM_CLAUDE) spr = spr_claude; - 1350: 00c4c783 lbu a5,12(s1) - 1354: 6609 lui a2,0x2 - 1356: 62c60613 addi a2,a2,1580 # 262c - 135a: c63e sw a5,12(sp) - 135c: 4732 lw a4,12(sp) - 135e: 478d li a5,3 - 1360: 02f70b63 beq a4,a5,1396 + 1448: 00c4c783 lbu a5,12(s1) + 144c: 6609 lui a2,0x2 + 144e: 7b860613 addi a2,a2,1976 # 27b8 + 1452: c63e sw a5,12(sp) + 1454: 4732 lw a4,12(sp) + 1456: 478d li a5,3 + 1458: 02f70b63 beq a4,a5,148e else if (pet.form == FORM_GLITCH) spr = spr_glitch; - 1364: 46b2 lw a3,12(sp) - 1366: 4711 li a4,4 - 1368: 3ae68663 beq a3,a4,1714 + 145c: 46b2 lw a3,12(sp) + 145e: 4711 li a4,4 + 1460: 3ae68663 beq a3,a4,180c if (!pet.alive) return EXP_DEAD; - 136c: 4742 lw a4,16(sp) + 1464: 4742 lw a4,16(sp) else spr = species_frames[pet.species][current_expression()]; - 136e: 00a4c683 lbu a3,10(s1) + 1466: 00a4c683 lbu a3,10(s1) if (!pet.alive) return EXP_DEAD; - 1372: 4519 li a0,6 - 1374: c719 beqz a4,1382 + 146a: 4519 li a0,6 + 146c: c719 beqz a4,147a if (anim_timer) return anim_exp; - 1376: c2c1c703 lbu a4,-980(gp) # 20000028 - 137a: 34070f63 beqz a4,16d8 - 137e: c281c503 lbu a0,-984(gp) # 20000024 + 146e: c301c703 lbu a4,-976(gp) # 2000002c + 1472: 34070f63 beqz a4,17d0 + 1476: c2c1c503 lbu a0,-980(gp) # 20000028 else spr = species_frames[pet.species][current_expression()]; - 1382: 00369793 slli a5,a3,0x3 - 1386: 8f95 sub a5,a5,a3 - 1388: 6709 lui a4,0x2 - 138a: 97aa add a5,a5,a0 - 138c: 078a slli a5,a5,0x2 - 138e: 6ac70713 addi a4,a4,1708 # 26ac - 1392: 97ba add a5,a5,a4 - 1394: 4390 lw a2,0(a5) + 147a: 00369793 slli a5,a3,0x3 + 147e: 8f95 sub a5,a5,a3 + 1480: 670d lui a4,0x3 + 1482: 97aa add a5,a5,a0 + 1484: 078a slli a5,a5,0x2 + 1486: 83870713 addi a4,a4,-1992 # 2838 + 148a: 97ba add a5,a5,a4 + 148c: 4390 lw a2,0(a5) ssd1306_drawImage(x, y, spr, PANA_W, PANA_H, 0); - 1396: 4582 lw a1,0(sp) - 1398: 4522 lw a0,8(sp) - 139a: 02000713 li a4,32 - 139e: 86ba mv a3,a4 - 13a0: c832 sw a2,16(sp) - 13a2: e16ff0ef jal 9b8 + 148e: 4582 lw a1,0(sp) + 1490: 4522 lw a0,8(sp) + 1492: 02000713 li a4,32 + 1496: 86ba mv a3,a4 + 1498: c832 sw a2,16(sp) + 149a: d1eff0ef jal 9b8 if (spr != spr_claude && spr != spr_glitch && !pet.sleeping) - 13a6: 4642 lw a2,16(sp) - 13a8: 6789 lui a5,0x2 - 13aa: 62c78793 addi a5,a5,1580 # 262c - 13ae: 10f60f63 beq a2,a5,14cc - 13b2: 6789 lui a5,0x2 - 13b4: 5ac78793 addi a5,a5,1452 # 25ac - 13b8: 10f60a63 beq a2,a5,14cc - 13bc: 10041863 bnez s0,14cc + 149e: 4642 lw a2,16(sp) + 14a0: 6789 lui a5,0x2 + 14a2: 7b878793 addi a5,a5,1976 # 27b8 + 14a6: 10f60f63 beq a2,a5,15c4 + 14aa: 6789 lui a5,0x2 + 14ac: 73878793 addi a5,a5,1848 # 2738 + 14b0: 10f60a63 beq a2,a5,15c4 + 14b4: 10041863 bnez s0,15c4 if (pet.form >= FORM_USER) { // shades - 13c0: 47b2 lw a5,12(sp) - 13c2: 14078263 beqz a5,1506 + 14b8: 47b2 lw a5,12(sp) + 14ba: 14078263 beqz a5,15fe uint8_t cy = eye_cy[sp], lx = eye_lx[sp], rx = eye_rx[sp]; - 13c6: 00a4c703 lbu a4,10(s1) - 13ca: c0c18793 addi a5,gp,-1012 # 20000008 - 13ce: 97ba add a5,a5,a4 - 13d0: 0007c403 lbu s0,0(a5) - 13d4: c1418693 addi a3,gp,-1004 # 20000010 - 13d8: c1018793 addi a5,gp,-1008 # 2000000c - 13dc: 97ba add a5,a5,a4 - 13de: 9736 add a4,a4,a3 + 14be: 00a4c703 lbu a4,10(s1) + 14c2: c0c18793 addi a5,gp,-1012 # 20000008 + 14c6: 97ba add a5,a5,a4 + 14c8: 0007c403 lbu s0,0(a5) + 14cc: c1418693 addi a3,gp,-1004 # 20000010 + 14d0: c1018793 addi a5,gp,-1008 # 2000000c + 14d4: 97ba add a5,a5,a4 + 14d6: 9736 add a4,a4,a3 ssd1306_fillRect(x + lx - 3, y + cy - 2, 7, 4, 0); - 13e0: 0007c303 lbu t1,0(a5) - 13e4: 00074703 lbu a4,0(a4) - 13e8: 4682 lw a3,0(sp) - 13ea: 4792 lw a5,4(sp) - 13ec: 461d li a2,7 - 13ee: 00d702b3 add t0,a4,a3 - 13f2: 979a add a5,a5,t1 - 13f4: ffe28593 addi a1,t0,-2 - 13f8: ffd78513 addi a0,a5,-3 - 13fc: 4701 li a4,0 - 13fe: 4691 li a3,4 - 1400: d61a sw t1,44(sp) - 1402: d416 sw t0,40(sp) - 1404: d22e sw a1,36(sp) - 1406: c83e sw a5,16(sp) - 1408: db9fe0ef jal 1c0 + 14d8: 0007c303 lbu t1,0(a5) + 14dc: 00074703 lbu a4,0(a4) + 14e0: 4682 lw a3,0(sp) + 14e2: 4792 lw a5,4(sp) + 14e4: 461d li a2,7 + 14e6: 00d702b3 add t0,a4,a3 + 14ea: 979a add a5,a5,t1 + 14ec: ffe28593 addi a1,t0,-2 + 14f0: ffd78513 addi a0,a5,-3 + 14f4: 4701 li a4,0 + 14f6: 4691 li a3,4 + 14f8: d61a sw t1,44(sp) + 14fa: d416 sw t0,40(sp) + 14fc: d22e sw a1,36(sp) + 14fe: c83e sw a5,16(sp) + 1500: cc1fe0ef jal 1c0 ssd1306_fillRect(x + rx - 3, y + cy - 2, 7, 4, 0); - 140c: 4792 lw a5,4(sp) - 140e: 5592 lw a1,36(sp) - 1410: 4701 li a4,0 - 1412: 00878533 add a0,a5,s0 - 1416: 461d li a2,7 - 1418: 4691 li a3,4 - 141a: 1575 addi a0,a0,-3 - 141c: da5fe0ef jal 1c0 + 1504: 4792 lw a5,4(sp) + 1506: 5592 lw a1,36(sp) + 1508: 4701 li a4,0 + 150a: 00878533 add a0,a5,s0 + 150e: 461d li a2,7 + 1510: 4691 li a3,4 + 1512: 1575 addi a0,a0,-3 + 1514: cadfe0ef jal 1c0 if (rx - lx > 7) - 1420: 5332 lw t1,44(sp) - 1422: 471d li a4,7 - 1424: 47c2 lw a5,16(sp) - 1426: 40640633 sub a2,s0,t1 - 142a: 52a2 lw t0,40(sp) - 142c: 02c75263 bge a4,a2,1450 + 1518: 5332 lw t1,44(sp) + 151a: 471d li a4,7 + 151c: 47c2 lw a5,16(sp) + 151e: 40640633 sub a2,s0,t1 + 1522: 52a2 lw t0,40(sp) + 1524: 02c75263 bge a4,a2,1548 ssd1306_drawFastHLine(x + lx + 4, y + cy - 1, rx - lx - 7, 0); - 1430: 00478513 addi a0,a5,4 - 1434: 07f00793 li a5,127 - 1438: 00a7cc63 blt a5,a0,1450 - 143c: fff28593 addi a1,t0,-1 - 1440: 03f00793 li a5,63 - 1444: 00b7c663 blt a5,a1,1450 - 1448: 4681 li a3,0 - 144a: 1665 addi a2,a2,-7 - 144c: b54ff0ef jal 7a0 + 1528: 00478513 addi a0,a5,4 + 152c: 07f00793 li a5,127 + 1530: 00a7cc63 blt a5,a0,1548 + 1534: fff28593 addi a1,t0,-1 + 1538: 03f00793 li a5,63 + 153c: 00b7c663 blt a5,a1,1548 + 1540: 4681 li a3,0 + 1542: 1665 addi a2,a2,-7 + 1544: a5cff0ef jal 7a0 if (pet.form >= FORM_ROOT) { // gaming headset + mic boom - 1450: 4732 lw a4,12(sp) - 1452: 4785 li a5,1 - 1454: 0af70963 beq a4,a5,1506 + 1548: 4732 lw a4,12(sp) + 154a: 4785 li a5,1 + 154c: 0af70963 beq a4,a5,15fe ssd1306_drawLine(x + 3, y + 10, x + 9, y + 2, 0); - 1458: 4792 lw a5,4(sp) - 145a: 078d addi a5,a5,3 - 145c: d23e sw a5,36(sp) - 145e: 4782 lw a5,0(sp) - 1460: 5512 lw a0,36(sp) - 1462: 00a78413 addi s0,a5,10 - 1466: 4792 lw a5,4(sp) - 1468: 85a2 mv a1,s0 - 146a: 07a5 addi a5,a5,9 - 146c: d43e sw a5,40(sp) - 146e: 4782 lw a5,0(sp) - 1470: 5622 lw a2,40(sp) - 1472: 0789 addi a5,a5,2 - 1474: 86be mv a3,a5 - 1476: c83e sw a5,16(sp) - 1478: b6cff0ef jal 7e4 + 1550: 4792 lw a5,4(sp) + 1552: 078d addi a5,a5,3 + 1554: d23e sw a5,36(sp) + 1556: 4782 lw a5,0(sp) + 1558: 5512 lw a0,36(sp) + 155a: 00a78413 addi s0,a5,10 + 155e: 4792 lw a5,4(sp) + 1560: 85a2 mv a1,s0 + 1562: 07a5 addi a5,a5,9 + 1564: d43e sw a5,40(sp) + 1566: 4782 lw a5,0(sp) + 1568: 5622 lw a2,40(sp) + 156a: 0789 addi a5,a5,2 + 156c: 86be mv a3,a5 + 156e: c83e sw a5,16(sp) + 1570: a74ff0ef jal 7e4 ssd1306_drawLine(x + 9, y + 2, x + 23, y + 2, 0); - 147c: 4792 lw a5,4(sp) - 147e: 46c2 lw a3,16(sp) - 1480: 5522 lw a0,40(sp) - 1482: 07dd addi a5,a5,23 - 1484: 863e mv a2,a5 - 1486: 85b6 mv a1,a3 - 1488: d63e sw a5,44(sp) - 148a: b5aff0ef jal 7e4 + 1574: 4792 lw a5,4(sp) + 1576: 46c2 lw a3,16(sp) + 1578: 5522 lw a0,40(sp) + 157a: 07dd addi a5,a5,23 + 157c: 863e mv a2,a5 + 157e: 85b6 mv a1,a3 + 1580: d63e sw a5,44(sp) + 1582: a62ff0ef jal 7e4 ssd1306_drawLine(x + 23, y + 2, x + 29, y + 10, 0); - 148e: 4792 lw a5,4(sp) - 1490: 45c2 lw a1,16(sp) - 1492: 5532 lw a0,44(sp) - 1494: 01d78613 addi a2,a5,29 - 1498: 86a2 mv a3,s0 - 149a: b4aff0ef jal 7e4 + 1586: 4792 lw a5,4(sp) + 1588: 45c2 lw a1,16(sp) + 158a: 5532 lw a0,44(sp) + 158c: 01d78613 addi a2,a5,29 + 1590: 86a2 mv a3,s0 + 1592: a52ff0ef jal 7e4 ssd1306_fillRect(x + 1, y + 12, 4, 7, 0); - 149e: 4782 lw a5,0(sp) - 14a0: 469d li a3,7 - 14a2: 4611 li a2,4 - 14a4: 00c78593 addi a1,a5,12 - 14a8: 4792 lw a5,4(sp) - 14aa: 4701 li a4,0 - 14ac: 00178513 addi a0,a5,1 - 14b0: d11fe0ef jal 1c0 + 1596: 4782 lw a5,0(sp) + 1598: 469d li a3,7 + 159a: 4611 li a2,4 + 159c: 00c78593 addi a1,a5,12 + 15a0: 4792 lw a5,4(sp) + 15a2: 4701 li a4,0 + 15a4: 00178513 addi a0,a5,1 + 15a8: c19fe0ef jal 1c0 ssd1306_drawLine(x + 3, y + 18, x + 10, y + 24, 0); - 14b4: 4782 lw a5,0(sp) - 14b6: 5512 lw a0,36(sp) - 14b8: 01878693 addi a3,a5,24 - 14bc: 4792 lw a5,4(sp) - 14be: 00a78613 addi a2,a5,10 - 14c2: 4782 lw a5,0(sp) - 14c4: 01278593 addi a1,a5,18 - 14c8: b1cff0ef jal 7e4 + 15ac: 4782 lw a5,0(sp) + 15ae: 5512 lw a0,36(sp) + 15b0: 01878693 addi a3,a5,24 + 15b4: 4792 lw a5,4(sp) + 15b6: 00a78613 addi a2,a5,10 + 15ba: 4782 lw a5,0(sp) + 15bc: 01278593 addi a1,a5,18 + 15c0: a24ff0ef jal 7e4 if (pet.form == FORM_CLAUDE) { - 14cc: 4732 lw a4,12(sp) - 14ce: 478d li a5,3 - 14d0: 02f71b63 bne a4,a5,1506 + 15c4: 4732 lw a4,12(sp) + 15c6: 478d li a5,3 + 15c8: 02f71b63 bne a4,a5,15fe ssd1306_drawPixel(x - 2 + (frame & 3), y + 4, 1); - 14d4: c381a403 lw s0,-968(gp) # 20000034 - 14d8: 4782 lw a5,0(sp) - 14da: 4605 li a2,1 - 14dc: 00347513 andi a0,s0,3 - 14e0: 00478593 addi a1,a5,4 - 14e4: 47a2 lw a5,8(sp) - 14e6: 1579 addi a0,a0,-2 - 14e8: 953e add a0,a0,a5 - 14ea: c9bfe0ef jal 184 + 15cc: c401a403 lw s0,-960(gp) # 2000003c + 15d0: 4782 lw a5,0(sp) + 15d2: 4605 li a2,1 + 15d4: 00347513 andi a0,s0,3 + 15d8: 00478593 addi a1,a5,4 + 15dc: 47a2 lw a5,8(sp) + 15de: 1579 addi a0,a0,-2 + 15e0: 953e add a0,a0,a5 + 15e2: ba3fe0ef jal 184 ssd1306_drawPixel(x + PANA_W + (frame & 1), y + 10, 1); - 14ee: 4782 lw a5,0(sp) - 14f0: 00147513 andi a0,s0,1 - 14f4: 02050513 addi a0,a0,32 - 14f8: 00a78593 addi a1,a5,10 - 14fc: 47a2 lw a5,8(sp) - 14fe: 4605 li a2,1 - 1500: 953e add a0,a0,a5 - 1502: c83fe0ef jal 184 - 1506: 4685 li a3,1 - 1508: 08000613 li a2,128 - 150c: 02e00593 li a1,46 - 1510: 4501 li a0,0 - 1512: a8eff0ef jal 7a0 + 15e6: 4782 lw a5,0(sp) + 15e8: 00147513 andi a0,s0,1 + 15ec: 02050513 addi a0,a0,32 + 15f0: 00a78593 addi a1,a5,10 + 15f4: 47a2 lw a5,8(sp) + 15f6: 4605 li a2,1 + 15f8: 953e add a0,a0,a5 + 15fa: b8bfe0ef jal 184 + 15fe: 4685 li a3,1 + 1600: 08000613 li a2,128 + 1604: 02e00593 li a1,46 + 1608: 4501 li a0,0 + 160a: 996ff0ef jal 7a0 for (uint8_t i = 0; i < pet.poop; i++) - 1516: 4401 li s0,0 - 1518: 00e4c783 lbu a5,14(s1) - 151c: 20f46063 bltu s0,a5,171c - 1520: 4401 li s0,0 + 160e: 4401 li s0,0 + 1610: 00e4c783 lbu a5,14(s1) + 1614: 20f46063 bltu s0,a5,1814 + 1618: 4401 li s0,0 ssd1306_drawImage(x, 48, menu_icons[i], ICON_W, ICON_H, 0); - 1522: 6709 lui a4,0x2 - 1524: 70070713 addi a4,a4,1792 # 2700 - 1528: 00241793 slli a5,s0,0x2 - 152c: 97ba add a5,a5,a4 - 152e: 00341493 slli s1,s0,0x3 - 1532: 4390 lw a2,0(a5) - 1534: 94a2 add s1,s1,s0 - 1536: 4741 li a4,16 - 1538: 0486 slli s1,s1,0x1 - 153a: 86ba mv a3,a4 - 153c: 03000593 li a1,48 - 1540: 00148513 addi a0,s1,1 - 1544: c74ff0ef jal 9b8 + 161a: 670d lui a4,0x3 + 161c: 88c70713 addi a4,a4,-1908 # 288c + 1620: 00241793 slli a5,s0,0x2 + 1624: 97ba add a5,a5,a4 + 1626: 00341493 slli s1,s0,0x3 + 162a: 4390 lw a2,0(a5) + 162c: 94a2 add s1,s1,s0 + 162e: 4741 li a4,16 + 1630: 0486 slli s1,s1,0x1 + 1632: 86ba mv a3,a4 + 1634: 03000593 li a1,48 + 1638: 00148513 addi a0,s1,1 + 163c: b7cff0ef jal 9b8 if (i == cursor) - 1548: 5702 lw a4,32(sp) - 154a: 0ff47793 zext.b a5,s0 - 154e: 00f71963 bne a4,a5,1560 + 1640: 5702 lw a4,32(sp) + 1642: 0ff47793 zext.b a5,s0 + 1646: 00f71963 bne a4,a5,1658 ssd1306_drawRect(x - 1, 47, ICON_W + 1, ICON_H + 1, 1); - 1552: 46c5 li a3,17 - 1554: 8636 mv a2,a3 - 1556: 02f00593 li a1,47 - 155a: 8526 mv a0,s1 - 155c: b9eff0ef jal 8fa + 164a: 46c5 li a3,17 + 164c: 8636 mv a2,a3 + 164e: 02f00593 li a1,47 + 1652: 8526 mv a0,s1 + 1654: aa6ff0ef jal 8fa for (uint8_t i = 0; i < ICON_COUNT; i++) { - 1560: 0405 addi s0,s0,1 - 1562: 479d li a5,7 - 1564: faf41fe3 bne s0,a5,1522 + 1658: 0405 addi s0,s0,1 + 165a: 479d li a5,7 + 165c: faf41fe3 bne s0,a5,161a if (evo_anim) draw_evo_banner(); // celebratory overlay on top - 1568: c441c783 lbu a5,-956(gp) # 20000040 - 156c: 2a078363 beqz a5,1812 + 1660: c4c1c783 lbu a5,-948(gp) # 20000048 + 1664: 2a078363 beqz a5,190a ssd1306_fillRect(6, 18, SSD1306_W - 12, 24, 0); - 1570: 4701 li a4,0 - 1572: 46e1 li a3,24 - 1574: 07400613 li a2,116 - 1578: 45c9 li a1,18 - 157a: 4519 li a0,6 - 157c: c45fe0ef jal 1c0 + 1668: 4701 li a4,0 + 166a: 46e1 li a3,24 + 166c: 07400613 li a2,116 + 1670: 45c9 li a1,18 + 1672: 4519 li a0,6 + 1674: b4dfe0ef jal 1c0 ssd1306_drawRect(6, 18, SSD1306_W - 12, 24, 1); - 1580: 46e1 li a3,24 - 1582: 07400613 li a2,116 - 1586: 45c9 li a1,18 - 1588: 4519 li a0,6 - 158a: b70ff0ef jal 8fa + 1678: 46e1 li a3,24 + 167a: 07400613 li a2,116 + 167e: 45c9 li a1,18 + 1680: 4519 li a0,6 + 1682: a78ff0ef jal 8fa draw_center_str(21, ">> evolving"); - 158e: 6589 lui a1,0x2 - 1590: b5058593 addi a1,a1,-1200 # 1b50 - 1594: 4555 li a0,21 - 1596: 9b0ff0ef jal 746 + 1686: 6589 lui a1,0x2 + 1688: cbc58593 addi a1,a1,-836 # 1cbc + 168c: 4555 li a0,21 + 168e: 8b8ff0ef jal 746 p = s_cat(p, "[ "); - 159a: 6589 lui a1,0x2 - 159c: b5c58593 addi a1,a1,-1188 # 1b5c - 15a0: 0088 addi a0,sp,64 - 15a2: d03fe0ef jal 2a4 + 1692: 6589 lui a1,0x2 + 1694: cc858593 addi a1,a1,-824 # 1cc8 + 1698: 0088 addi a0,sp,64 + 169a: c0bfe0ef jal 2a4 p = s_cat(p, form_names[pet.form]); - 15a6: 47b2 lw a5,12(sp) - 15a8: 6709 lui a4,0x2 - 15aa: 71c70713 addi a4,a4,1820 # 271c - 15ae: 078a slli a5,a5,0x2 - 15b0: 97ba add a5,a5,a4 - 15b2: 438c lw a1,0(a5) - 15b4: cf1fe0ef jal 2a4 + 169e: 47b2 lw a5,12(sp) + 16a0: 670d lui a4,0x3 + 16a2: 8a870713 addi a4,a4,-1880 # 28a8 + 16a6: 078a slli a5,a5,0x2 + 16a8: 97ba add a5,a5,a4 + 16aa: 438c lw a1,0(a5) + 16ac: bf9fe0ef jal 2a4 p = s_cat(p, " ]"); - 15b8: 6589 lui a1,0x2 - 15ba: b6058593 addi a1,a1,-1184 # 1b60 - 15be: ce7fe0ef jal 2a4 + 16b0: 6589 lui a1,0x2 + 16b2: ccc58593 addi a1,a1,-820 # 1ccc + 16b6: beffe0ef jal 2a4 *p = 0; - 15c2: 00050023 sb zero,0(a0) + 16ba: 00050023 sb zero,0(a0) draw_center_str(31, b); - 15c6: 008c addi a1,sp,64 - 15c8: 457d li a0,31 + 16be: 008c addi a1,sp,64 + 16c0: 457d li a0,31 draw_center_str(56, "OK: respawn"); - 15ca: 97cff0ef jal 746 - 15ce: a491 j 1812 + 16c2: 884ff0ef jal 746 + 16c6: a491 j 190a static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 15d0: fff7c693 not a3,a5 - 15d4: 86fd srai a3,a3,0x1f - 15d6: 8ff5 and a5,a5,a3 - 15d8: b985 j 1248 + 16c8: fff7c693 not a3,a5 + 16cc: 86fd srai a3,a3,0x1f + 16ce: 8ff5 and a5,a5,a3 + 16d0: b985 j 1340 pet.sleeping = !pet.sleeping; - 15da: 00f4c503 lbu a0,15(s1) + 16d2: 00f4c503 lbu a0,15(s1) beep(pet.sleeping ? 440 : 660, 120); - 15de: 07800593 li a1,120 + 16d6: 07800593 li a1,120 pet.sleeping = !pet.sleeping; - 15e2: 00153793 seqz a5,a0 + 16da: 00153793 seqz a5,a0 beep(pet.sleeping ? 440 : 660, 120); - 15e6: 00a03533 snez a0,a0 - 15ea: 40a00533 neg a0,a0 - 15ee: 0dc57513 andi a0,a0,220 + 16de: 00a03533 snez a0,a0 + 16e2: 40a00533 neg a0,a0 + 16e6: 0dc57513 andi a0,a0,220 pet.sleeping = !pet.sleeping; - 15f2: 00f487a3 sb a5,15(s1) + 16ea: 00f487a3 sb a5,15(s1) beep(pet.sleeping ? 440 : 660, 120); - 15f6: 1b850513 addi a0,a0,440 - 15fa: b925 j 1232 + 16ee: 1b850513 addi a0,a0,440 + 16f2: b925 j 132a pet.happy = clamp100(pet.happy + 5); - 15fc: 00148783 lb a5,1(s1) + 16f4: 00148783 lb a5,1(s1) pet.hygiene = 100; - 1600: 06400693 li a3,100 + 16f8: 06400693 li a3,100 pet.poop = 0; - 1604: 00048723 sb zero,14(s1) + 16fc: 00048723 sb zero,14(s1) pet.hygiene = 100; - 1608: 00d481a3 sb a3,3(s1) + 1700: 00d481a3 sb a3,3(s1) pet.happy = clamp100(pet.happy + 5); - 160c: 0795 addi a5,a5,5 - 160e: c4818713 addi a4,gp,-952 # 20000044 + 1704: 0795 addi a5,a5,5 + 1706: c5018713 addi a4,gp,-944 # 2000004c static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1612: 02f6d363 bge a3,a5,1638 - 1616: 87b6 mv a5,a3 + 170a: 02f6d363 bge a3,a5,1730 + 170e: 87b6 mv a5,a3 beep(1319, 50); beep(1047, 50); - 1618: 03200593 li a1,50 - 161c: 52700513 li a0,1319 + 1710: 03200593 li a1,50 + 1714: 52700513 li a0,1319 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1620: 00f700a3 sb a5,1(a4) + 1718: 00f700a3 sb a5,1(a4) beep(1319, 50); beep(1047, 50); - 1624: cf3fe0ef jal 316 - 1628: 41700513 li a0,1047 - 162c: 03200593 li a1,50 - 1630: ce7fe0ef jal 316 + 171c: bfbfe0ef jal 316 + 1720: 41700513 li a0,1047 + 1724: 03200593 li a1,50 + 1728: beffe0ef jal 316 add_xp(3); - 1634: 450d li a0,3 - 1636: b9b9 j 1294 + 172c: 450d li a0,3 + 172e: b9b9 j 138c static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1638: fff7c693 not a3,a5 - 163c: 86fd srai a3,a3,0x1f - 163e: 8ff5 and a5,a5,a3 - 1640: bfe1 j 1618 + 1730: fff7c693 not a3,a5 + 1734: 86fd srai a3,a3,0x1f + 1736: 8ff5 and a5,a5,a3 + 1738: bfe1 j 1710 pet.health = clamp100(pet.health + 35); - 1642: 00448783 lb a5,4(s1) + 173a: 00448783 lb a5,4(s1) static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 1646: 06400713 li a4,100 + 173e: 06400713 li a4,100 pet.health = clamp100(pet.health + 35); - 164a: 02378793 addi a5,a5,35 + 1742: 02378793 addi a5,a5,35 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 164e: 02f75663 bge a4,a5,167a - 1652: 87ba mv a5,a4 + 1746: 02f75663 bge a4,a5,1772 + 174a: 87ba mv a5,a4 beep(784, 60); beep(1047, 60); beep(1319, 90); - 1654: 03c00593 li a1,60 - 1658: 31000513 li a0,784 + 174c: 03c00593 li a1,60 + 1750: 31000513 li a0,784 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 165c: 00f48223 sb a5,4(s1) + 1754: 00f48223 sb a5,4(s1) beep(784, 60); beep(1047, 60); beep(1319, 90); - 1660: cb7fe0ef jal 316 - 1664: 03c00593 li a1,60 - 1668: 41700513 li a0,1047 - 166c: cabfe0ef jal 316 - 1670: 05a00593 li a1,90 - 1674: 52700513 li a0,1319 - 1678: b661 j 1200 + 1758: bbffe0ef jal 316 + 175c: 03c00593 li a1,60 + 1760: 41700513 li a0,1047 + 1764: bb3fe0ef jal 316 + 1768: 05a00593 li a1,90 + 176c: 52700513 li a0,1319 + 1770: b661 j 12f8 static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); } - 167a: fff7c713 not a4,a5 - 167e: 877d srai a4,a4,0x1f - 1680: 8ff9 and a5,a5,a4 - 1682: bfc9 j 1654 + 1772: fff7c713 not a4,a5 + 1776: 877d srai a4,a4,0x1f + 1778: 8ff9 and a5,a5,a4 + 177a: bfc9 j 174c screen = SCR_STATS; - 1684: 4789 li a5,2 - 1686: c2f18b23 sb a5,-970(gp) # 20000032 + 177c: 4789 li a5,2 + 177e: c2f18f23 sb a5,-962(gp) # 2000003a beep(659, 40); - 168a: 02800593 li a1,40 - 168e: 29300513 li a0,659 - 1692: b645 j 1232 + 1782: 02800593 li a1,40 + 1786: 29300513 li a0,659 + 178a: b645 j 132a screen = SCR_SETTINGS; - 1694: 4791 li a5,4 - 1696: c2f18b23 sb a5,-970(gp) # 20000032 + 178c: 4791 li a5,4 + 178e: c2f18f23 sb a5,-962(gp) # 2000003a set_sel = 0; - 169a: c20186a3 sb zero,-979(gp) # 20000029 - 169e: b7f5 j 168a + 1792: c20188a3 sb zero,-975(gp) # 2000002d + 1796: b7f5 j 1782 uint32_t t = frame % 80; - 16a0: c381a783 lw a5,-968(gp) # 20000034 - 16a4: 05000593 li a1,80 - 16a8: 853e mv a0,a5 - 16aa: c03e sw a5,0(sp) - 16ac: a29fe0ef jal d4 <__umodsi3> + 1798: c401a783 lw a5,-960(gp) # 2000003c + 179c: 05000593 li a1,80 + 17a0: 853e mv a0,a5 + 17a2: c03e sw a5,0(sp) + 17a4: 931fe0ef jal d4 <__umodsi3> px = (t < 40) ? 30 + t : 30 + (80 - t); // 30..70..30 - 16b0: 02700713 li a4,39 - 16b4: 4782 lw a5,0(sp) - 16b6: 00a76d63 bltu a4,a0,16d0 - 16ba: 01e50713 addi a4,a0,30 - 16be: c43a sw a4,8(sp) - 16c0: 4722 lw a4,8(sp) + 17a8: 02700713 li a4,39 + 17ac: 4782 lw a5,0(sp) + 17ae: 00a76d63 bltu a4,a0,17c8 + 17b2: 01e50713 addi a4,a0,30 + 17b6: c43a sw a4,8(sp) + 17b8: 4722 lw a4,8(sp) py = 14 + ((frame % 16) < 8 ? 0 : 1); - 16c2: 8ba1 andi a5,a5,8 - 16c4: 00f037b3 snez a5,a5 - 16c8: 07b9 addi a5,a5,14 - 16ca: c23a sw a4,4(sp) - 16cc: c03e sw a5,0(sp) - 16ce: b149 j 1350 + 17ba: 8ba1 andi a5,a5,8 + 17bc: 00f037b3 snez a5,a5 + 17c0: 07b9 addi a5,a5,14 + 17c2: c23a sw a4,4(sp) + 17c4: c03e sw a5,0(sp) + 17c6: b149 j 1448 px = (t < 40) ? 30 + t : 30 + (80 - t); // 30..70..30 - 16d0: 06e00713 li a4,110 - 16d4: 8f09 sub a4,a4,a0 - 16d6: b7e5 j 16be + 17c8: 06e00713 li a4,110 + 17cc: 8f09 sub a4,a4,a0 + 17ce: b7e5 j 17b6 if (pet.sleeping) return EXP_SLEEP; - 16d8: 4515 li a0,5 - 16da: ca0414e3 bnez s0,1382 + 17d0: 4515 li a0,5 + 17d2: ca0414e3 bnez s0,147a if (pet.health < 30 || pet.happy < 25 || pet.satiety < 20) - 16de: 00448603 lb a2,4(s1) - 16e2: 4775 li a4,29 + 17d6: 00448603 lb a2,4(s1) + 17da: 4775 li a4,29 return EXP_SAD; - 16e4: 853e mv a0,a5 + 17dc: 853e mv a0,a5 if (pet.health < 30 || pet.happy < 25 || pet.satiety < 20) - 16e6: c8c75ee3 bge a4,a2,1382 - 16ea: 00148603 lb a2,1(s1) - 16ee: 4761 li a4,24 - 16f0: c8c759e3 bge a4,a2,1382 - 16f4: 00048603 lb a2,0(s1) - 16f8: 474d li a4,19 - 16fa: c8c754e3 bge a4,a2,1382 + 17de: c8c75ee3 bge a4,a2,147a + 17e2: 00148603 lb a2,1(s1) + 17e6: 4761 li a4,24 + 17e8: c8c759e3 bge a4,a2,147a + 17ec: 00048603 lb a2,0(s1) + 17f0: 474d li a4,19 + 17f2: c8c754e3 bge a4,a2,147a if ((frame % 50) < 4) return EXP_BLINK; - 16fe: c381a503 lw a0,-968(gp) # 20000034 - 1702: 03200593 li a1,50 - 1706: c836 sw a3,16(sp) - 1708: 9cdfe0ef jal d4 <__umodsi3> - 170c: 46c2 lw a3,16(sp) - 170e: 00453513 sltiu a0,a0,4 - 1712: b985 j 1382 + 17f6: c401a503 lw a0,-960(gp) # 2000003c + 17fa: 03200593 li a1,50 + 17fe: c836 sw a3,16(sp) + 1800: 8d5fe0ef jal d4 <__umodsi3> + 1804: 46c2 lw a3,16(sp) + 1806: 00453513 sltiu a0,a0,4 + 180a: b985 j 147a else if (pet.form == FORM_GLITCH) spr = spr_glitch; - 1714: 6609 lui a2,0x2 - 1716: 5ac60613 addi a2,a2,1452 # 25ac - 171a: b9b5 j 1396 + 180c: 6609 lui a2,0x2 + 180e: 73860613 addi a2,a2,1848 # 2738 + 1812: b9b5 j 148e ssd1306_drawImage(8 + i * 12, 38, spr_poop, 8, 8, 0); - 171c: 00141513 slli a0,s0,0x1 - 1720: 9522 add a0,a0,s0 - 1722: 4721 li a4,8 - 1724: 050a slli a0,a0,0x2 - 1726: 86ba mv a3,a4 - 1728: c1818613 addi a2,gp,-1000 # 20000014 - 172c: 02600593 li a1,38 - 1730: 953a add a0,a0,a4 + 1814: 00141513 slli a0,s0,0x1 + 1818: 9522 add a0,a0,s0 + 181a: 4721 li a4,8 + 181c: 050a slli a0,a0,0x2 + 181e: 86ba mv a3,a4 + 1820: c1818613 addi a2,gp,-1000 # 20000014 + 1824: 02600593 li a1,38 + 1828: 953a add a0,a0,a4 for (uint8_t i = 0; i < pet.poop; i++) - 1732: 0405 addi s0,s0,1 + 182a: 0405 addi s0,s0,1 ssd1306_drawImage(8 + i * 12, 38, spr_poop, 8, 8, 0); - 1734: a84ff0ef jal 9b8 + 182c: 98cff0ef jal 9b8 for (uint8_t i = 0; i < pet.poop; i++) - 1738: 0ff47413 zext.b s0,s0 - 173c: bbf1 j 1518 + 1830: 0ff47413 zext.b s0,s0 + 1834: bbf1 j 1610 draw_main(); break; case SCR_STATS: if (any_edge) { screen = SCR_MAIN; beep(880, 30); } - 173e: cb89 beqz a5,1750 - 1740: 4785 li a5,1 - 1742: 45f9 li a1,30 - 1744: 37000513 li a0,880 - 1748: c2f18b23 sb a5,-970(gp) # 20000032 - 174c: bcbfe0ef jal 316 + 1836: cb89 beqz a5,1848 + 1838: 4785 li a5,1 + 183a: 45f9 li a1,30 + 183c: 37000513 li a0,880 + 1840: c2f18f23 sb a5,-962(gp) # 2000003a + 1844: ad3fe0ef jal 316 ssd1306_setbuf(0); - 1750: cf2ff0ef jal c42 + 1848: c18ff0ef jal c60 draw_center_str(0, "~/pet $ stat"); - 1754: 6589 lui a1,0x2 - 1756: b6458593 addi a1,a1,-1180 # 1b64 - 175a: 4501 li a0,0 + 184c: 6589 lui a1,0x2 + 184e: cd058593 addi a1,a1,-816 # 1cd0 + 1852: 4501 li a0,0 draw_bar(10, "FOOD", pet.satiety); - 175c: c4818413 addi s0,gp,-952 # 20000044 + 1854: c5018413 addi s0,gp,-944 # 2000004c draw_center_str(0, "~/pet $ stat"); - 1760: fe7fe0ef jal 746 + 1858: eeffe0ef jal 746 draw_bar(10, "FOOD", pet.satiety); - 1764: 00040603 lb a2,0(s0) - 1768: 6589 lui a1,0x2 - 176a: b7458593 addi a1,a1,-1164 # 1b74 - 176e: 4529 li a0,10 - 1770: 9e0ff0ef jal 950 + 185c: 00040603 lb a2,0(s0) + 1860: 6589 lui a1,0x2 + 1862: ce058593 addi a1,a1,-800 # 1ce0 + 1866: 4529 li a0,10 + 1868: 8e8ff0ef jal 950 draw_bar(19, "HAPPY", pet.happy); - 1774: 00140603 lb a2,1(s0) - 1778: 6589 lui a1,0x2 - 177a: b7c58593 addi a1,a1,-1156 # 1b7c - 177e: 454d li a0,19 - 1780: 9d0ff0ef jal 950 + 186c: 00140603 lb a2,1(s0) + 1870: 6589 lui a1,0x2 + 1872: ce858593 addi a1,a1,-792 # 1ce8 + 1876: 454d li a0,19 + 1878: 8d8ff0ef jal 950 draw_bar(28, "ENERGY", pet.energy); - 1784: 00240603 lb a2,2(s0) - 1788: 6589 lui a1,0x2 - 178a: b8458593 addi a1,a1,-1148 # 1b84 - 178e: 4571 li a0,28 - 1790: 9c0ff0ef jal 950 + 187c: 00240603 lb a2,2(s0) + 1880: 6589 lui a1,0x2 + 1882: cf058593 addi a1,a1,-784 # 1cf0 + 1886: 4571 li a0,28 + 1888: 8c8ff0ef jal 950 draw_bar(37, "CLEAN", pet.hygiene); - 1794: 00340603 lb a2,3(s0) - 1798: 6589 lui a1,0x2 - 179a: b8c58593 addi a1,a1,-1140 # 1b8c - 179e: 02500513 li a0,37 - 17a2: 9aeff0ef jal 950 + 188c: 00340603 lb a2,3(s0) + 1890: 6589 lui a1,0x2 + 1892: cf858593 addi a1,a1,-776 # 1cf8 + 1896: 02500513 li a0,37 + 189a: 8b6ff0ef jal 950 draw_bar(46, "HEALTH", pet.health); - 17a6: 00440603 lb a2,4(s0) - 17aa: 6589 lui a1,0x2 - 17ac: b9458593 addi a1,a1,-1132 # 1b94 - 17b0: 02e00513 li a0,46 - 17b4: 99cff0ef jal 950 + 189e: 00440603 lb a2,4(s0) + 18a2: 6589 lui a1,0x2 + 18a4: d0058593 addi a1,a1,-768 # 1d00 + 18a8: 02e00513 li a0,46 + 18ac: 8a4ff0ef jal 950 p = u_cat(p, pet.level); - 17b8: 00b44483 lbu s1,11(s0) + 18b0: 00b44483 lbu s1,11(s0) *p++ = 'L'; - 17bc: 04c00793 li a5,76 + 18b4: 04c00793 li a5,76 p = u_cat(p, pet.level); - 17c0: 04110513 addi a0,sp,65 - 17c4: 85a6 mv a1,s1 + 18b8: 04110513 addi a0,sp,65 + 18bc: 85a6 mv a1,s1 *p++ = 'L'; - 17c6: 04f10023 sb a5,64(sp) + 18be: 04f10023 sb a5,64(sp) p = u_cat(p, pet.level); - 17ca: aedfe0ef jal 2b6 + 18c2: 9f5fe0ef jal 2b6 p = s_cat(p, " xp "); - 17ce: 6589 lui a1,0x2 - 17d0: b9c58593 addi a1,a1,-1124 # 1b9c - 17d4: ad1fe0ef jal 2a4 + 18c6: 6589 lui a1,0x2 + 18c8: d0858593 addi a1,a1,-760 # 1d08 + 18cc: 9d9fe0ef jal 2a4 if (pet.level < MAX_LEVEL) { - 17d8: 478d li a5,3 - 17da: 0a97ec63 bltu a5,s1,1892 + 18d0: 478d li a5,3 + 18d2: 0a97ec63 bltu a5,s1,198a p = u_cat(p, pet.xp); - 17de: 00845583 lhu a1,8(s0) + 18d6: 00845583 lhu a1,8(s0) p = u_cat(p, level_xp[pet.level]); - 17e2: 0486 slli s1,s1,0x1 + 18da: 0486 slli s1,s1,0x1 p = u_cat(p, pet.xp); - 17e4: ad3fe0ef jal 2b6 + 18dc: 9dbfe0ef jal 2b6 *p++ = '/'; - 17e8: 02f00793 li a5,47 - 17ec: 00f50023 sb a5,0(a0) + 18e0: 02f00793 li a5,47 + 18e4: 00f50023 sb a5,0(a0) p = u_cat(p, level_xp[pet.level]); - 17f0: c2018793 addi a5,gp,-992 # 2000001c - 17f4: 94be add s1,s1,a5 - 17f6: 0004d583 lhu a1,0(s1) - 17fa: 0505 addi a0,a0,1 - 17fc: abbfe0ef jal 2b6 + 18e8: c2018793 addi a5,gp,-992 # 2000001c + 18ec: 94be add s1,s1,a5 + 18ee: 0004d583 lhu a1,0(s1) + 18f2: 0505 addi a0,a0,1 + 18f4: 9c3fe0ef jal 2b6 *p = 0; - 1800: 00050023 sb zero,0(a0) + 18f8: 00050023 sb zero,0(a0) ssd1306_drawstr(0, 56, line, 1); - 1804: 4685 li a3,1 - 1806: 0090 addi a2,sp,64 - 1808: 03800593 li a1,56 - 180c: 4501 li a0,0 - 180e: a0bfe0ef jal 218 + 18fc: 4685 li a3,1 + 18fe: 0090 addi a2,sp,64 + 1900: 03800593 li a1,56 + 1904: 4501 li a0,0 + 1906: 913fe0ef jal 218 ssd1306_refresh(); - 1812: c58ff0ef jal c6a + 190a: b7eff0ef jal c88 draw_dead(); break; } // sleep the display after the configured idle period uint16_t timeout = screen_timeout_opts[timeout_idx]; - 1816: c041c703 lbu a4,-1020(gp) # 20000000 - 181a: 6789 lui a5,0x2 - 181c: 7e478793 addi a5,a5,2020 # 27e4 - 1820: 0706 slli a4,a4,0x1 - 1822: 97ba add a5,a5,a4 - 1824: 0007d783 lhu a5,0(a5) + 190e: c041c703 lbu a4,-1020(gp) # 20000000 + 1912: 678d lui a5,0x3 + 1914: 98078793 addi a5,a5,-1664 # 2980 + 1918: 0706 slli a4,a4,0x1 + 191a: 97ba add a5,a5,a4 + 191c: 0007d783 lhu a5,0(a5) if (timeout && idle_frames >= timeout) { - 1828: c301a403 lw s0,-976(gp) # 2000002c - 182c: cb89 beqz a5,183e - 182e: 00f46863 bltu s0,a5,183e + 1920: c341a403 lw s0,-972(gp) # 20000030 + 1924: cb89 beqz a5,1936 + 1926: 00f46863 bltu s0,a5,1936 ssd1306_cmd(SSD1306_DISPLAYOFF); - 1832: 0ae00513 li a0,174 - 1836: b5cff0ef jal b92 + 192a: 0ae00513 li a0,174 + 192e: a64ff0ef jal b92 disp_on = 0; - 183a: c00182a3 sb zero,-1019(gp) # 20000001 + 1932: c00182a3 sb zero,-1019(gp) # 20000001 } } if (anim_timer) anim_timer--; - 183e: c2c1c783 lbu a5,-980(gp) # 20000028 - 1842: c781 beqz a5,184a - 1844: 17fd addi a5,a5,-1 - 1846: c2f18623 sb a5,-980(gp) # 20000028 + 1936: c301c783 lbu a5,-976(gp) # 2000002c + 193a: c781 beqz a5,1942 + 193c: 17fd addi a5,a5,-1 + 193e: c2f18823 sb a5,-976(gp) # 2000002c if (evo_anim) evo_anim--; - 184a: c441c783 lbu a5,-956(gp) # 20000040 - 184e: c781 beqz a5,1856 - 1850: 17fd addi a5,a5,-1 - 1852: c4f18223 sb a5,-956(gp) # 20000040 + 1942: c4c1c783 lbu a5,-948(gp) # 20000048 + 1946: c781 beqz a5,194e + 1948: 17fd addi a5,a5,-1 + 194a: c4f18623 sb a5,-948(gp) # 20000048 // advance game time independent of screen / display state if (pet.alive && ++tick_acc >= TICK_FRAMES) { - 1856: c581c783 lbu a5,-936(gp) # 20000054 - 185a: cf81 beqz a5,1872 - 185c: c2a1d783 lhu a5,-982(gp) # 20000026 - 1860: 0f900693 li a3,249 - 1864: 0785 addi a5,a5,1 - 1866: 07c2 slli a5,a5,0x10 - 1868: 83c1 srli a5,a5,0x10 - 186a: 22f6e363 bltu a3,a5,1a90 - 186e: c2f19523 sh a5,-982(gp) # 20000026 + 194e: c601c783 lbu a5,-928(gp) # 2000005c + 1952: cf81 beqz a5,196a + 1954: c2e1d783 lhu a5,-978(gp) # 2000002a + 1958: 0f900693 li a3,249 + 195c: 0785 addi a5,a5,1 + 195e: 07c2 slli a5,a5,0x10 + 1960: 83c1 srli a5,a5,0x10 + 1962: 24f6ee63 bltu a3,a5,1bbe + 1966: c2f19723 sh a5,-978(gp) # 2000002a tick_acc = 0; game_tick(); } frame++; - 1872: c381a783 lw a5,-968(gp) # 20000034 + 196a: c401a783 lw a5,-960(gp) # 2000003c idle_frames++; Delay_Ms(FRAME_MS); - 1876: 00058537 lui a0,0x58 + 196e: 00058537 lui a0,0x58 idle_frames++; - 187a: 0405 addi s0,s0,1 + 1972: 0405 addi s0,s0,1 frame++; - 187c: 0785 addi a5,a5,1 + 1974: 0785 addi a5,a5,1 Delay_Ms(FRAME_MS); - 187e: e4050513 addi a0,a0,-448 # 57e40 + 1976: e4050513 addi a0,a0,-448 # 57e40 frame++; - 1882: c2f1ac23 sw a5,-968(gp) # 20000034 + 197a: c4f1a023 sw a5,-960(gp) # 2000003c idle_frames++; - 1886: c281a823 sw s0,-976(gp) # 2000002c + 197e: c281aa23 sw s0,-972(gp) # 20000030 Delay_Ms(FRAME_MS); - 188a: 895fe0ef jal 11e - 188e: efeff06f j f8c + 1982: f9cfe0ef jal 11e + 1986: efeff06f j 1084 p = s_cat(p, "MAX"); - 1892: 6589 lui a1,0x2 - 1894: ba458593 addi a1,a1,-1116 # 1ba4 - 1898: a0dfe0ef jal 2a4 - 189c: b795 j 1800 + 198a: 6589 lui a1,0x2 + 198c: d1058593 addi a1,a1,-752 # 1d10 + 1990: 915fe0ef jal 2a4 + 1994: b795 j 18f8 if (left_edge) { - 189e: c185 beqz a1,18be + 1996: cd91 beqz a1,19b2 set_sel = (set_sel + SETTINGS_ROWS - 1) % SETTINGS_ROWS; - 18a0: c2d1c503 lbu a0,-979(gp) # 20000029 - 18a4: 458d li a1,3 - 18a6: c236 sw a3,4(sp) - 18a8: 0509 addi a0,a0,2 - 18aa: 84ffe0ef jal f8 <__modsi3> - 18ae: c2a186a3 sb a0,-979(gp) # 20000029 + 1998: c311c783 lbu a5,-975(gp) # 2000002d beep(1047, 25); - 18b2: 45e5 li a1,25 - 18b4: 41700513 li a0,1047 - 18b8: a5ffe0ef jal 316 - 18bc: 4692 lw a3,4(sp) + 199c: 45e5 li a1,25 + 199e: 41700513 li a0,1047 + set_sel = (set_sel + SETTINGS_ROWS - 1) % SETTINGS_ROWS; + 19a2: 078d addi a5,a5,3 + 19a4: 8b8d andi a5,a5,3 + 19a6: c236 sw a3,4(sp) + 19a8: c2f188a3 sb a5,-975(gp) # 2000002d + beep(1047, 25); + 19ac: 96bfe0ef jal 316 + 19b0: 4692 lw a3,4(sp) if (right_edge) { - 18be: ce91 beqz a3,18da + 19b2: ce81 beqz a3,19ca set_sel = (set_sel + 1) % SETTINGS_ROWS; - 18c0: c2d1c503 lbu a0,-979(gp) # 20000029 - 18c4: 458d li a1,3 - 18c6: 0505 addi a0,a0,1 - 18c8: 831fe0ef jal f8 <__modsi3> - 18cc: c2a186a3 sb a0,-979(gp) # 20000029 + 19b4: c311c783 lbu a5,-975(gp) # 2000002d beep(1047, 25); - 18d0: 45e5 li a1,25 - 18d2: 41700513 li a0,1047 - 18d6: a41fe0ef jal 316 + 19b8: 45e5 li a1,25 + 19ba: 41700513 li a0,1047 + set_sel = (set_sel + 1) % SETTINGS_ROWS; + 19be: 0785 addi a5,a5,1 + 19c0: 8b8d andi a5,a5,3 + 19c2: c2f188a3 sb a5,-975(gp) # 2000002d + beep(1047, 25); + 19c6: 951fe0ef jal 316 if (ok_edge) { - 18da: 4782 lw a5,0(sp) - 18dc: c3a1 beqz a5,191c + 19ca: 4782 lw a5,0(sp) + 19cc: cfa1 beqz a5,1a24 if (set_sel == 0) { // cycle screen-off timeout - 18de: c2d1c703 lbu a4,-979(gp) # 20000029 - 18e2: ef11 bnez a4,18fe + 19ce: c311c783 lbu a5,-975(gp) # 2000002d + 19d2: ef91 bnez a5,19ee timeout_idx = (timeout_idx + 1) % TIMEOUT_OPT_COUNT; - 18e4: c041c503 lbu a0,-1020(gp) # 20000000 - 18e8: 4599 li a1,6 - 18ea: 0505 addi a0,a0,1 - 18ec: 80dfe0ef jal f8 <__modsi3> - 18f0: c0a18223 sb a0,-1020(gp) # 20000000 + 19d4: c041c503 lbu a0,-1020(gp) # 20000000 + 19d8: 4599 li a1,6 + 19da: 0505 addi a0,a0,1 + 19dc: f1cfe0ef jal f8 <__modsi3> + 19e0: c0a18223 sb a0,-1020(gp) # 20000000 beep(880, 40); - 18f4: 02800593 li a1,40 + 19e4: 02800593 li a1,40 beep(880, 30); - 18f8: 37000513 li a0,880 - 18fc: a831 j 1918 - } else if (set_sel == 1) { // toggle sound - 18fe: 4785 li a5,1 - 1900: 0ef71963 bne a4,a5,19f2 + 19e8: 37000513 li a0,880 + 19ec: a815 j 1a20 + } else if (set_sel == 1) { // cycle brightness + 19ee: 4705 li a4,1 + 19f0: 00e79b63 bne a5,a4,1a06 + bright_idx = (bright_idx + 1) % BRIGHT_OPT_COUNT; + 19f4: c061c783 lbu a5,-1018(gp) # 20000002 + 19f8: 0785 addi a5,a5,1 + 19fa: 8b8d andi a5,a5,3 + 19fc: c0f18323 sb a5,-1018(gp) # 20000002 + apply_brightness(); // takes effect immediately + 1a00: 9aeff0ef jal bae + 1a04: b7c5 j 19e4 + } else if (set_sel == 2) { // toggle sound + 1a06: 4689 li a3,2 + 1a08: 10d79c63 bne a5,a3,1b20 sound_on = !sound_on; - 1904: c061c783 lbu a5,-1018(gp) # 20000002 + 1a0c: c071c783 lbu a5,-1017(gp) # 20000003 beep(988, 60); // only audible if just enabled - 1908: 03c00593 li a1,60 - 190c: 3dc00513 li a0,988 + 1a10: 03c00593 li a1,60 + 1a14: 3dc00513 li a0,988 sound_on = !sound_on; - 1910: 0017b793 seqz a5,a5 - 1914: c0f18323 sb a5,-1018(gp) # 20000002 + 1a18: 0017b793 seqz a5,a5 + 1a1c: c0f183a3 sb a5,-1017(gp) # 20000003 beep(880, 30); - 1918: 9fffe0ef jal 316 + 1a20: 8f7fe0ef jal 316 ssd1306_setbuf(0); - 191c: b26ff0ef jal c42 + 1a24: a3cff0ef jal c60 draw_center_str(0, "- SETTINGS -"); - 1920: 6589 lui a1,0x2 - 1922: ba858593 addi a1,a1,-1112 # 1ba8 - 1926: 4501 li a0,0 - 1928: e1ffe0ef jal 746 - 192c: 4685 li a3,1 - 192e: 08000613 li a2,128 - 1932: 45a9 li a1,10 - 1934: 4501 li a0,0 - 1936: e6bfe0ef jal 7a0 + 1a28: 6589 lui a1,0x2 + 1a2a: d1458593 addi a1,a1,-748 # 1d14 + 1a2e: 4501 li a0,0 + 1a30: d17fe0ef jal 746 + 1a34: 4685 li a3,1 + 1a36: 08000613 li a2,128 + 1a3a: 45a9 li a1,10 + 1a3c: 4501 li a0,0 + 1a3e: d63fe0ef jal 7a0 *s_cat(s_cat(rows[0], "Screen off:"), screen_timeout_names[timeout_idx]) = 0; - 193a: 6589 lui a1,0x2 - 193c: bb858593 addi a1,a1,-1096 # 1bb8 - 1940: 0088 addi a0,sp,64 - 1942: 963fe0ef jal 2a4 - 1946: c041c703 lbu a4,-1020(gp) # 20000000 - 194a: 6789 lui a5,0x2 - 194c: 74c78793 addi a5,a5,1868 # 274c - 1950: 070a slli a4,a4,0x2 - 1952: 97ba add a5,a5,a4 - 1954: 438c lw a1,0(a5) - 1956: 94ffe0ef jal 2a4 - *s_cat(s_cat(rows[1], "Sound: "), sound_on ? "On" : "Off") = 0; - 195a: 6589 lui a1,0x2 + 1a42: 6589 lui a1,0x2 + 1a44: d2458593 addi a1,a1,-732 # 1d24 + 1a48: 0088 addi a0,sp,64 + 1a4a: 85bfe0ef jal 2a4 + 1a4e: c041c703 lbu a4,-1020(gp) # 20000000 + 1a52: 678d lui a5,0x3 + 1a54: 8e878793 addi a5,a5,-1816 # 28e8 + 1a58: 070a slli a4,a4,0x2 + 1a5a: 97ba add a5,a5,a4 + 1a5c: 438c lw a1,0(a5) + 1a5e: 847fe0ef jal 2a4 + *s_cat(s_cat(rows[1], "Bright: "), brightness_names[bright_idx]) = 0; + 1a62: 6589 lui a1,0x2 *s_cat(s_cat(rows[0], "Screen off:"), screen_timeout_names[timeout_idx]) = 0; - 195c: 00050023 sb zero,0(a0) - *s_cat(s_cat(rows[1], "Sound: "), sound_on ? "On" : "Off") = 0; - 1960: bc458593 addi a1,a1,-1084 # 1bc4 - 1964: 05110513 addi a0,sp,81 - 1968: 93dfe0ef jal 2a4 - 196c: c061c783 lbu a5,-1018(gp) # 20000002 - 1970: c7c9 beqz a5,19fa - 1972: 6589 lui a1,0x2 - 1974: ae058593 addi a1,a1,-1312 # 1ae0 - 1978: 92dfe0ef jal 2a4 - *s_cat(rows[2], "Back") = 0; - 197c: 6589 lui a1,0x2 - *s_cat(s_cat(rows[1], "Sound: "), sound_on ? "On" : "Off") = 0; - 197e: 00050023 sb zero,0(a0) - *s_cat(rows[2], "Back") = 0; - 1982: bcc58593 addi a1,a1,-1076 # 1bcc - 1986: 06210513 addi a0,sp,98 - 198a: 91bfe0ef jal 2a4 - 198e: 00050023 sb zero,0(a0) - 1992: 44c5 li s1,17 - 1994: 4401 li s0,0 - int y = 18 + r * 12; - 1996: 00148793 addi a5,s1,1 - 199a: c03e sw a5,0(sp) - if (r == set_sel) ssd1306_fillRect(0, y - 1, SSD1306_W, 10, 1); - 199c: c2d1c283 lbu t0,-979(gp) # 20000029 - 19a0: 0ff47313 zext.b t1,s0 - 19a4: 00531e63 bne t1,t0,19c0 - 19a8: 4705 li a4,1 - 19aa: 46a9 li a3,10 - 19ac: 08000613 li a2,128 - 19b0: 85a6 mv a1,s1 - 19b2: 4501 li a0,0 - 19b4: c216 sw t0,4(sp) - 19b6: c01a sw t1,0(sp) - 19b8: 809fe0ef jal 1c0 - 19bc: 4292 lw t0,4(sp) - 19be: 4302 lw t1,0(sp) - ssd1306_drawstr(4, y, rows[r], r == set_sel ? 0 : 1); - 19c0: 00441613 slli a2,s0,0x4 - 19c4: 405306b3 sub a3,t1,t0 - 19c8: 9622 add a2,a2,s0 - 19ca: 009c addi a5,sp,64 - 19cc: 00148593 addi a1,s1,1 - 19d0: 00d036b3 snez a3,a3 - 19d4: 963e add a2,a2,a5 - 19d6: 4511 li a0,4 - 19d8: 841fe0ef jal 218 - for (uint8_t r = 0; r < SETTINGS_ROWS; r++) { - 19dc: 04b1 addi s1,s1,12 - 19de: 03500713 li a4,53 - 19e2: 0405 addi s0,s0,1 - 19e4: fae499e3 bne s1,a4,1996 - draw_center_str(56, "L/R move OK use"); - 19e8: 6589 lui a1,0x2 - 19ea: bd458593 addi a1,a1,-1068 # 1bd4 - 19ee: f66ff06f j 1154 - screen = SCR_MAIN; - 19f2: c2f18b23 sb a5,-970(gp) # 20000032 - beep(880, 30); - 19f6: 45f9 li a1,30 - 19f8: b701 j 18f8 - *s_cat(s_cat(rows[1], "Sound: "), sound_on ? "On" : "Off") = 0; - 19fa: 6589 lui a1,0x2 - 19fc: ae858593 addi a1,a1,-1304 # 1ae8 - 1a00: bfa5 j 1978 - if (ok_edge) { // back to the welcome screen to re-pick - 1a02: 4782 lw a5,0(sp) - 1a04: cf99 beqz a5,1a22 - beep(659, 80); beep(988, 120); - 1a06: 05000593 li a1,80 - 1a0a: 29300513 li a0,659 - screen = SCR_SELECT; - 1a0e: c2018b23 sb zero,-970(gp) # 20000032 - beep(659, 80); beep(988, 120); - 1a12: 905fe0ef jal 316 - 1a16: 07800593 li a1,120 - 1a1a: 3dc00513 li a0,988 - 1a1e: 8f9fe0ef jal 316 - ssd1306_setbuf(0); - 1a22: a20ff0ef jal c42 - ssd1306_drawImage(48, 2, spr_grave, 32, 32, 0); - 1a26: 02000713 li a4,32 - 1a2a: 6609 lui a2,0x2 - 1a2c: 86ba mv a3,a4 - 1a2e: 76460613 addi a2,a2,1892 # 2764 - 1a32: 4589 li a1,2 - 1a34: 03000513 li a0,48 - 1a38: f81fe0ef jal 9b8 - draw_center_str(36, pet.ascend == 2 ? "** CORRUPTED **" : "SEGFAULT (11)"); - 1a3c: c4818713 addi a4,gp,-952 # 20000044 - 1a40: 00d74683 lbu a3,13(a4) - 1a44: 4709 li a4,2 - 1a46: c4818413 addi s0,gp,-952 # 20000044 - 1a4a: 02e69f63 bne a3,a4,1a88 - 1a4e: 6589 lui a1,0x2 - 1a50: aec58593 addi a1,a1,-1300 # 1aec - 1a54: 02400513 li a0,36 - 1a58: ceffe0ef jal 746 - p = s_cat(p, "core dumped L"); - 1a5c: 6589 lui a1,0x2 - 1a5e: be858593 addi a1,a1,-1048 # 1be8 - 1a62: 0088 addi a0,sp,64 - 1a64: 841fe0ef jal 2a4 - p = u_cat(p, pet.level); - 1a68: 00b44583 lbu a1,11(s0) - 1a6c: 84bfe0ef jal 2b6 - *p = 0; - 1a70: 00050023 sb zero,0(a0) - draw_center_str(46, line); - 1a74: 008c addi a1,sp,64 - 1a76: 02e00513 li a0,46 - 1a7a: ccdfe0ef jal 746 - draw_center_str(56, "OK: respawn"); - 1a7e: 6589 lui a1,0x2 - 1a80: bf858593 addi a1,a1,-1032 # 1bf8 - 1a84: ed0ff06f j 1154 - draw_center_str(36, pet.ascend == 2 ? "** CORRUPTED **" : "SEGFAULT (11)"); + 1a64: 00050023 sb zero,0(a0) + *s_cat(s_cat(rows[1], "Bright: "), brightness_names[bright_idx]) = 0; + 1a68: d3058593 addi a1,a1,-720 # 1d30 + 1a6c: 05110513 addi a0,sp,81 + 1a70: 835fe0ef jal 2a4 + 1a74: c061c703 lbu a4,-1018(gp) # 20000002 + 1a78: 678d lui a5,0x3 + 1a7a: 8d878793 addi a5,a5,-1832 # 28d8 + 1a7e: 070a slli a4,a4,0x2 + 1a80: 97ba add a5,a5,a4 + 1a82: 438c lw a1,0(a5) + 1a84: 821fe0ef jal 2a4 + *s_cat(s_cat(rows[2], "Sound: "), sound_on ? "On" : "Off") = 0; 1a88: 6589 lui a1,0x2 - 1a8a: afc58593 addi a1,a1,-1284 # 1afc - 1a8e: b7d9 j 1a54 + *s_cat(s_cat(rows[1], "Bright: "), brightness_names[bright_idx]) = 0; + 1a8a: 00050023 sb zero,0(a0) + *s_cat(s_cat(rows[2], "Sound: "), sound_on ? "On" : "Off") = 0; + 1a8e: d3c58593 addi a1,a1,-708 # 1d3c + 1a92: 06210513 addi a0,sp,98 + 1a96: 80ffe0ef jal 2a4 + 1a9a: c071c783 lbu a5,-1017(gp) # 20000003 + 1a9e: c7c9 beqz a5,1b28 + 1aa0: 6589 lui a1,0x2 + 1aa2: c0c58593 addi a1,a1,-1012 # 1c0c + 1aa6: ffefe0ef jal 2a4 + *s_cat(rows[3], "Back") = 0; + 1aaa: 6589 lui a1,0x2 + *s_cat(s_cat(rows[2], "Sound: "), sound_on ? "On" : "Off") = 0; + 1aac: 00050023 sb zero,0(a0) + *s_cat(rows[3], "Back") = 0; + 1ab0: d4458593 addi a1,a1,-700 # 1d44 + 1ab4: 07310513 addi a0,sp,115 + 1ab8: fecfe0ef jal 2a4 + 1abc: 00050023 sb zero,0(a0) + 1ac0: 44ad li s1,11 + 1ac2: 4401 li s0,0 + int y = 12 + r * 11; + 1ac4: 00148793 addi a5,s1,1 + 1ac8: c03e sw a5,0(sp) + if (r == set_sel) ssd1306_fillRect(0, y - 1, SSD1306_W, 10, 1); + 1aca: c311c283 lbu t0,-975(gp) # 2000002d + 1ace: 0ff47313 zext.b t1,s0 + 1ad2: 00531e63 bne t1,t0,1aee + 1ad6: 4705 li a4,1 + 1ad8: 46a9 li a3,10 + 1ada: 08000613 li a2,128 + 1ade: 85a6 mv a1,s1 + 1ae0: 4501 li a0,0 + 1ae2: c216 sw t0,4(sp) + 1ae4: c01a sw t1,0(sp) + 1ae6: edafe0ef jal 1c0 + 1aea: 4292 lw t0,4(sp) + 1aec: 4302 lw t1,0(sp) + ssd1306_drawstr(4, y, rows[r], r == set_sel ? 0 : 1); + 1aee: 00441613 slli a2,s0,0x4 + 1af2: 405306b3 sub a3,t1,t0 + 1af6: 9622 add a2,a2,s0 + 1af8: 009c addi a5,sp,64 + 1afa: 00148593 addi a1,s1,1 + 1afe: 00d036b3 snez a3,a3 + 1b02: 963e add a2,a2,a5 + 1b04: 4511 li a0,4 + 1b06: f12fe0ef jal 218 + for (uint8_t r = 0; r < SETTINGS_ROWS; r++) { + 1b0a: 04ad addi s1,s1,11 + 1b0c: 03700713 li a4,55 + 1b10: 0405 addi s0,s0,1 + 1b12: fae499e3 bne s1,a4,1ac4 + draw_center_str(56, "L/R move OK use"); + 1b16: 6589 lui a1,0x2 + 1b18: d4c58593 addi a1,a1,-692 # 1d4c + 1b1c: f30ff06f j 124c + screen = SCR_MAIN; + 1b20: c2e18f23 sb a4,-962(gp) # 2000003a + beep(880, 30); + 1b24: 45f9 li a1,30 + 1b26: b5c9 j 19e8 + *s_cat(s_cat(rows[2], "Sound: "), sound_on ? "On" : "Off") = 0; + 1b28: 6589 lui a1,0x2 + 1b2a: c1458593 addi a1,a1,-1004 # 1c14 + 1b2e: bfa5 j 1aa6 + if (ok_edge) { // back to the welcome screen to re-pick + 1b30: 4782 lw a5,0(sp) + 1b32: cf99 beqz a5,1b50 + beep(659, 80); beep(988, 120); + 1b34: 05000593 li a1,80 + 1b38: 29300513 li a0,659 + screen = SCR_SELECT; + 1b3c: c2018f23 sb zero,-962(gp) # 2000003a + beep(659, 80); beep(988, 120); + 1b40: fd6fe0ef jal 316 + 1b44: 07800593 li a1,120 + 1b48: 3dc00513 li a0,988 + 1b4c: fcafe0ef jal 316 + ssd1306_setbuf(0); + 1b50: 910ff0ef jal c60 + ssd1306_drawImage(48, 2, spr_grave, 32, 32, 0); + 1b54: 02000713 li a4,32 + 1b58: 660d lui a2,0x3 + 1b5a: 86ba mv a3,a4 + 1b5c: 90060613 addi a2,a2,-1792 # 2900 + 1b60: 4589 li a1,2 + 1b62: 03000513 li a0,48 + 1b66: e53fe0ef jal 9b8 + draw_center_str(36, pet.ascend == 2 ? "** CORRUPTED **" : "SEGFAULT (11)"); + 1b6a: c5018713 addi a4,gp,-944 # 2000004c + 1b6e: 00d74683 lbu a3,13(a4) + 1b72: 4709 li a4,2 + 1b74: c5018413 addi s0,gp,-944 # 2000004c + 1b78: 02e69f63 bne a3,a4,1bb6 + 1b7c: 6589 lui a1,0x2 + 1b7e: c1858593 addi a1,a1,-1000 # 1c18 + 1b82: 02400513 li a0,36 + 1b86: bc1fe0ef jal 746 + p = s_cat(p, "core dumped L"); + 1b8a: 6589 lui a1,0x2 + 1b8c: d6058593 addi a1,a1,-672 # 1d60 + 1b90: 0088 addi a0,sp,64 + 1b92: f12fe0ef jal 2a4 + p = u_cat(p, pet.level); + 1b96: 00b44583 lbu a1,11(s0) + 1b9a: f1cfe0ef jal 2b6 + *p = 0; + 1b9e: 00050023 sb zero,0(a0) + draw_center_str(46, line); + 1ba2: 008c addi a1,sp,64 + 1ba4: 02e00513 li a0,46 + 1ba8: b9ffe0ef jal 746 + draw_center_str(56, "OK: respawn"); + 1bac: 6589 lui a1,0x2 + 1bae: d7058593 addi a1,a1,-656 # 1d70 + 1bb2: e9aff06f j 124c + draw_center_str(36, pet.ascend == 2 ? "** CORRUPTED **" : "SEGFAULT (11)"); + 1bb6: 6589 lui a1,0x2 + 1bb8: c2858593 addi a1,a1,-984 # 1c28 + 1bbc: b7d9 j 1b82 tick_acc = 0; - 1a90: c2019523 sh zero,-982(gp) # 20000026 + 1bbe: c2019723 sh zero,-978(gp) # 2000002a game_tick(); - 1a94: a79fe0ef jal 50c - 1a98: bbe9 j 1872 + 1bc2: 94bfe0ef jal 50c + 1bc6: b355 j 196a -00001a9a : +00001bc8 : { - 1a9a: 1161 addi sp,sp,-8 - 1a9c: c03e sw a5,0(sp) + 1bc8: 1161 addi sp,sp,-8 + 1bca: c03e sw a5,0(sp) EXTI->INTFR = EXTI_Line0 | EXTI_Line5 | EXTI_Line6; // clear pending - 1a9e: 400107b7 lui a5,0x40010 + 1bcc: 400107b7 lui a5,0x40010 { - 1aa2: c23a sw a4,4(sp) + 1bd0: c23a sw a4,4(sp) EXTI->INTFR = EXTI_Line0 | EXTI_Line5 | EXTI_Line6; // clear pending - 1aa4: 40078793 addi a5,a5,1024 # 40010400 <_eusrstack+0x2000fc00> - 1aa8: 06100713 li a4,97 - 1aac: cbd8 sw a4,20(a5) + 1bd2: 40078793 addi a5,a5,1024 # 40010400 <_eusrstack+0x2000fc00> + 1bd6: 06100713 li a4,97 + 1bda: cbd8 sw a4,20(a5) exti_wake = 1; - 1aae: 4705 li a4,1 - 1ab0: c2e18aa3 sb a4,-971(gp) # 20000031 + 1bdc: 4705 li a4,1 + 1bde: c2e18ea3 sb a4,-963(gp) # 20000039 } - 1ab4: 4712 lw a4,4(sp) - 1ab6: 4782 lw a5,0(sp) - 1ab8: 0121 addi sp,sp,8 - 1aba: 30200073 mret + 1be2: 4712 lw a4,4(sp) + 1be4: 4782 lw a5,0(sp) + 1be6: 0121 addi sp,sp,8 + 1be8: 30200073 mret -00001abe : +00001bec : { - 1abe: 1161 addi sp,sp,-8 - 1ac0: c23a sw a4,4(sp) - 1ac2: c03e sw a5,0(sp) + 1bec: 1161 addi sp,sp,-8 + 1bee: c23a sw a4,4(sp) + 1bf0: c03e sw a5,0(sp) TIM2->INTFR = (uint16_t)~TIM_FLAG_Update; // clear update flag - 1ac4: 5779 li a4,-2 - 1ac6: 400007b7 lui a5,0x40000 - 1aca: 00e79823 sh a4,16(a5) # 40000010 <_eusrstack+0x1ffff810> + 1bf2: 5779 li a4,-2 + 1bf4: 400007b7 lui a5,0x40000 + 1bf8: 00e79823 sh a4,16(a5) # 40000010 <_eusrstack+0x1ffff810> tick_wake = 1; - 1ace: 4705 li a4,1 - 1ad0: c2e18a23 sb a4,-972(gp) # 20000030 + 1bfc: 4705 li a4,1 + 1bfe: c2e18e23 sb a4,-964(gp) # 20000038 } - 1ad4: 4712 lw a4,4(sp) - 1ad6: 4782 lw a5,0(sp) - 1ad8: 0121 addi sp,sp,8 - 1ada: 30200073 mret - 1ade: 0000 unimp - 1ae0: 00006e4f .insn 4, 0x6e4f - 1ae4: 0000 unimp - 1ae6: 0000 unimp - 1ae8: 0066664f .insn 4, 0x0066664f - 1aec: 2a2a .insn 2, 0x2a2a - 1aee: 4320 lw s0,64(a4) - 1af0: 5552524f .insn 4, 0x5552524f - 1af4: 5450 lw a2,44(s0) - 1af6: 4445 li s0,17 - 1af8: 2a20 .insn 2, 0x2a20 - 1afa: 002a c.slli zero,0xa - 1afc: 46474553 .insn 4, 0x46474553 - 1b00: 5541 li a0,-16 - 1b02: 544c lw a1,44(s0) - 1b04: 2820 .insn 2, 0x2820 - 1b06: 3131 jal 1712 - 1b08: 0029 c.nop 10 - 1b0a: 0000 unimp - 1b0c: 7270 .insn 2, 0x7270 - 1b0e: 7365 lui t1,0xffff9 - 1b10: 6e612073 .insn 4, 0x6e612073 - 1b14: 2079 jal 1ba2 - 1b16: 0079656b .insn 4, 0x0079656b - 1b1a: 0000 unimp - 1b1c: 207e .insn 2, 0x207e - 1b1e: 2024 .insn 2, 0x2024 - 1b20: 6461 lui s0,0x18 - 1b22: 2074706f j 49528 - 1b26: 2d2d jal 2160 - 1b28: 6570 .insn 2, 0x6570 - 1b2a: 0074 addi a3,sp,12 - 1b2c: 203c .insn 2, 0x203c - 1b2e: 0000 unimp - 1b30: 3e20 .insn 2, 0x3e20 - 1b32: 0000 unimp - 1b34: 2f4c .insn 2, 0x2f4c - 1b36: 2052 .insn 2, 0x2052 - 1b38: 6970 .insn 2, 0x6970 - 1b3a: 20206b63 bltu zero,sp,1d50 - 1b3e: 67204b4f .insn 4, 0x67204b4f - 1b42: 0021006f j 11b44 - 1b46: 0000 unimp - 1b48: 007a c.slli zero,0x1e - 1b4a: 0000 unimp - 1b4c: 005a c.slli zero,0x16 - 1b4e: 0000 unimp - 1b50: 3e3e .insn 2, 0x3e3e - 1b52: 6520 .insn 2, 0x6520 - 1b54: 6f76 .insn 2, 0x6f76 - 1b56: 766c .insn 2, 0x766c - 1b58: 6e69 lui t3,0x1a - 1b5a: 205b0067 jr 517(s6) - 1b5e: 0000 unimp - 1b60: 5d20 lw s0,120(a0) - 1b62: 0000 unimp - 1b64: 2f7e .insn 2, 0x2f7e - 1b66: 6570 .insn 2, 0x6570 - 1b68: 2074 .insn 2, 0x2074 - 1b6a: 2024 .insn 2, 0x2024 - 1b6c: 74617473 .insn 4, 0x74617473 - 1b70: 0000 unimp - 1b72: 0000 unimp - 1b74: 4f46 lw t5,80(sp) - 1b76: 0000444f .insn 4, 0x444f - 1b7a: 0000 unimp - 1b7c: 4148 lw a0,4(a0) - 1b7e: 5050 lw a2,36(s0) - 1b80: 0059 c.nop 22 - 1b82: 0000 unimp - 1b84: 4e45 li t3,17 - 1b86: 5245 li tp,-15 - 1b88: 00005947 .insn 4, 0x5947 - 1b8c: 41454c43 .insn 4, 0x41454c43 - 1b90: 004e c.slli zero,0x13 - 1b92: 0000 unimp - 1b94: 4548 lw a0,12(a0) - 1b96: 4c41 li s8,16 - 1b98: 4854 lw a3,20(s0) - 1b9a: 0000 unimp - 1b9c: 2020 .insn 2, 0x2020 - 1b9e: 7078 .insn 2, 0x7078 - 1ba0: 0020 addi s0,sp,8 - 1ba2: 0000 unimp - 1ba4: 414d li sp,19 - 1ba6: 0058 addi a4,sp,4 - 1ba8: 202d jal 1bd2 - 1baa: 54544553 .insn 4, 0x54544553 - 1bae: 4e49 li t3,18 - 1bb0: 2d205347 .insn 4, 0x2d205347 - 1bb4: 0000 unimp - 1bb6: 0000 unimp - 1bb8: 65726353 .insn 4, 0x65726353 - 1bbc: 6e65 lui t3,0x19 - 1bbe: 6f20 .insn 2, 0x6f20 - 1bc0: 6666 .insn 2, 0x6666 - 1bc2: 003a c.slli zero,0xe - 1bc4: 6e756f53 .insn 4, 0x6e756f53 - 1bc8: 3a64 .insn 2, 0x3a64 - 1bca: 0020 addi s0,sp,8 - 1bcc: 6142 .insn 2, 0x6142 - 1bce: 00006b63 bltu zero,zero,1be4 - 1bd2: 0000 unimp - 1bd4: 2f4c .insn 2, 0x2f4c - 1bd6: 2052 .insn 2, 0x2052 - 1bd8: 6f6d lui t5,0x1b - 1bda: 6576 .insn 2, 0x6576 - 1bdc: 2020 .insn 2, 0x2020 - 1bde: 75204b4f .insn 4, 0x75204b4f - 1be2: 00006573 .insn 4, 0x6573 - 1be6: 0000 unimp - 1be8: 65726f63 bltu tp,s7,2246 - 1bec: 6420 .insn 2, 0x6420 - 1bee: 6d75 lui s10,0x1d - 1bf0: 6570 .insn 2, 0x6570 - 1bf2: 2064 .insn 2, 0x2064 - 1bf4: 004c addi a1,sp,4 - 1bf6: 0000 unimp - 1bf8: 203a4b4f .insn 4, 0x203a4b4f - 1bfc: 6572 .insn 2, 0x6572 - 1bfe: 77617073 .insn 4, 0x77617073 - 1c02: 006e c.slli zero,0x1b - 1c04: 6170 .insn 2, 0x6170 - 1c06: 616e .insn 2, 0x616e - 1c08: 63746f67 .insn 4, 0x63746f67 - 1c0c: 6968 .insn 2, 0x6968 - 1c0e: 7620 .insn 2, 0x7620 - 1c10: 0032 c.slli zero,0xc + 1c02: 4712 lw a4,4(sp) + 1c04: 4782 lw a5,0(sp) + 1c06: 0121 addi sp,sp,8 + 1c08: 30200073 mret + 1c0c: 00006e4f .insn 4, 0x6e4f + 1c10: 0000 unimp 1c12: 0000 unimp - 1c14: 6f62 .insn 2, 0x6f62 - 1c16: 6e69746f jal s0,992fc - 1c1a: 656b2067 .insn 4, 0x656b2067 - 1c1e: 6e72 .insn 2, 0x6e72 - 1c20: 6c65 lui s8,0x19 - 1c22: 2e2e .insn 2, 0x2e2e - 1c24: 0000 unimp - 1c26: 0000 unimp - 1c28: 6f6d lui t5,0x1b - 1c2a: 6e75 lui t3,0x1d - 1c2c: 2074 .insn 2, 0x2074 - 1c2e: 7465702f .insn 4, 0x7465702f - 1c32: 2020 .insn 2, 0x2020 - 1c34: 00006b6f jal s6,7c34 - 1c38: 77617073 .insn 4, 0x77617073 - 1c3c: 206e .insn 2, 0x206e - 1c3e: 6c656873 .insn 4, 0x6c656873 - 1c42: 206c .insn 2, 0x206c - 1c44: 6f20 .insn 2, 0x6f20 - 1c46: 203e006b .insn 4, 0x203e006b - 1c4a: 2f2e .insn 2, 0x2f2e - 1c4c: 6174 .insn 2, 0x6174 - 1c4e: 616d addi sp,sp,240 - 1c50: 63746f67 .insn 4, 0x63746f67 - 1c54: 6968 .insn 2, 0x6968 - 1c56: 005f 6853 6c65 .insn 6, 0x6c656853005f - 1c5c: 006c addi a1,sp,12 + 1c14: 0066664f .insn 4, 0x0066664f + 1c18: 2a2a .insn 2, 0x2a2a + 1c1a: 4320 lw s0,64(a4) + 1c1c: 5552524f .insn 4, 0x5552524f + 1c20: 5450 lw a2,44(s0) + 1c22: 4445 li s0,17 + 1c24: 2a20 .insn 2, 0x2a20 + 1c26: 002a c.slli zero,0xa + 1c28: 46474553 .insn 4, 0x46474553 + 1c2c: 5541 li a0,-16 + 1c2e: 544c lw a1,44(s0) + 1c30: 2820 .insn 2, 0x2820 + 1c32: 3131 jal 183e + 1c34: 0029 c.nop 10 + 1c36: 0000 unimp + 1c38: 7372 .insn 2, 0x7372 + 1c3a: 3a74 .insn 2, 0x3a74 + 1c3c: 0000 unimp + 1c3e: 0000 unimp + 1c40: 504c lw a1,36(s0) + 1c42: 00002057 .insn 4, 0x2057 + 1c46: 0000 unimp + 1c48: 20445757 .insn 4, 0x20445757 + 1c4c: 0000 unimp + 1c4e: 0000 unimp + 1c50: 20474457 .insn 4, 0x20474457 + 1c54: 0000 unimp + 1c56: 0000 unimp + 1c58: 20544653 .insn 4, 0x20544653 + 1c5c: 0000 unimp 1c5e: 0000 unimp - 1c60: 6150 .insn 2, 0x6150 - 1c62: 6b6e .insn 2, 0x6b6e - 1c64: 0000006f j 1c64 - 1c68: 6d54 .insn 2, 0x6d54 - 1c6a: 7875 lui a6,0xffffd + 1c60: 4f50 lw a2,28(a4) + 1c62: 2052 .insn 2, 0x2052 + 1c64: 0000 unimp + 1c66: 0000 unimp + 1c68: 4950 lw a2,20(a0) + 1c6a: 204e .insn 2, 0x204e 1c6c: 0000 unimp 1c6e: 0000 unimp - 1c70: 7270 .insn 2, 0x7270 - 1c72: 0000636f jal t1,7c72 + 1c70: 6f6e .insn 2, 0x6f6e + 1c72: 656e .insn 2, 0x656e + 1c74: 0000 unimp 1c76: 0000 unimp - 1c78: 7375 lui t1,0xffffd - 1c7a: 7265 lui tp,0xffff9 - 1c7c: 0000 unimp - 1c7e: 0000 unimp - 1c80: 6f72 .insn 2, 0x6f72 - 1c82: 0000746f jal s0,8c82 + 1c78: 7270 .insn 2, 0x7270 + 1c7a: 7365 lui t1,0xffff9 + 1c7c: 6e612073 .insn 4, 0x6e612073 + 1c80: 2079 jal 1d0e + 1c82: 0079656b .insn 4, 0x0079656b 1c86: 0000 unimp - 1c88: 75616c43 .insn 4, 0x75616c43 - 1c8c: 6564 .insn 2, 0x6564 - 1c8e: 0000 unimp - 1c90: 74696c67 .insn 4, 0x74696c67 - 1c94: 00006863 bltu zero,zero,1ca4 - 1c98: 4546 lw a0,80(sp) - 1c9a: 4445 li s0,17 - 1c9c: 0000 unimp + 1c88: 207e .insn 2, 0x207e + 1c8a: 2024 .insn 2, 0x2024 + 1c8c: 6461 lui s0,0x18 + 1c8e: 2074706f j 49694 + 1c92: 2d2d jal 22cc + 1c94: 6570 .insn 2, 0x6570 + 1c96: 0074 addi a3,sp,12 + 1c98: 203c .insn 2, 0x203c + 1c9a: 0000 unimp + 1c9c: 3e20 .insn 2, 0x3e20 1c9e: 0000 unimp - 1ca0: 4c50 lw a2,28(s0) - 1ca2: 5941 li s2,-16 - 1ca4: 0000 unimp - 1ca6: 0000 unimp - 1ca8: 45454c53 .insn 4, 0x45454c53 - 1cac: 0050 addi a2,sp,4 - 1cae: 0000 unimp - 1cb0: 4548 lw a0,12(a0) - 1cb2: 4c41 li s8,16 - 1cb4: 0000 unimp + 1ca0: 2f4c .insn 2, 0x2f4c + 1ca2: 2052 .insn 2, 0x2052 + 1ca4: 6970 .insn 2, 0x6970 + 1ca6: 20206b63 bltu zero,sp,1ebc + 1caa: 67204b4f .insn 4, 0x67204b4f + 1cae: 0021006f j 11cb0 + 1cb2: 0000 unimp + 1cb4: 007a c.slli zero,0x1e 1cb6: 0000 unimp - 1cb8: 54415453 .insn 4, 0x54415453 - 1cbc: 00000053 .insn 4, 0x0053 - 1cc0: 54544553 .insn 4, 0x54544553 - 1cc4: 4e49 li t3,18 - 1cc6: 00005347 .insn 4, 0x5347 + 1cb8: 005a c.slli zero,0x16 + 1cba: 0000 unimp + 1cbc: 3e3e .insn 2, 0x3e3e + 1cbe: 6520 .insn 2, 0x6520 + 1cc0: 6f76 .insn 2, 0x6f76 + 1cc2: 766c .insn 2, 0x766c + 1cc4: 6e69 lui t3,0x1a + 1cc6: 205b0067 jr 517(s6) 1cca: 0000 unimp - 1ccc: 7335 lui t1,0xfffed + 1ccc: 5d20 lw s0,120(a0) 1cce: 0000 unimp - 1cd0: 3031 jal 14dc - 1cd2: 35310073 .insn 4, 0x35310073 - 1cd6: 30330073 .insn 4, 0x30330073 - 1cda: 30360073 .insn 4, 0x30360073 - 1cde: 10360073 .insn 4, 0x10360073 - 1ce2: 0000 unimp - 1ce4: 115a slli sp,sp,0x36 + 1cd0: 2f7e .insn 2, 0x2f7e + 1cd2: 6570 .insn 2, 0x6570 + 1cd4: 2074 .insn 2, 0x2074 + 1cd6: 2024 .insn 2, 0x2024 + 1cd8: 74617473 .insn 4, 0x74617473 + 1cdc: 0000 unimp + 1cde: 0000 unimp + 1ce0: 4f46 lw t5,80(sp) + 1ce2: 0000444f .insn 4, 0x444f 1ce6: 0000 unimp - 1ce8: 173e slli a4,a4,0x2f - 1cea: 0000 unimp - 1cec: 1a02 slli s4,s4,0x20 + 1ce8: 4148 lw a0,4(a0) + 1cea: 5050 lw a2,36(s0) + 1cec: 0059 c.nop 22 1cee: 0000 unimp - 1cf0: 189e slli a7,a7,0x27 - 1cf2: 0000 unimp - 1cf4: 11b8 addi a4,sp,232 - 1cf6: 0000 unimp - 1cf8: 1220 addi s0,sp,296 - 1cfa: 0000 unimp - 1cfc: 15da slli a1,a1,0x36 + 1cf0: 4e45 li t3,17 + 1cf2: 5245 li tp,-15 + 1cf4: 00005947 .insn 4, 0x5947 + 1cf8: 41454c43 .insn 4, 0x41454c43 + 1cfc: 004e c.slli zero,0x13 1cfe: 0000 unimp - 1d00: 15fc addi a5,sp,748 - 1d02: 0000 unimp - 1d04: 1642 slli a2,a2,0x30 + 1d00: 4548 lw a0,12(a0) + 1d02: 4c41 li s8,16 + 1d04: 4854 lw a3,20(s0) 1d06: 0000 unimp - 1d08: 1684 addi s1,sp,864 - 1d0a: 0000 unimp - 1d0c: 1694 addi a3,sp,864 + 1d08: 2020 .insn 2, 0x2020 + 1d0a: 7078 .insn 2, 0x7078 + 1d0c: 0020 addi s0,sp,8 + 1d0e: 0000 unimp + 1d10: 414d li sp,19 + 1d12: 0058 addi a4,sp,4 + 1d14: 202d jal 1d3e + 1d16: 54544553 .insn 4, 0x54544553 + 1d1a: 4e49 li t3,18 + 1d1c: 2d205347 .insn 4, 0x2d205347 + 1d20: 0000 unimp + 1d22: 0000 unimp + 1d24: 65726353 .insn 4, 0x65726353 + 1d28: 6e65 lui t3,0x19 + 1d2a: 6f20 .insn 2, 0x6f20 + 1d2c: 6666 .insn 2, 0x6666 + 1d2e: 003a c.slli zero,0xe + 1d30: 7242 .insn 2, 0x7242 + 1d32: 6769 lui a4,0x1a + 1d34: 7468 .insn 2, 0x7468 + 1d36: 203a .insn 2, 0x203a + 1d38: 0000 unimp + 1d3a: 0000 unimp + 1d3c: 6e756f53 .insn 4, 0x6e756f53 + 1d40: 3a64 .insn 2, 0x3a64 + 1d42: 0020 addi s0,sp,8 + 1d44: 6142 .insn 2, 0x6142 + 1d46: 00006b63 bltu zero,zero,1d5c + 1d4a: 0000 unimp + 1d4c: 2f4c .insn 2, 0x2f4c + 1d4e: 2052 .insn 2, 0x2052 + 1d50: 6f6d lui t5,0x1b + 1d52: 6576 .insn 2, 0x6576 + 1d54: 2020 .insn 2, 0x2020 + 1d56: 75204b4f .insn 4, 0x75204b4f + 1d5a: 00006573 .insn 4, 0x6573 + 1d5e: 0000 unimp + 1d60: 65726f63 bltu tp,s7,23be + 1d64: 6420 .insn 2, 0x6420 + 1d66: 6d75 lui s10,0x1d + 1d68: 6570 .insn 2, 0x6570 + 1d6a: 2064 .insn 2, 0x2064 + 1d6c: 004c addi a1,sp,4 + 1d6e: 0000 unimp + 1d70: 203a4b4f .insn 4, 0x203a4b4f + 1d74: 6572 .insn 2, 0x6572 + 1d76: 77617073 .insn 4, 0x77617073 + 1d7a: 006e c.slli zero,0x1b + 1d7c: 6170 .insn 2, 0x6170 + 1d7e: 616e .insn 2, 0x616e + 1d80: 63746f67 .insn 4, 0x63746f67 + 1d84: 6968 .insn 2, 0x6968 + 1d86: 7620 .insn 2, 0x7620 + 1d88: 0032 c.slli zero,0xc + 1d8a: 0000 unimp + 1d8c: 6f62 .insn 2, 0x6f62 + 1d8e: 6e69746f jal s0,99474 + 1d92: 656b2067 .insn 4, 0x656b2067 + 1d96: 6e72 .insn 2, 0x6e72 + 1d98: 6c65 lui s8,0x19 + 1d9a: 2e2e .insn 2, 0x2e2e + 1d9c: 0000 unimp + 1d9e: 0000 unimp + 1da0: 6f6d lui t5,0x1b + 1da2: 6e75 lui t3,0x1d + 1da4: 2074 .insn 2, 0x2074 + 1da6: 7465702f .insn 4, 0x7465702f + 1daa: 2020 .insn 2, 0x2020 + 1dac: 00006b6f jal s6,7dac + 1db0: 77617073 .insn 4, 0x77617073 + 1db4: 206e .insn 2, 0x206e + 1db6: 6c656873 .insn 4, 0x6c656873 + 1dba: 206c .insn 2, 0x206c + 1dbc: 6f20 .insn 2, 0x6f20 + 1dbe: 203e006b .insn 4, 0x203e006b + 1dc2: 2f2e .insn 2, 0x2f2e + 1dc4: 6174 .insn 2, 0x6174 + 1dc6: 616d addi sp,sp,240 + 1dc8: 63746f67 .insn 4, 0x63746f67 + 1dcc: 6968 .insn 2, 0x6968 + 1dce: 005f 6853 6c65 .insn 6, 0x6c656853005f + 1dd4: 006c addi a1,sp,12 + 1dd6: 0000 unimp + 1dd8: 6150 .insn 2, 0x6150 + 1dda: 6b6e .insn 2, 0x6b6e + 1ddc: 0000006f j 1ddc + 1de0: 6d54 .insn 2, 0x6d54 + 1de2: 7875 lui a6,0xffffd + 1de4: 0000 unimp + 1de6: 0000 unimp + 1de8: 7270 .insn 2, 0x7270 + 1dea: 0000636f jal t1,7dea + 1dee: 0000 unimp + 1df0: 7375 lui t1,0xffffd + 1df2: 7265 lui tp,0xffff9 + 1df4: 0000 unimp + 1df6: 0000 unimp + 1df8: 6f72 .insn 2, 0x6f72 + 1dfa: 0000746f jal s0,8dfa + 1dfe: 0000 unimp + 1e00: 75616c43 .insn 4, 0x75616c43 + 1e04: 6564 .insn 2, 0x6564 + 1e06: 0000 unimp + 1e08: 74696c67 .insn 4, 0x74696c67 + 1e0c: 00006863 bltu zero,zero,1e1c + 1e10: 4546 lw a0,80(sp) + 1e12: 4445 li s0,17 + 1e14: 0000 unimp + 1e16: 0000 unimp + 1e18: 4c50 lw a2,28(s0) + 1e1a: 5941 li s2,-16 + 1e1c: 0000 unimp + 1e1e: 0000 unimp + 1e20: 45454c53 .insn 4, 0x45454c53 + 1e24: 0050 addi a2,sp,4 + 1e26: 0000 unimp + 1e28: 4548 lw a0,12(a0) + 1e2a: 4c41 li s8,16 + 1e2c: 0000 unimp + 1e2e: 0000 unimp + 1e30: 54415453 .insn 4, 0x54415453 + 1e34: 00000053 .insn 4, 0x0053 + 1e38: 54544553 .insn 4, 0x54544553 + 1e3c: 4e49 li t3,18 + 1e3e: 00005347 .insn 4, 0x5347 + 1e42: 0000 unimp + 1e44: 6f4c .insn 2, 0x6f4c + 1e46: 654d0077 .insn 4, 0x654d0077 + 1e4a: 0064 addi s1,sp,12 + 1e4c: 6948 .insn 2, 0x6948 + 1e4e: 00006867 .insn 4, 0x6867 + 1e52: 0000 unimp + 1e54: 614d addi sp,sp,176 + 1e56: 0078 addi a4,sp,12 + 1e58: 7335 lui t1,0xfffed + 1e5a: 0000 unimp + 1e5c: 3031 jal 1668 + 1e5e: 35310073 .insn 4, 0x35310073 + 1e62: 30330073 .insn 4, 0x30330073 + 1e66: 30360073 .insn 4, 0x30360073 + 1e6a: 112e0073 .insn 4, 0x112e0073 + 1e6e: 0000 unimp + 1e70: 1252 slli tp,tp,0x34 + 1e72: 0000 unimp + 1e74: 1836 slli a6,a6,0x2d + 1e76: 0000 unimp + 1e78: 1b30 addi a2,sp,440 + 1e7a: 0000 unimp + 1e7c: 1996 slli s3,s3,0x25 + 1e7e: 0000 unimp + 1e80: 12b0 addi a2,sp,360 + 1e82: 0000 unimp + 1e84: 1318 addi a4,sp,416 + 1e86: 0000 unimp + 1e88: 16d2 slli a3,a3,0x34 + 1e8a: 0000 unimp + 1e8c: 16f4 addi a3,sp,876 + 1e8e: 0000 unimp + 1e90: 173a slli a4,a4,0x2e + 1e92: 0000 unimp + 1e94: 177c addi a5,sp,940 + 1e96: 0000 unimp + 1e98: 178c addi a1,sp,992 ... -00001d10 : +00001e9c : ... - 1d1c: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... - 1d2c: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1d3c: ff3f fc7f ff3f fc7f 073c 1c70 ff3f fc7f ?...?...<.p.?... - 1d4c: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1d5c: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1d6c: ff3f fcff 0020 0400 df27 0400 df27 0400 ?... ...'...'... - 1d7c: 0020 0400 ff1f f8ff 0000 0000 0000 0000 ............... - 1d8c: 0000 0000 .... + 1ea8: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... + 1eb8: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... + 1ec8: ff3f fc7f ff3f fc7f 073c 1c70 ff3f fc7f ?...?...<.p.?... + 1ed8: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... + 1ee8: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... + 1ef8: ff3f fcff 0020 0400 df27 0400 df27 0400 ?... ...'...'... + 1f08: 0020 0400 ff1f f8ff 0000 0000 0000 0000 ............... + 1f18: 0000 0000 .... -00001d90 : +00001f1c : ... - 1d9c: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... - 1dac: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1dbc: bf3f fc7e 1f3f 7c7c 0f3e 3c78 1f3f 7c7c ?.~.?.||>.x.x: +00001f9c : ... - 1e1c: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... - 1e2c: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1e3c: 5f3f 7c7d af3e bc7a ff3f fc7f ff3f fc7f ?_}|>.z.?...?... - 1e4c: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... - 1e5c: 033c 1c60 ff3f fc7f ff3f fc7f ff3f fc7f <.`.?...?...?... - 1e6c: ff3f fcff 0020 0400 df27 0400 df27 0400 ?... ...'...'... - 1e7c: 0020 0400 ff1f f8ff 0000 0000 0000 0000 ............... - 1e8c: 0000 0000 .... + 1fa8: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... + 1fb8: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... + 1fc8: 5f3f 7c7d af3e bc7a ff3f fc7f ff3f fc7f ?_}|>.z.?...?... + 1fd8: ff3f fc7f ff3f fc7f ff3f fc7f ff3f fc7f ?...?...?...?... + 1fe8: 033c 1c60 ff3f fc7f ff3f fc7f ff3f fc7f <.`.?...?...?... + 1ff8: ff3f fcff 0020 0400 df27 0400 df27 0400 ?... ...'...'... + 2008: 0020 0400 ff1f f8ff 0000 0000 0000 0000 ............... + 2018: 0000 0000 .... -00001e90 : +0000201c : ... - 1e9c: ff1f f8ff ff3f fcff ff3f fc7f ff3f fc7f ....?...?...?... - 1eac: ff3f fc7f ff3f fc7f ff3f fc7f bf3f fc7e ?...?...?...?.~. - 1ebc: 1f3f 7c7c 0f3e 3c78 1f3f 7c7c bf3f fc7e ?.||>.x.x: - 1f10: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 1f20: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 1f30: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 1f40: ff01 80ff ff03 c0ff ff03 c0ff db03 c0db ................ - 1f50: e703 c0e7 e703 c0e7 db03 c0db fd01 80df ................ - 1f60: fa01 80bf f700 007f 7f00 00fe ff01 c0ff ................ - 1f70: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 1f80: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000209c : + 209c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 20ac: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 20bc: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 20cc: ff01 80ff ff03 c0ff ff03 c0ff db03 c0db ................ + 20dc: e703 c0e7 e703 c0e7 db03 c0db fd01 80df ................ + 20ec: fa01 80bf f700 007f 7f00 00fe ff01 c0ff ................ + 20fc: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 210c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00001f90 : - 1f90: 0000 0080 1000 0088 1100 f088 3100 208c .............1. - 1fa0: 3900 40dc 3b00 f0dc 7f00 00fe 7f00 00fe .9.@.;.......... - 1fb0: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 1fc0: ff01 80ff ff03 c0ff ff03 c0ff ff03 c0ff ................ - 1fd0: c303 c0c3 ff03 c0ff ff03 c0ff ff01 80ff ................ - 1fe0: fe01 807f ff00 00ff 7f00 00fe ff01 c0ff ................ - 1ff0: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2000: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000211c : + 211c: 0000 0080 1000 0088 1100 f088 3100 208c .............1. + 212c: 3900 40dc 3b00 f0dc 7f00 00fe 7f00 00fe .9.@.;.......... + 213c: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 214c: ff01 80ff ff03 c0ff ff03 c0ff ff03 c0ff ................ + 215c: c303 c0c3 ff03 c0ff ff03 c0ff ff01 80ff ................ + 216c: fe01 807f ff00 00ff 7f00 00fe ff01 c0ff ................ + 217c: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 218c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002010 : - 2010: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 2020: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 2030: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 2040: ff01 80ff ff03 c0ff ff03 c0ff e703 c0e7 ................ - 2050: e703 c0e7 ff03 c0ff ff03 c0ff fc01 803f ..............?. - 2060: fd01 803f fc00 00bf 7c00 003e ff01 c0ff ..?......|>..... - 2070: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2080: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000219c : + 219c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 21ac: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 21bc: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 21cc: ff01 80ff ff03 c0ff ff03 c0ff e703 c0e7 ................ + 21dc: e703 c0e7 ff03 c0ff ff03 c0ff fc01 803f ..............?. + 21ec: fd01 803f fc00 00bf 7c00 003e ff01 c0ff ..?......|>..... + 21fc: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 220c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002090 : - 2090: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 20a0: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 20b0: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 20c0: ff01 80ff 9f03 c0f9 e703 c0e7 ff03 c0ff ................ - 20d0: e703 c0e7 e703 c0e7 ff03 c0ff ff01 80ff ................ - 20e0: ff01 80ff fc00 003f 7b00 00de f701 c0ef ......?..{...... - 20f0: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2100: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000221c : + 221c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 222c: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 223c: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 224c: ff01 80ff 9f03 c0f9 e703 c0e7 ff03 c0ff ................ + 225c: e703 c0e7 e703 c0e7 ff03 c0ff ff01 80ff ................ + 226c: ff01 80ff fc00 003f 7b00 00de f701 c0ef ......?..{...... + 227c: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 228c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002110 : - 2110: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 2120: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 2130: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 2140: ff01 80ff ff03 c0ff ff03 c0ff ef03 c0f7 ................ - 2150: e703 c0eb db03 c0db ff03 c0ff ff01 80ff ................ - 2160: f701 80ef f700 00ef 7b00 00de fc01 c03f .........{....?. - 2170: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2180: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000229c : + 229c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 22ac: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 22bc: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 22cc: ff01 80ff ff03 c0ff ff03 c0ff ef03 c0f7 ................ + 22dc: e703 c0eb db03 c0db ff03 c0ff ff01 80ff ................ + 22ec: f701 80ef f700 00ef 7b00 00de fc01 c03f .........{....?. + 22fc: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 230c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002190 : - 2190: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 21a0: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 21b0: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 21c0: ff01 80ff ff03 c0ff ff03 c0ff ff03 c0ff ................ - 21d0: c303 c0c3 ff03 c0ff ff03 c0ff ff01 80ff ................ - 21e0: fc01 803f ff00 00ff 7f00 00fe ff01 c0ff ..?............. - 21f0: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2200: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000231c : + 231c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 232c: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 233c: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 234c: ff01 80ff ff03 c0ff ff03 c0ff ff03 c0ff ................ + 235c: c303 c0c3 ff03 c0ff ff03 c0ff ff01 80ff ................ + 236c: fc01 803f ff00 00ff 7f00 00fe ff01 c0ff ..?............. + 237c: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 238c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002210 : - 2210: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. - 2220: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... - 2230: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. - 2240: ff01 80ff ff03 c0ff ff03 c0ff e703 c0e7 ................ - 2250: e703 c0e7 ff03 c0ff ff03 c0ff ff01 80ff ................ - 2260: fc01 803f ff00 00ff 7f00 00fe ff01 c0ff ..?............. - 2270: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ - 2280: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ +0000239c : + 239c: 0000 0080 1000 0088 1100 0088 3100 008c .............1.. + 23ac: 3900 00dc 3b00 00dc 7f00 00fe 7f00 00fe .9...;.......... + 23bc: f800 003f e700 00c7 df00 00fb bf01 80fd ..?............. + 23cc: ff01 80ff ff03 c0ff ff03 c0ff e703 c0e7 ................ + 23dc: e703 c0e7 ff03 c0ff ff03 c0ff ff01 80ff ................ + 23ec: fc01 803f ff00 00ff 7f00 00fe ff01 c0ff ..?............. + 23fc: ff01 c0ff ff03 e0ff ff03 e0ff ff03 e0ff ................ + 240c: ff07 f0ff ff07 f0ff ff0f f8ff ff0f f8ff ................ -00002290 : +0000241c : ... - 229c: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 22ac: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 22bc: ff0f f0ff 010f f080 ff0f f0ff ff0f f0ff ................ - 22cc: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 22dc: ff0f f0ff f80f f00f ff0f f0ff ff0f f0ff ................ - 22ec: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ - 22fc: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ - 230c: 7f00 00fe .... + 2428: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2438: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2448: ff0f f0ff 010f f080 ff0f f0ff ff0f f0ff ................ + 2458: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2468: ff0f f0ff f80f f00f ff0f f0ff ff0f f0ff ................ + 2478: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ + 2488: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ + 2498: 7f00 00fe .... -00002310 : +0000249c : ... - 231c: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 232c: ff0f f0ff ff0f f0ff ff0f f0ff ef0f f0f7 ................ - 233c: c70f f0e3 830f f0c1 c70f f0e3 ef0f f0f7 ................ - 234c: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 235c: ff0f f0ff ff0f f0ff ff0f f0ff f80f f01f ................ - 236c: c70f f0e3 ff0f f0ff ff07 e0ff 0700 00e0 ................ - 237c: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ - 238c: 7f00 00fe .... + 24a8: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 24b8: ff0f f0ff ff0f f0ff ff0f f0ff ef0f f0f7 ................ + 24c8: c70f f0e3 830f f0c1 c70f f0e3 ef0f f0f7 ................ + 24d8: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 24e8: ff0f f0ff ff0f f0ff ff0f f0ff f80f f01f ................ + 24f8: c70f f0e3 ff0f f0ff ff07 e0ff 0700 00e0 ................ + 2508: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ + 2518: 7f00 00fe .... -00002390 : +0000251c : ... - 239c: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 23ac: ff0f f0ff ff0f f0ff ff0f f0ff df0f f0ef ................ - 23bc: af0f f0d7 ff0f f0ff ff0f f0ff ff0f f0ff ................ - 23cc: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 23dc: c70f f0e3 f80f f01f ff0f f0ff ff0f f0ff ................ - 23ec: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ - 23fc: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ - 240c: 7f00 00fe .... + 2528: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2538: ff0f f0ff ff0f f0ff ff0f f0ff df0f f0ef ................ + 2548: af0f f0d7 ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2558: ff0f f0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 2568: c70f f0e3 f80f f01f ff0f f0ff ff0f f0ff ................ + 2578: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ + 2588: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ + 2598: 7f00 00fe .... -00002410 : +0000259c : ... - 241c: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ - 242c: ff0f f0ff ff0f f0ff ef0f f0f7 c70f f0e3 ................ - 243c: 830f f0c1 c70f f0e3 ef0f f0f7 ff0f f0ff ................ - 244c: ff0f f0ff ff0f f0ff ff0f f0ff 7f0f f0ff ................ - 245c: bf0f f0ff df0f f0ff bf0f f0ff 780f f00f .............x.. - 246c: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ - 247c: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ - 248c: 7f00 00fe .... + 25a8: ff07 e0ff ff0f f0ff ff0f f0ff ff0f f0ff ................ + 25b8: ff0f f0ff ff0f f0ff ef0f f0f7 c70f f0e3 ................ + 25c8: 830f f0c1 c70f f0e3 ef0f f0f7 ff0f f0ff ................ + 25d8: ff0f f0ff ff0f f0ff ff0f f0ff 7f0f f0ff ................ + 25e8: bf0f f0ff df0f f0ff bf0f f0ff 780f f00f .............x.. + 25f8: ff0f f0ff ff0f f0ff ff07 e0ff 0700 00e0 ................ + 2608: 0700 00e0 0700 00e0 7f00 00fe 7f00 00fe ................ + 2618: 7f00 00fe .... -00002490 : - 2490: c003 c003 c003 f007 f80f fc1f 7fff 3ffe ...............? - 24a0: 1ffc 3ffe 7c1f fc1f f80f f007 c003 c003 ...?.|.......... +0000261c : + 261c: c003 c003 c003 f007 f80f fc1f 7fff 3ffe ...............? + 262c: 1ffc 3ffe 7c1f fc1f f80f f007 c003 c003 ...?.|.......... -000024b0 : - 24b0: 0000 0000 0000 c000 c000 c000 c006 c006 ................ - 24c0: d806 d806 d836 d836 d836 d836 0000 0000 ....6.6.6.6..... +0000263c : + 263c: 0000 0000 0000 c000 c000 c000 c006 c006 ................ + 264c: d806 d806 d836 d836 d836 d836 0000 0000 ....6.6.6.6..... -000024d0 : - 24d0: 0000 8000 f007 f80f 3c1c 3e3c 0e30 0e30 .........<<>0.0. - 24e0: 0f70 0e30 3e3c 3e3c fc1f f80f f007 8000 p.0.<><>........ +0000265c : + 265c: 0000 8000 f007 f80f 3c1c 3e3c 0e30 0e30 .........<<>0.0. + 266c: 0f70 0e30 3e3c 3e3c fc1f f80f f007 8000 p.0.<><>........ -000024f0 : - 24f0: 0000 0000 8000 8000 c001 c001 f007 f80d ................ - 2500: f80d f808 fc1d f80d f80f f80f f007 8000 ................ +0000267c : + 267c: 0000 0000 8000 8000 c001 c001 f007 f80d ................ + 268c: f80d f808 fc1d f80d f80f f80f f007 8000 ................ -00002510 : - 2510: 0000 0000 0000 0004 000c 001c 0018 001c ................ - 2520: 003c 001c 001e 001f e80f f007 8000 0000 <............... +0000269c : + 269c: 0000 0000 0000 0004 000c 001c 0018 001c ................ + 26ac: 003c 001c 001e 001f e80f f007 8000 0000 <............... -00002530 : - 2530: 0000 0000 7007 0000 7c1f 7e3f 7e3f 7e3f .....p...|?~?~?~ - 2540: 0000 7e3f 7e3f 7e3f 7c1f 0000 7007 0000 ..?~?~?~.|...p.. +000026bc : + 26bc: 0000 0000 7007 0000 7c1f 7e3f 7e3f 7e3f .....p...|?~?~?~ + 26cc: 0000 7e3f 7e3f 7e3f 7c1f 0000 7007 0000 ..?~?~?~.|...p.. -00002550 : - 2550: 0000 0000 a000 9001 e00f f01b f83b f831 ............;.1. - 2560: f83b fc7b f83f f83f f83f f01f e00f 0001 ;.{.?.?.?....... +000026dc : + 26dc: 0000 0000 a000 9001 e00f f01b f83b f831 ............;.1. + 26ec: f83b fc7b f83f f83f f83f f01f e00f 0001 ;.{.?.?.?....... -00002570 : - 2570: d5ae a880 d33f 4000 148d 0020 c8a1 12da ....?..@.. ..... - 2580: 8f81 f1d9 40db a6a4 ffaf 0000 .....@...... +000026fc : + 26fc: d5ae a880 d33f 4000 148d 0020 c8a1 12da ....?..@.. ..... + 270c: 8f81 f1d9 40db a6a4 ffaf 0000 .....@...... -0000258c : - 258c: 1c04 0000 1c14 0000 1c28 0000 1c38 0000 ........(...8... - 259c: 1c48 0000 H... +00002718 : + 2718: 1d7c 0000 1d8c 0000 1da0 0000 1db0 0000 |............... + 2728: 1dc0 0000 .... -000025a0 : - 25a0: 1c58 0000 1c60 0000 1c68 0000 X...`...h... +0000272c : + 272c: 1dd0 0000 1dd8 0000 1de0 0000 ............ -000025ac : +00002738 : ... - 25bc: 0000 0200 0000 0000 0000 0000 0000 0000 ................ - 25cc: 0080 0080 0f00 00f8 1500 0054 ff00 80ff ..........T..... - 25dc: ff01 c0ff ff03 e0ff 1101 4144 d707 f0f5 ..........DA.... - 25ec: ef07 f0fb d707 f0f5 1105 5044 ff0f f8ff ..........DP.... - 25fc: ff07 f0ff ff07 f0ff 5505 5055 ea07 f0ab .........UUP.... - 260c: ff43 e0ff ff03 e0ff 5501 4055 ff00 80ff C........UU@.... - 261c: 3f00 00fe 0f00 04f8 0020 0000 0000 0000 .?...... ....... + 2748: 0000 0200 0000 0000 0000 0000 0000 0000 ................ + 2758: 0080 0080 0f00 00f8 1500 0054 ff00 80ff ..........T..... + 2768: ff01 c0ff ff03 e0ff 1101 4144 d707 f0f5 ..........DA.... + 2778: ef07 f0fb d707 f0f5 1105 5044 ff0f f8ff ..........DP.... + 2788: ff07 f0ff ff07 f0ff 5505 5055 ea07 f0ab .........UUP.... + 2798: ff43 e0ff ff03 e0ff 5501 4055 ff00 80ff C........UU@.... + 27a8: 3f00 00fe 0f00 04f8 0020 0000 0000 0000 .?...... ....... -0000262c : +000027b8 : ... - 2634: 0000 2000 0000 2000 0004 a800 000e 2000 ... ... ....... - 2644: 0004 fe03 0000 2000 0000 a880 0f00 20f8 ....... ....... - 2654: 3f00 20fe 7f00 00ff ff00 80ff ff01 c0ff .?. ............ - 2664: ff01 c0ff ff03 e0ff f703 e0f7 f703 e0f7 ................ - 2674: e303 e0e3 f707 f0f7 f703 e0f7 ff03 e0ff ................ - 2684: ff03 e0ff e703 e0f3 f801 c00f ff01 c0ff ................ - 2694: ff00 80ff 7f00 00ff 3f00 00fe 0f00 00f8 .........?...... - 26a4: 0000 0080 0000 0000 ........ + 27c0: 0000 2000 0000 2000 0004 a800 000e 2000 ... ... ....... + 27d0: 0004 fe03 0000 2000 0000 a880 0f00 20f8 ....... ....... + 27e0: 3f00 20fe 7f00 00ff ff00 80ff ff01 c0ff .?. ............ + 27f0: ff01 c0ff ff03 e0ff f703 e0f7 f703 e0f7 ................ + 2800: e303 e0e3 f707 f0f7 f703 e0f7 ff03 e0ff ................ + 2810: ff03 e0ff e703 e0f3 f801 c00f ff01 c0ff ................ + 2820: ff00 80ff 7f00 00ff 3f00 00fe 0f00 00f8 .........?...... + 2830: 0000 0080 0000 0000 ........ -000026ac : - 26ac: 2410 0000 2410 0000 2390 0000 2310 0000 .$...$...#...#.. - 26bc: 2390 0000 2290 0000 2310 0000 2210 0000 .#..."...#...".. - 26cc: 2190 0000 2110 0000 2090 0000 2010 0000 .!...!... ... .. - 26dc: 1f90 0000 1f10 0000 1e90 0000 1e90 0000 ................ - 26ec: 1e10 0000 1d90 0000 1e10 0000 1d10 0000 ................ - 26fc: 1d90 0000 .... +00002838 : + 2838: 259c 0000 259c 0000 251c 0000 249c 0000 .%...%...%...$.. + 2848: 251c 0000 241c 0000 249c 0000 239c 0000 .%...$...$...#.. + 2858: 231c 0000 229c 0000 221c 0000 219c 0000 .#..."..."...!.. + 2868: 211c 0000 209c 0000 201c 0000 201c 0000 .!... ... ... .. + 2878: 1f9c 0000 1f1c 0000 1f9c 0000 1e9c 0000 ................ + 2888: 1f1c 0000 .... -00002700 : - 2700: 2550 0000 2530 0000 2510 0000 24f0 0000 P%..0%...%...$.. - 2710: 24d0 0000 24b0 0000 2490 0000 .$...$...$.. +0000288c : + 288c: 26dc 0000 26bc 0000 269c 0000 267c 0000 .&...&...&..|&.. + 289c: 265c 0000 263c 0000 261c 0000 \&..<&...&.. -0000271c : - 271c: 1c70 0000 1c78 0000 1c80 0000 1c88 0000 p...x........... - 272c: 1c90 0000 .... +000028a8 : + 28a8: 1de8 0000 1df0 0000 1df8 0000 1e00 0000 ................ + 28b8: 1e08 0000 .... -00002730 : - 2730: 1c98 0000 1ca0 0000 1ca8 0000 1b8c 0000 ................ - 2740: 1cb0 0000 1cb8 0000 1cc0 0000 ............ +000028bc : + 28bc: 1e10 0000 1e18 0000 1e20 0000 1cf8 0000 ........ ....... + 28cc: 1e28 0000 1e30 0000 1e38 0000 (...0...8... -0000274c : - 274c: 1ccc 0000 1cd0 0000 1cd4 0000 1cd8 0000 ................ - 275c: 1cdc 0000 1ae8 0000 ........ +000028d8 : + 28d8: 1e44 0000 1e48 0000 1e4c 0000 1e54 0000 D...H...L...T... -00002764 : +000028e8 : + 28e8: 1e58 0000 1e5c 0000 1e60 0000 1e64 0000 X...\...`...d... + 28f8: 1e68 0000 1c14 0000 h....... + +00002900 : ... - 276c: ff00 00fc ff03 00ff ff07 80ff 1f06 80e1 ................ - 277c: 3006 8031 3006 8031 3f06 00c3 3306 0003 .01..01..?...3.. - 278c: 3106 0083 3006 00c3 0006 0006 0f06 0006 .1...0.......... - 279c: ff07 80ff ff0f c0ff ff1f e0ff ff3f f0ff ............?... - 27ac: ff7f f8ff ffff fcff ffff fcff f000 00f0 ................ - 27bc: ff03 00f0 ff0f 00fc 0000 0000 0000 0000 ................ + 2908: ff00 00fc ff03 00ff ff07 80ff 1f06 80e1 ................ + 2918: 3006 8031 3006 8031 3f06 00c3 3306 0003 .01..01..?...3.. + 2928: 3106 0083 3006 00c3 0006 0006 0f06 0006 .1...0.......... + 2938: ff07 80ff ff0f c0ff ff1f e0ff ff3f f0ff ............?... + 2948: ff7f f8ff ffff fcff ffff fcff f000 00f0 ................ + 2958: ff03 00f0 ff0f 00fc 0000 0000 0000 0000 ................ ... -000027e4 : - 27e4: 0053 00a7 00fa 01f4 03e8 0000 S........... +00002980 : + 2980: 0053 00a7 00fa 01f4 03e8 0000 S........... -000027f0 : +0000298c : ... - 27f8: 817e 81a5 99bd 7e81 ff7e ffdb e7c3 7eff ~......~~......~ - 2808: fe6c fefe 387c 0010 3810 fe7c 387c 0010 l...|8...8|.|8.. - 2818: 7c38 fe38 d6fe 3810 3810 fe7c 7cfe 3810 8|8....8.8|..|.8 - 2828: 0000 3c18 183c 0000 ffff c3e7 e7c3 ffff ...<<........... - 2838: 3c00 4266 6642 003c c3ff bd99 99bd ffc3 ..>....<~..~<. - 2888: 6666 6666 0066 0066 db7f 7bdb 1b1b 001b fffff.f....{.... - 2898: 613e 663c 3c66 7c86 0000 0000 7e7e 007e >a`<.|.. - 2918: c600 18cc 6630 00c6 6c38 7638 ccdc 0076 ....0f..8l8v..v. - 2928: 1818 0030 0000 0000 180c 3030 1830 000c ..0.......000... - 2938: 1830 0c0c 180c 0030 6600 ff3c 663c 0000 0.....0..f<.l...... - 2c88: 827c c67c c6c6 007c 00c6 c67c c6c6 007c |.|...|...|...|. - 2c98: 1830 c67c c6c6 007c 8478 cc00 cccc 0076 0.|...|.x.....v. - 2ca8: 3060 cccc cccc 0076 00c6 c6c6 7ec6 fc06 `0....v......~.. - 2cb8: 38c6 c66c 6cc6 0038 00c6 c6c6 c6c6 007c .8l..l8.......|. - 2cc8: 1818 c07e 7ec0 1818 6c38 f064 6660 00fc ..~..~..8ld.`f.. - 2cd8: 6666 7e3c 7e18 1818 ccf8 facc cfc6 c7c6 ff<~.~.......... - 2ce8: 1b0e 3c18 d818 0070 3018 0c78 cc7c 0076 ...<..p..0x.|.v. - 2cf8: 180c 3800 1818 003c 180c c67c c6c6 007c ...8..<...|...|. - 2d08: 3018 cccc cccc 0076 dc76 dc00 6666 0066 .0....v.v...fff. - 2d18: dc76 e600 def6 00ce 6c3c 3e6c 7e00 0000 v........~.. - 2d28: 6c38 386c 7c00 0000 0018 1818 6330 003e 8ll8.|......0c>. - 2d38: 0000 fe00 c0c0 0000 0000 fe00 0606 0000 ................ - 2d48: e663 7e6c 6633 0fcc e663 7a6c 6a36 06df c.l~3f..c.lz6j.. - 2d58: 0018 1818 3c3c 0018 3300 cc66 3366 0000 ....<<...3f.f3.. - 2d68: cc00 3366 cc66 0000 8822 8822 8822 8822 ..f3f...".".".". - 2d78: aa55 aa55 aa55 aa55 dd77 dd77 dd77 dd77 U.U.U.U.w.w.w.w. - 2d88: 1818 1818 1818 1818 1818 1818 18f8 1818 ................ - 2d98: 1818 18f8 18f8 1818 3636 3636 36f6 3636 ........6666.666 - 2da8: 0000 0000 36fe 3636 0000 18f8 18f8 1818 .....666........ - 2db8: 3636 06f6 36f6 3636 3636 3636 3636 3636 66...66666666666 - 2dc8: 0000 06fe 36f6 3636 3636 06f6 00fe 0000 .....66666...... - 2dd8: 3636 3636 00fe 0000 1818 18f8 00f8 0000 6666............ - 2de8: 0000 0000 18f8 1818 1818 1818 001f 0000 ................ - 2df8: 1818 1818 00ff 0000 0000 0000 18ff 1818 ................ - 2e08: 1818 1818 181f 1818 0000 0000 00ff 0000 ................ - 2e18: 1818 1818 18ff 1818 1818 181f 181f 1818 ................ - 2e28: 3636 3636 3637 3636 3636 3037 003f 0000 666676666670?... - 2e38: 0000 303f 3637 3636 3636 00f7 00ff 0000 ..?0766666...... - 2e48: 0000 00ff 36f7 3636 3636 3037 3637 3636 .....66666707666 - 2e58: 0000 00ff 00ff 0000 3636 00f7 36f7 3636 ........66...666 - 2e68: 1818 00ff 00ff 0000 3636 3636 00ff 0000 ........6666.... - 2e78: 0000 00ff 18ff 1818 0000 0000 36ff 3636 .............666 - 2e88: 3636 3636 003f 0000 1818 181f 001f 0000 6666?........... - 2e98: 0000 181f 181f 1818 0000 0000 363f 3636 ............?666 - 2ea8: 3636 3636 36ff 3636 1818 18ff 18ff 1818 6666.666........ - 2eb8: 1818 1818 00f8 0000 0000 0000 181f 1818 ................ - 2ec8: ffff ffff ffff ffff 0000 0000 ffff ffff ................ - 2ed8: f0f0 f0f0 f0f0 f0f0 0f0f 0f0f 0f0f 0f0f ................ - 2ee8: ffff ffff 0000 0000 0000 dc76 dcc8 0076 ..........v...v. - 2ef8: cc78 d8cc c6cc 00cc c6fe c0c0 c0c0 00c0 x............... - 2f08: 0000 6cfe 6c6c 006c c6fe 3060 c660 00fe ...llll...`0`... - 2f18: 0000 d87e d8d8 0070 0000 6666 6666 c07c ..~...p...ffff|. - 2f28: 7600 18dc 1818 0018 187e 663c 3c66 7e18 .v......~.ff<...~..~.. - 2f58: 0c06 db7e 7edb c060 301e 7e60 3060 001e ..~..~`..0`~`0.. - 2f68: 7c00 c6c6 c6c6 00c6 fe00 fe00 fe00 0000 .|.............. - 2f78: 1818 187e 0018 007e 1830 180c 0030 007e ..~...~.0...0.~. - 2f88: 180c 1830 000c 007e 1b0e 181b 1818 1818 ..0...~......... - 2f98: 1818 1818 d818 70d8 1800 7e00 1800 0000 .......p...~.... - 2fa8: 7600 00dc dc76 0000 6c38 386c 0000 0000 .v..v...8ll8.... - 2fb8: 0000 1800 0018 0000 0000 1800 0000 0000 ................ - 2fc8: 0c0f 0c0c 6cec 1c3c 366c 3636 0036 0000 .....l<.l6666... - 2fd8: 0c78 3018 007c 0000 0000 3c3c 3c3c 0000 x..0|.....<<<<.. + 2994: 817e 81a5 99bd 7e81 ff7e ffdb e7c3 7eff ~......~~......~ + 29a4: fe6c fefe 387c 0010 3810 fe7c 387c 0010 l...|8...8|.|8.. + 29b4: 7c38 fe38 d6fe 3810 3810 fe7c 7cfe 3810 8|8....8.8|..|.8 + 29c4: 0000 3c18 183c 0000 ffff c3e7 e7c3 ffff ...<<........... + 29d4: 3c00 4266 6642 003c c3ff bd99 99bd ffc3 ..>....<~..~<. + 2a24: 6666 6666 0066 0066 db7f 7bdb 1b1b 001b fffff.f....{.... + 2a34: 613e 663c 3c66 7c86 0000 0000 7e7e 007e >a`<.|.. + 2ab4: c600 18cc 6630 00c6 6c38 7638 ccdc 0076 ....0f..8l8v..v. + 2ac4: 1818 0030 0000 0000 180c 3030 1830 000c ..0.......000... + 2ad4: 1830 0c0c 180c 0030 6600 ff3c 663c 0000 0.....0..f<.l...... + 2e24: 827c c67c c6c6 007c 00c6 c67c c6c6 007c |.|...|...|...|. + 2e34: 1830 c67c c6c6 007c 8478 cc00 cccc 0076 0.|...|.x.....v. + 2e44: 3060 cccc cccc 0076 00c6 c6c6 7ec6 fc06 `0....v......~.. + 2e54: 38c6 c66c 6cc6 0038 00c6 c6c6 c6c6 007c .8l..l8.......|. + 2e64: 1818 c07e 7ec0 1818 6c38 f064 6660 00fc ..~..~..8ld.`f.. + 2e74: 6666 7e3c 7e18 1818 ccf8 facc cfc6 c7c6 ff<~.~.......... + 2e84: 1b0e 3c18 d818 0070 3018 0c78 cc7c 0076 ...<..p..0x.|.v. + 2e94: 180c 3800 1818 003c 180c c67c c6c6 007c ...8..<...|...|. + 2ea4: 3018 cccc cccc 0076 dc76 dc00 6666 0066 .0....v.v...fff. + 2eb4: dc76 e600 def6 00ce 6c3c 3e6c 7e00 0000 v........~.. + 2ec4: 6c38 386c 7c00 0000 0018 1818 6330 003e 8ll8.|......0c>. + 2ed4: 0000 fe00 c0c0 0000 0000 fe00 0606 0000 ................ + 2ee4: e663 7e6c 6633 0fcc e663 7a6c 6a36 06df c.l~3f..c.lz6j.. + 2ef4: 0018 1818 3c3c 0018 3300 cc66 3366 0000 ....<<...3f.f3.. + 2f04: cc00 3366 cc66 0000 8822 8822 8822 8822 ..f3f...".".".". + 2f14: aa55 aa55 aa55 aa55 dd77 dd77 dd77 dd77 U.U.U.U.w.w.w.w. + 2f24: 1818 1818 1818 1818 1818 1818 18f8 1818 ................ + 2f34: 1818 18f8 18f8 1818 3636 3636 36f6 3636 ........6666.666 + 2f44: 0000 0000 36fe 3636 0000 18f8 18f8 1818 .....666........ + 2f54: 3636 06f6 36f6 3636 3636 3636 3636 3636 66...66666666666 + 2f64: 0000 06fe 36f6 3636 3636 06f6 00fe 0000 .....66666...... + 2f74: 3636 3636 00fe 0000 1818 18f8 00f8 0000 6666............ + 2f84: 0000 0000 18f8 1818 1818 1818 001f 0000 ................ + 2f94: 1818 1818 00ff 0000 0000 0000 18ff 1818 ................ + 2fa4: 1818 1818 181f 1818 0000 0000 00ff 0000 ................ + 2fb4: 1818 1818 18ff 1818 1818 181f 181f 1818 ................ + 2fc4: 3636 3636 3637 3636 3636 3037 003f 0000 666676666670?... + 2fd4: 0000 303f 3637 3636 3636 00f7 00ff 0000 ..?0766666...... + 2fe4: 0000 00ff 36f7 3636 3636 3037 3637 3636 .....66666707666 + 2ff4: 0000 00ff 00ff 0000 3636 00f7 36f7 3636 ........66...666 + 3004: 1818 00ff 00ff 0000 3636 3636 00ff 0000 ........6666.... + 3014: 0000 00ff 18ff 1818 0000 0000 36ff 3636 .............666 + 3024: 3636 3636 003f 0000 1818 181f 001f 0000 6666?........... + 3034: 0000 181f 181f 1818 0000 0000 363f 3636 ............?666 + 3044: 3636 3636 36ff 3636 1818 18ff 18ff 1818 6666.666........ + 3054: 1818 1818 00f8 0000 0000 0000 181f 1818 ................ + 3064: ffff ffff ffff ffff 0000 0000 ffff ffff ................ + 3074: f0f0 f0f0 f0f0 f0f0 0f0f 0f0f 0f0f 0f0f ................ + 3084: ffff ffff 0000 0000 0000 dc76 dcc8 0076 ..........v...v. + 3094: cc78 d8cc c6cc 00cc c6fe c0c0 c0c0 00c0 x............... + 30a4: 0000 6cfe 6c6c 006c c6fe 3060 c660 00fe ...llll...`0`... + 30b4: 0000 d87e d8d8 0070 0000 6666 6666 c07c ..~...p...ffff|. + 30c4: 7600 18dc 1818 0018 187e 663c 3c66 7e18 .v......~.ff<...~..~.. + 30f4: 0c06 db7e 7edb c060 301e 7e60 3060 001e ..~..~`..0`~`0.. + 3104: 7c00 c6c6 c6c6 00c6 fe00 fe00 fe00 0000 .|.............. + 3114: 1818 187e 0018 007e 1830 180c 0030 007e ..~...~.0...0.~. + 3124: 180c 1830 000c 007e 1b0e 181b 1818 1818 ..0...~......... + 3134: 1818 1818 d818 70d8 1800 7e00 1800 0000 .......p...~.... + 3144: 7600 00dc dc76 0000 6c38 386c 0000 0000 .v..v...8ll8.... + 3154: 0000 1800 0018 0000 0000 1800 0000 0000 ................ + 3164: 0c0f 0c0c 6cec 1c3c 366c 3636 0036 0000 .....l<.l6666... + 3174: 0c78 3018 007c 0000 0000 3c3c 3c3c 0000 x..0|.....<<<<.. ... diff --git a/tama.map b/tama.map index 8605570..083936d 100644 --- a/tama.map +++ b/tama.map @@ -1,65 +1,65 @@ Archive member included to satisfy reference by file (symbol) ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) - /tmp/ccYbPpFS.ltrans0.ltrans.o (__divsi3) + /tmp/ccMNASSr.ltrans0.ltrans.o (__divsi3) Discarded input sections - .text 0x00000000 0x0 /tmp/ccYbPpFS.ltrans0.ltrans.o - .data 0x00000000 0x0 /tmp/ccYbPpFS.ltrans0.ltrans.o - .bss 0x00000000 0x0 /tmp/ccYbPpFS.ltrans0.ltrans.o + .text 0x00000000 0x0 /tmp/ccMNASSr.ltrans0.ltrans.o + .data 0x00000000 0x0 /tmp/ccMNASSr.ltrans0.ltrans.o + .bss 0x00000000 0x0 /tmp/ccMNASSr.ltrans0.ltrans.o .text.mini_pad - 0x00000000 0x8a /tmp/ccYbPpFS.ltrans0.ltrans.o - .text._puts 0x00000000 0x40 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x8a /tmp/ccMNASSr.ltrans0.ltrans.o + .text._puts 0x00000000 0x40 /tmp/ccMNASSr.ltrans0.ltrans.o .text.mini_itoa.part.0 - 0x00000000 0xcc /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0xcc /tmp/ccMNASSr.ltrans0.ltrans.o .text.__puts_uart - 0x00000000 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strlen 0x00000000 0x12 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strlen 0x00000000 0x12 /tmp/ccMNASSr.ltrans0.ltrans.o .text.mini_vpprintf - 0x00000000 0x1d8 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.printf 0x00000000 0x2c /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.vprintf 0x00000000 0x16 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x1d8 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.printf 0x00000000 0x2c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.vprintf 0x00000000 0x16 /tmp/ccMNASSr.ltrans0.ltrans.o .text.mini_vsnprintf - 0x00000000 0x42 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x42 /tmp/ccMNASSr.ltrans0.ltrans.o .text.snprintf - 0x00000000 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.sprintf 0x00000000 0x26 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strcpy 0x00000000 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strncpy 0x00000000 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strcmp 0x00000000 0x1a /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strncmp 0x00000000 0x2e /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strchr 0x00000000 0x16 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strrchr 0x00000000 0x3c /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.memcmp 0x00000000 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.memmove 0x00000000 0x5e /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.memchr 0x00000000 0x1a /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strnlen 0x00000000 0x2a /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.sprintf 0x00000000 0x26 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strcpy 0x00000000 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strncpy 0x00000000 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strcmp 0x00000000 0x1a /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strncmp 0x00000000 0x2e /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strchr 0x00000000 0x16 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strrchr 0x00000000 0x3c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.memcmp 0x00000000 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.memmove 0x00000000 0x5e /tmp/ccMNASSr.ltrans0.ltrans.o + .text.memchr 0x00000000 0x1a /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strnlen 0x00000000 0x2a /tmp/ccMNASSr.ltrans0.ltrans.o .text.twoway_strstr - 0x00000000 0x232 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.strstr 0x00000000 0x11c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x232 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.strstr 0x00000000 0x11c /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.puts.str1.4 - 0x00000000 0x2 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.puts 0x00000000 0x40 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.setjmp 0x00000000 0x10 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.longjmp 0x00000000 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x2 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.puts 0x00000000 0x40 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.setjmp 0x00000000 0x10 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.longjmp 0x00000000 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.APBAHBPrescTable.lto_priv.0 - 0x00000000 0x10 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x10 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.ADCPrescTable.lto_priv.0 - 0x00000000 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.APBAHBPrescTable.lto_priv.1 - 0x00000000 0x10 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x10 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.ADCPrescTable.lto_priv.1 - 0x00000000 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o - .comment 0x00000000 0x35 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o + .comment 0x00000000 0x35 /tmp/ccMNASSr.ltrans0.ltrans.o .note.GNU-stack - 0x00000000 0x0 /tmp/ccYbPpFS.ltrans0.ltrans.o - .comment 0x00000000 0x35 /tmp/cc5ko34Y.debug.temp.o + 0x00000000 0x0 /tmp/ccMNASSr.ltrans0.ltrans.o + .comment 0x00000000 0x35 /tmp/ccHSxGzD.debug.temp.o .note.GNU-stack - 0x00000000 0x0 /tmp/cc5ko34Y.debug.temp.o - .comment 0x00000000 0x35 /tmp/ccymsL4U.debug.temp.o + 0x00000000 0x0 /tmp/ccHSxGzD.debug.temp.o + .comment 0x00000000 0x35 /tmp/cc22Nide.debug.temp.o .note.GNU-stack - 0x00000000 0x0 /tmp/ccymsL4U.debug.temp.o + 0x00000000 0x0 /tmp/cc22Nide.debug.temp.o .data 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) .bss 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) @@ -72,11 +72,11 @@ RAM 0x20000000 0x00000800 xrw Linker script and memory map -LOAD /tmp/ccU4qhBs.o -LOAD /tmp/ccYbPpFS.ltrans0.ltrans.o -LOAD /tmp/cc5ko34Y.debug.temp.o -LOAD /tmp/ccymsL4U.debug.temp.o -LOAD /tmp/ccM8DSKk.o +LOAD /tmp/ccAe1Zm8.o +LOAD /tmp/ccMNASSr.ltrans0.ltrans.o +LOAD /tmp/ccHSxGzD.debug.temp.o +LOAD /tmp/cc22Nide.debug.temp.o +LOAD /tmp/ccTmMpOC.o LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a @@ -84,14 +84,14 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a 0x00000000 _sinit = . 0x00000000 . = ALIGN (0x4) *(SORT_NONE(.init)) - .init 0x00000000 0x9e /tmp/ccYbPpFS.ltrans0.ltrans.o + .init 0x00000000 0x9e /tmp/ccMNASSr.ltrans0.ltrans.o 0x00000000 InterruptVectorDefault 0x00000000 InterruptVector 0x000000a0 . = ALIGN (0x4) *fill* 0x0000009e 0x2 0x000000a0 _einit = . -.text 0x000000a0 0x2f50 +.text 0x000000a0 0x30ec 0x000000a0 . = ALIGN (0x4) *(.text) .text 0x000000a0 0x7e ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) @@ -102,365 +102,369 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a 0x000000f8 __modsi3 *(.text.*) .text.DelaySysTick - 0x0000011e 0x12 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000011e 0x12 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_i2c_setup - 0x00000130 0x54 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000130 0x54 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawPixel - 0x00000184 0x3c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000184 0x3c /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_fillRect - 0x000001c0 0x58 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000001c0 0x58 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawstr - 0x00000218 0x8c /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.s_cat 0x000002a4 0x12 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.u_cat 0x000002b6 0x60 /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.beep 0x00000316 0x70 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000218 0x8c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.s_cat 0x000002a4 0x12 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.u_cat 0x000002b6 0x60 /tmp/ccMNASSr.ltrans0.ltrans.o + .text.beep 0x00000316 0x70 /tmp/ccMNASSr.ltrans0.ltrans.o .text.led_blink - 0x00000386 0x2a /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.add_xp 0x000003b0 0xce /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.notify 0x0000047e 0x8e /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000386 0x2a /tmp/ccMNASSr.ltrans0.ltrans.o + .text.add_xp 0x000003b0 0xce /tmp/ccMNASSr.ltrans0.ltrans.o + .text.notify 0x0000047e 0x8e /tmp/ccMNASSr.ltrans0.ltrans.o .text.game_tick - 0x0000050c 0x23a /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000050c 0x23a /tmp/ccMNASSr.ltrans0.ltrans.o .text.draw_center_str - 0x00000746 0x28 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000746 0x28 /tmp/ccMNASSr.ltrans0.ltrans.o .text.read_buttons - 0x0000076e 0x32 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000076e 0x32 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawFastHLine.part.0 - 0x000007a0 0x44 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000007a0 0x44 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawLine.constprop.0 - 0x000007e4 0xd0 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000007e4 0xd0 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawFastVLine.constprop.0 - 0x000008b4 0x46 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000008b4 0x46 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawRect.constprop.0 - 0x000008fa 0x56 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000008fa 0x56 /tmp/ccMNASSr.ltrans0.ltrans.o .text.draw_bar - 0x00000950 0x68 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000950 0x68 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_drawImage.constprop.0 - 0x000009b8 0xc0 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000009b8 0xc0 /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_i2c_send.constprop.0 - 0x00000a78 0x11a /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000a78 0x11a /tmp/ccMNASSr.ltrans0.ltrans.o .text.ssd1306_cmd - 0x00000b92 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000b92 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o + .text.apply_brightness + 0x00000bae 0x1e /tmp/ccMNASSr.ltrans0.ltrans.o .text.handle_reset - 0x00000bae 0x72 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000bae handle_reset + 0x00000bcc 0x72 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000bcc handle_reset .text.vector_handler - 0x00000c20 0x10 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000c20 OPCM_IRQHandler - 0x00000c20 EXTI2_IRQHandler - 0x00000c20 TIM8_TRG_COM_IRQHandler - 0x00000c20 TIM8_CC_IRQHandler - 0x00000c20 USART_WKUP_IRQHandler - 0x00000c20 UART8_IRQHandler - 0x00000c20 SPI4_IRQHandler - 0x00000c20 NFC_IRQHandler - 0x00000c20 DFSDM0_IRQHandler - 0x00000c20 TIM1_CC_IRQHandler - 0x00000c20 HardFault_Handler - 0x00000c20 TIM10_IRQHandler - 0x00000c20 GPIOB_IRQHandler - 0x00000c20 IPC_CH2_Handler - 0x00000c20 USBPD_IRQHandler - 0x00000c20 TIM6_IRQHandler - 0x00000c20 GPIOA_IRQHandler - 0x00000c20 SysTick_Handler - 0x00000c20 CAN3_RX1_IRQHandler - 0x00000c20 I3C_ER_IRQHandler - 0x00000c20 PVD_IRQHandler - 0x00000c20 SDIO_IRQHandler - 0x00000c20 TIM9_BRK_IRQHandler - 0x00000c20 DMA2_Channel8_IRQHandler - 0x00000c20 CAN2_RX1_IRQHandler - 0x00000c20 EXTI3_IRQHandler - 0x00000c20 HSEM_Handler - 0x00000c20 UART1_IRQHandler - 0x00000c20 USBHS_IRQHandler - 0x00000c20 LPTIM2_IRQHandler - 0x00000c20 DMA2_Channel9_IRQHandler - 0x00000c20 TIM10_CC_IRQHandler - 0x00000c20 EXTI25_16_IRQHandler - 0x00000c20 I2C3_ER_IRQHandler - 0x00000c20 USBFS_IRQHandler - 0x00000c20 UART0_IRQHandler - 0x00000c20 USART8_IRQHandler - 0x00000c20 EXTI0_IRQHandler - 0x00000c20 I2C2_EV_IRQHandler - 0x00000c20 TIM10_TRG_COM_IRQHandler - 0x00000c20 LPTIM_IRQHandler - 0x00000c20 CAN1_RX0_IRQHandler - 0x00000c20 CAN3_SCE_IRQHandler - 0x00000c20 CAN2_SCE_IRQHandler - 0x00000c20 ADC1_2_IRQHandler - 0x00000c20 BB_IRQHandler - 0x00000c20 Break_Point_Handler - 0x00000c20 IPC_CH0_Handler - 0x00000c20 TIM2_CC_IRQHandler - 0x00000c20 SPI1_IRQHandler - 0x00000c20 USART5_IRQHandler - 0x00000c20 TAMPER_IRQHandler - 0x00000c20 TMR0_IRQHandler - 0x00000c20 AWU_IRQHandler - 0x00000c20 CAN2_RX0_IRQHandler - 0x00000c20 OSCWakeUp_IRQHandler - 0x00000c20 TIM8_UP_IRQHandler - 0x00000c20 Ecall_M_Mode_Handler - 0x00000c20 ECDC_IRQHandler - 0x00000c20 SDMMC_IRQHandler - 0x00000c20 USART7_IRQHandler - 0x00000c20 DMA2_Channel2_IRQHandler - 0x00000c20 DMA1_Channel4_IRQHandler - 0x00000c20 ADC1_IRQHandler - 0x00000c20 TIM2_BRK_IRQHandler - 0x00000c20 USART6_IRQHandler - 0x00000c20 CAN3_RX0_IRQHandler - 0x00000c20 HSADC_IRQHandler - 0x00000c20 TIM9_UP_IRQHandler - 0x00000c20 USART3_IRQHandler - 0x00000c20 RTC_IRQHandler - 0x00000c20 DMA1_Channel7_IRQHandler - 0x00000c20 LED_IRQHandler - 0x00000c20 CAN1_RX1_IRQHandler - 0x00000c20 DVP_IRQHandler - 0x00000c20 UART5_IRQHandler - 0x00000c20 USBSS_IRQHandler - 0x00000c20 SWPMI_IRQHandler - 0x00000c20 USBPDWakeUp_IRQHandler - 0x00000c20 EXTI15_8_IRQHandler - 0x00000c20 TIM4_IRQHandler - 0x00000c20 DMA2_Channel1_IRQHandler - 0x00000c20 SWPMI_WKUP_IRQHandler - 0x00000c20 USBPD_WKUP_IRQHandler - 0x00000c20 I2C1_EV_IRQHandler - 0x00000c20 USBSSWakeup_IRQHandler - 0x00000c20 UART2_IRQHandler - 0x00000c20 USART4_IRQHandler - 0x00000c20 PWMX_IRQHandler - 0x00000c20 DMA1_Channel6_IRQHandler - 0x00000c20 UART4_IRQHandler - 0x00000c20 DMA2_Channel4_IRQHandler - 0x00000c20 TIM3_IRQHandler - 0x00000c20 RCC_IRQHandler - 0x00000c20 TIM1_TRG_COM_IRQHandler - 0x00000c20 DMA1_Channel1_IRQHandler - 0x00000c20 DMA2_Channel7_IRQHandler - 0x00000c20 QSPI1_IRQHandler - 0x00000c20 EXTI15_10_IRQHandler - 0x00000c20 ADC_IRQHandler - 0x00000c20 IPC_CH3_Handler - 0x00000c20 DMA1_Channel8_IRQHandler - 0x00000c20 I3C_EV_IRQHandler - 0x00000c20 TMR2_IRQHandler - 0x00000c20 I3C_WKUP_IRQHandler - 0x00000c20 DefaultIRQHandler - 0x00000c20 TIM12_IRQHandler - 0x00000c20 TIM7_IRQHandler - 0x00000c20 CAN2_TX_IRQHandler - 0x00000c20 TIM5_IRQHandler - 0x00000c20 I2C3_EV_IRQHandler - 0x00000c20 USB_IRQHandler - 0x00000c20 EXTI9_5_IRQHandler - 0x00000c20 PIOC_IRQHandler - 0x00000c20 TIM9_IRQHandler - 0x00000c20 LTDC_IRQHandler - 0x00000c20 SAI_IRQHandler - 0x00000c20 SPI2_IRQHandler - 0x00000c20 OSC32KCal_IRQHandler - 0x00000c20 IPC_CH1_Handler - 0x00000c20 I2C_IRQHandler - 0x00000c20 LPTIM1_WKUP_IRQHandler - 0x00000c20 TIM10_BRK_IRQHandler - 0x00000c20 TIM9_CC_IRQHandler - 0x00000c20 CAN1_TX_IRQHandler - 0x00000c20 DMA2_Channel5_IRQHandler - 0x00000c20 USB2_IRQHandler - 0x00000c20 USBHSWakeUp_IRQHandler - 0x00000c20 DMA1_Channel5_IRQHandler - 0x00000c20 EXTI4_IRQHandler - 0x00000c20 USB_LP_CAN1_RX0_IRQHandler - 0x00000c20 QSPI2_IRQHandler - 0x00000c20 RNG_IRQHandler - 0x00000c20 USB_HP_CAN1_TX_IRQHandler - 0x00000c20 LLE_IRQHandler - 0x00000c20 CMPWakeUp_IRQHandler - 0x00000c20 DMA1_Channel3_IRQHandler - 0x00000c20 FSMC_IRQHandler - 0x00000c20 ETH_IRQHandler - 0x00000c20 TIM1_UP_IRQHandler - 0x00000c20 LPTIMWakeUp_IRQHandler - 0x00000c20 WWDG_IRQHandler - 0x00000c20 USBHSWakeup_IRQHandler - 0x00000c20 DMA2_Channel11_IRQHandler - 0x00000c20 WDOG_BAT_IRQHandler - 0x00000c20 Ecall_U_Mode_Handler - 0x00000c20 I2C4_EV_IRQHandler - 0x00000c20 CAN3_TX_IRQHandler - 0x00000c20 TMR3_IRQHandler - 0x00000c20 DMA2_Channel6_IRQHandler - 0x00000c20 SW_Handler - 0x00000c20 TIM1_BRK_IRQHandler - 0x00000c20 GPHA_IRQHandler - 0x00000c20 OPA_IRQHandler - 0x00000c20 DMA2_Channel10_IRQHandler - 0x00000c20 EXTI1_IRQHandler - 0x00000c20 SPI0_IRQHandler - 0x00000c20 USB2_HOST_IRQHandler - 0x00000c20 LPTIM2_WKUP_IRQHandler - 0x00000c20 RTCAlarm_IRQHandler - 0x00000c20 TIM11_IRQHandler - 0x00000c20 TIM10_UP_IRQHandler - 0x00000c20 TIM9_TRG_COM_IRQHandler - 0x00000c20 UART7_IRQHandler - 0x00000c20 USART2_IRQHandler - 0x00000c20 UART6_IRQHandler - 0x00000c20 UHSIF_IRQHandler - 0x00000c20 ETHWakeUp_IRQHandler - 0x00000c20 I2C2_ER_IRQHandler - 0x00000c20 DMA1_Channel2_IRQHandler - 0x00000c20 TIM8_BRK_IRQHandler - 0x00000c20 TIM2_TRG_IRQHandler - 0x00000c20 CAN1_SCE_IRQHandler - 0x00000c20 FLASH_IRQHandler - 0x00000c20 USBFSWakeUp_IRQHandler - 0x00000c20 USART1_IRQHandler - 0x00000c20 OTG_FS_IRQHandler - 0x00000c20 SPI3_IRQHandler - 0x00000c20 USBFS_WakeUp_IRQHandler - 0x00000c20 UART3_IRQHandler - 0x00000c20 I2C1_ER_IRQHandler - 0x00000c20 FMC_IRQHandler - 0x00000c20 USB2_DEVICE_IRQHandler - 0x00000c20 LPTIM1_IRQHandler - 0x00000c20 DFSDM1_IRQHandler - 0x00000c20 TMR1_IRQHandler - 0x00000c20 I2C4_ER_IRQHandler - 0x00000c20 SERDES_IRQHandler - 0x00000c20 USBSS_LINK_IRQHandler - 0x00000c20 USBWakeUp_IRQHandler - 0x00000c20 DMA2_Channel3_IRQHandler - 0x00000c22 NMI_Handler - 0x00000c22 NMI_RCC_CSS_IRQHandler - .text.memset 0x00000c30 0x12 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000c30 memset + 0x00000c3e 0x10 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000c3e OPCM_IRQHandler + 0x00000c3e EXTI2_IRQHandler + 0x00000c3e TIM8_TRG_COM_IRQHandler + 0x00000c3e TIM8_CC_IRQHandler + 0x00000c3e USART_WKUP_IRQHandler + 0x00000c3e UART8_IRQHandler + 0x00000c3e SPI4_IRQHandler + 0x00000c3e NFC_IRQHandler + 0x00000c3e DFSDM0_IRQHandler + 0x00000c3e TIM1_CC_IRQHandler + 0x00000c3e HardFault_Handler + 0x00000c3e TIM10_IRQHandler + 0x00000c3e GPIOB_IRQHandler + 0x00000c3e IPC_CH2_Handler + 0x00000c3e USBPD_IRQHandler + 0x00000c3e TIM6_IRQHandler + 0x00000c3e GPIOA_IRQHandler + 0x00000c3e SysTick_Handler + 0x00000c3e CAN3_RX1_IRQHandler + 0x00000c3e I3C_ER_IRQHandler + 0x00000c3e PVD_IRQHandler + 0x00000c3e SDIO_IRQHandler + 0x00000c3e TIM9_BRK_IRQHandler + 0x00000c3e DMA2_Channel8_IRQHandler + 0x00000c3e CAN2_RX1_IRQHandler + 0x00000c3e EXTI3_IRQHandler + 0x00000c3e HSEM_Handler + 0x00000c3e UART1_IRQHandler + 0x00000c3e USBHS_IRQHandler + 0x00000c3e LPTIM2_IRQHandler + 0x00000c3e DMA2_Channel9_IRQHandler + 0x00000c3e TIM10_CC_IRQHandler + 0x00000c3e EXTI25_16_IRQHandler + 0x00000c3e I2C3_ER_IRQHandler + 0x00000c3e USBFS_IRQHandler + 0x00000c3e UART0_IRQHandler + 0x00000c3e USART8_IRQHandler + 0x00000c3e EXTI0_IRQHandler + 0x00000c3e I2C2_EV_IRQHandler + 0x00000c3e TIM10_TRG_COM_IRQHandler + 0x00000c3e LPTIM_IRQHandler + 0x00000c3e CAN1_RX0_IRQHandler + 0x00000c3e CAN3_SCE_IRQHandler + 0x00000c3e CAN2_SCE_IRQHandler + 0x00000c3e ADC1_2_IRQHandler + 0x00000c3e BB_IRQHandler + 0x00000c3e Break_Point_Handler + 0x00000c3e IPC_CH0_Handler + 0x00000c3e TIM2_CC_IRQHandler + 0x00000c3e SPI1_IRQHandler + 0x00000c3e USART5_IRQHandler + 0x00000c3e TAMPER_IRQHandler + 0x00000c3e TMR0_IRQHandler + 0x00000c3e AWU_IRQHandler + 0x00000c3e CAN2_RX0_IRQHandler + 0x00000c3e OSCWakeUp_IRQHandler + 0x00000c3e TIM8_UP_IRQHandler + 0x00000c3e Ecall_M_Mode_Handler + 0x00000c3e ECDC_IRQHandler + 0x00000c3e SDMMC_IRQHandler + 0x00000c3e USART7_IRQHandler + 0x00000c3e DMA2_Channel2_IRQHandler + 0x00000c3e DMA1_Channel4_IRQHandler + 0x00000c3e ADC1_IRQHandler + 0x00000c3e TIM2_BRK_IRQHandler + 0x00000c3e USART6_IRQHandler + 0x00000c3e CAN3_RX0_IRQHandler + 0x00000c3e HSADC_IRQHandler + 0x00000c3e TIM9_UP_IRQHandler + 0x00000c3e USART3_IRQHandler + 0x00000c3e RTC_IRQHandler + 0x00000c3e DMA1_Channel7_IRQHandler + 0x00000c3e LED_IRQHandler + 0x00000c3e CAN1_RX1_IRQHandler + 0x00000c3e DVP_IRQHandler + 0x00000c3e UART5_IRQHandler + 0x00000c3e USBSS_IRQHandler + 0x00000c3e SWPMI_IRQHandler + 0x00000c3e USBPDWakeUp_IRQHandler + 0x00000c3e EXTI15_8_IRQHandler + 0x00000c3e TIM4_IRQHandler + 0x00000c3e DMA2_Channel1_IRQHandler + 0x00000c3e SWPMI_WKUP_IRQHandler + 0x00000c3e USBPD_WKUP_IRQHandler + 0x00000c3e I2C1_EV_IRQHandler + 0x00000c3e USBSSWakeup_IRQHandler + 0x00000c3e UART2_IRQHandler + 0x00000c3e USART4_IRQHandler + 0x00000c3e PWMX_IRQHandler + 0x00000c3e DMA1_Channel6_IRQHandler + 0x00000c3e UART4_IRQHandler + 0x00000c3e DMA2_Channel4_IRQHandler + 0x00000c3e TIM3_IRQHandler + 0x00000c3e RCC_IRQHandler + 0x00000c3e TIM1_TRG_COM_IRQHandler + 0x00000c3e DMA1_Channel1_IRQHandler + 0x00000c3e DMA2_Channel7_IRQHandler + 0x00000c3e QSPI1_IRQHandler + 0x00000c3e EXTI15_10_IRQHandler + 0x00000c3e ADC_IRQHandler + 0x00000c3e IPC_CH3_Handler + 0x00000c3e DMA1_Channel8_IRQHandler + 0x00000c3e I3C_EV_IRQHandler + 0x00000c3e TMR2_IRQHandler + 0x00000c3e I3C_WKUP_IRQHandler + 0x00000c3e DefaultIRQHandler + 0x00000c3e TIM12_IRQHandler + 0x00000c3e TIM7_IRQHandler + 0x00000c3e CAN2_TX_IRQHandler + 0x00000c3e TIM5_IRQHandler + 0x00000c3e I2C3_EV_IRQHandler + 0x00000c3e USB_IRQHandler + 0x00000c3e EXTI9_5_IRQHandler + 0x00000c3e PIOC_IRQHandler + 0x00000c3e TIM9_IRQHandler + 0x00000c3e LTDC_IRQHandler + 0x00000c3e SAI_IRQHandler + 0x00000c3e SPI2_IRQHandler + 0x00000c3e OSC32KCal_IRQHandler + 0x00000c3e IPC_CH1_Handler + 0x00000c3e I2C_IRQHandler + 0x00000c3e LPTIM1_WKUP_IRQHandler + 0x00000c3e TIM10_BRK_IRQHandler + 0x00000c3e TIM9_CC_IRQHandler + 0x00000c3e CAN1_TX_IRQHandler + 0x00000c3e DMA2_Channel5_IRQHandler + 0x00000c3e USB2_IRQHandler + 0x00000c3e USBHSWakeUp_IRQHandler + 0x00000c3e DMA1_Channel5_IRQHandler + 0x00000c3e EXTI4_IRQHandler + 0x00000c3e USB_LP_CAN1_RX0_IRQHandler + 0x00000c3e QSPI2_IRQHandler + 0x00000c3e RNG_IRQHandler + 0x00000c3e USB_HP_CAN1_TX_IRQHandler + 0x00000c3e LLE_IRQHandler + 0x00000c3e CMPWakeUp_IRQHandler + 0x00000c3e DMA1_Channel3_IRQHandler + 0x00000c3e FSMC_IRQHandler + 0x00000c3e ETH_IRQHandler + 0x00000c3e TIM1_UP_IRQHandler + 0x00000c3e LPTIMWakeUp_IRQHandler + 0x00000c3e WWDG_IRQHandler + 0x00000c3e USBHSWakeup_IRQHandler + 0x00000c3e DMA2_Channel11_IRQHandler + 0x00000c3e WDOG_BAT_IRQHandler + 0x00000c3e Ecall_U_Mode_Handler + 0x00000c3e I2C4_EV_IRQHandler + 0x00000c3e CAN3_TX_IRQHandler + 0x00000c3e TMR3_IRQHandler + 0x00000c3e DMA2_Channel6_IRQHandler + 0x00000c3e SW_Handler + 0x00000c3e TIM1_BRK_IRQHandler + 0x00000c3e GPHA_IRQHandler + 0x00000c3e OPA_IRQHandler + 0x00000c3e DMA2_Channel10_IRQHandler + 0x00000c3e EXTI1_IRQHandler + 0x00000c3e SPI0_IRQHandler + 0x00000c3e USB2_HOST_IRQHandler + 0x00000c3e LPTIM2_WKUP_IRQHandler + 0x00000c3e RTCAlarm_IRQHandler + 0x00000c3e TIM11_IRQHandler + 0x00000c3e TIM10_UP_IRQHandler + 0x00000c3e TIM9_TRG_COM_IRQHandler + 0x00000c3e UART7_IRQHandler + 0x00000c3e USART2_IRQHandler + 0x00000c3e UART6_IRQHandler + 0x00000c3e UHSIF_IRQHandler + 0x00000c3e ETHWakeUp_IRQHandler + 0x00000c3e I2C2_ER_IRQHandler + 0x00000c3e DMA1_Channel2_IRQHandler + 0x00000c3e TIM8_BRK_IRQHandler + 0x00000c3e TIM2_TRG_IRQHandler + 0x00000c3e CAN1_SCE_IRQHandler + 0x00000c3e FLASH_IRQHandler + 0x00000c3e USBFSWakeUp_IRQHandler + 0x00000c3e USART1_IRQHandler + 0x00000c3e OTG_FS_IRQHandler + 0x00000c3e SPI3_IRQHandler + 0x00000c3e USBFS_WakeUp_IRQHandler + 0x00000c3e UART3_IRQHandler + 0x00000c3e I2C1_ER_IRQHandler + 0x00000c3e FMC_IRQHandler + 0x00000c3e USB2_DEVICE_IRQHandler + 0x00000c3e LPTIM1_IRQHandler + 0x00000c3e DFSDM1_IRQHandler + 0x00000c3e TMR1_IRQHandler + 0x00000c3e I2C4_ER_IRQHandler + 0x00000c3e SERDES_IRQHandler + 0x00000c3e USBSS_LINK_IRQHandler + 0x00000c3e USBWakeUp_IRQHandler + 0x00000c3e DMA2_Channel3_IRQHandler + 0x00000c40 NMI_Handler + 0x00000c40 NMI_RCC_CSS_IRQHandler + .text.memset 0x00000c4e 0x12 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000c4e memset .text.ssd1306_setbuf.constprop.0 - 0x00000c42 0xc /tmp/ccYbPpFS.ltrans0.ltrans.o - .text.memcpy 0x00000c4e 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000c4e memcpy + 0x00000c60 0xc /tmp/ccMNASSr.ltrans0.ltrans.o + .text.memcpy 0x00000c6c 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000c6c memcpy .text.ssd1306_refresh - 0x00000c6a 0x5c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000c88 0x5c /tmp/ccMNASSr.ltrans0.ltrans.o .text.SystemInit - 0x00000cc6 0x44 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000cc6 SystemInit + 0x00000ce4 0x44 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000ce4 SystemInit .text.startup.main - 0x00000d0a 0xd90 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x00000d0a main + 0x00000d28 0xea0 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x00000d28 main .text.EXTI7_0_IRQHandler - 0x00001a9a 0x24 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001bc8 0x24 /tmp/ccMNASSr.ltrans0.ltrans.o .text.TIM2_IRQHandler - 0x00001abe 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001bec 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o *(.rodata) *(.rodata*) - *fill* 0x00001ade 0x2 + *fill* 0x00001c0c 0x0 .rodata.main.str1.4 - 0x00001ae0 0x200 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x120 (size before relaxing) - .rodata.main 0x00001ce0 0x30 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001c0c 0x260 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x16c (size before relaxing) + .rodata.main 0x00001e6c 0x30 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.tmux_sleep - 0x00001d10 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001e9c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.tmux_sad - 0x00001d90 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001f1c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.tmux_happy - 0x00001e10 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00001f9c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.tmux_idle - 0x00001e90 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000201c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_dead - 0x00001f10 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000209c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_sleep - 0x00001f90 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000211c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_eat - 0x00002010 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000219c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_sad - 0x00002090 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000221c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_happy - 0x00002110 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000229c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_blink - 0x00002190 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000231c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.pana_idle - 0x00002210 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000239c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.shell_sleep - 0x00002290 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000241c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.shell_sad - 0x00002310 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000249c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.shell_happy - 0x00002390 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000251c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.shell_idle - 0x00002410 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000259c 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_settings - 0x00002490 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000261c 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_stats - 0x000024b0 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000263c 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_heal - 0x000024d0 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000265c 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_clean - 0x000024f0 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000267c 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_sleep - 0x00002510 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000269c 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_play - 0x00002530 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000026bc 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.icon_feed - 0x00002550 0x20 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000026dc 0x20 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.ssd1306_init_array - 0x00002570 0x1a /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000026fc 0x1a /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.str1.4 - 0x0000258a 0xdc /tmp/ccYbPpFS.ltrans0.ltrans.o - *fill* 0x0000258a 0x2 + 0x00002716 0xf0 /tmp/ccMNASSr.ltrans0.ltrans.o + *fill* 0x00002716 0x2 .rodata.boot.0 - 0x0000258c 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00002718 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.species_names - 0x000025a0 0xc /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000272c 0xc /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.spr_glitch - 0x000025ac 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00002738 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.spr_claude - 0x0000262c 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000027b8 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.species_frames - 0x000026ac 0x54 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00002838 0x54 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.menu_icons - 0x00002700 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000288c 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.form_names - 0x0000271c 0x14 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000028a8 0x14 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.menu_labels - 0x00002730 0x1c /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000028bc 0x1c /tmp/ccMNASSr.ltrans0.ltrans.o + .rodata.brightness_names + 0x000028d8 0x10 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.screen_timeout_names - 0x0000274c 0x18 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x000028e8 0x18 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.spr_grave - 0x00002764 0x80 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00002900 0x80 /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.screen_timeout_opts - 0x000027e4 0xc /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00002980 0xc /tmp/ccMNASSr.ltrans0.ltrans.o .rodata.fontdata - 0x000027f0 0x800 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000298c 0x800 /tmp/ccMNASSr.ltrans0.ltrans.o *(.gnu.linkonce.t.*) - 0x00002ff0 . = ALIGN (0x4) + 0x0000318c . = ALIGN (0x4) -.rela.dyn 0x00002ff0 0x0 +.rela.dyn 0x0000318c 0x0 .rela.text.handle_reset - 0x00002ff0 0x0 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x0000318c 0x0 /tmp/ccMNASSr.ltrans0.ltrans.o -.fini 0x00002ff0 0x0 +.fini 0x0000318c 0x0 *(SORT_NONE(.fini)) - 0x00002ff0 . = ALIGN (0x4) + 0x0000318c . = ALIGN (0x4) [!provide] PROVIDE (_etext = .) [!provide] PROVIDE (_eitcm = .) -.preinit_array 0x00002ff0 0x0 +.preinit_array 0x0000318c 0x0 [!provide] PROVIDE (__preinit_array_start = .) *(.preinit_array) [!provide] PROVIDE (__preinit_array_end = .) -.init_array 0x00002ff0 0x0 +.init_array 0x0000318c 0x0 [!provide] PROVIDE (__init_array_start = .) *(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)) *(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors) [!provide] PROVIDE (__init_array_end = .) -.fini_array 0x00002ff0 0x0 +.fini_array 0x0000318c 0x0 [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)) *(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors) @@ -480,15 +484,15 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a *(SORT_BY_NAME(.dtors.*)) *(.dtors) -.dalign 0x20000000 0x0 load address 0x00002ff0 +.dalign 0x20000000 0x0 load address 0x0000318c 0x20000000 . = ALIGN (0x4) 0x20000000 PROVIDE (_data_vma = .) -.dlalign 0x00002ff0 0x0 - 0x00002ff0 . = ALIGN (0x4) - 0x00002ff0 PROVIDE (_data_lma = .) +.dlalign 0x0000318c 0x0 + 0x0000318c . = ALIGN (0x4) + 0x0000318c PROVIDE (_data_lma = .) -.data 0x20000000 0x24 load address 0x00002ff0 +.data 0x20000000 0x28 load address 0x0000318c 0x20000000 . = ALIGN (0x4) 0x200003fc __global_pointer$ = (. + 0x3fc) *(.gnu.linkonce.r.*) @@ -497,77 +501,83 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a 0x20000000 . = ALIGN (0x8) *(.sdata .sdata.*) .sdata.timeout_idx - 0x20000000 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000000 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o .sdata.disp_on - 0x20000001 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000001 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + .sdata.bright_idx + 0x20000002 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o .sdata.sound_on - 0x20000002 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000003 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o *(.sdata2*) *(.gnu.linkonce.s.*) 0x20000008 . = ALIGN (0x8) - *fill* 0x20000003 0x5 + *fill* 0x20000004 0x4 *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*) .srodata.eye_rx - 0x20000008 0x3 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000008 0x3 /tmp/ccMNASSr.ltrans0.ltrans.o *fill* 0x2000000b 0x1 .srodata.eye_lx - 0x2000000c 0x3 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x2000000c 0x3 /tmp/ccMNASSr.ltrans0.ltrans.o *fill* 0x2000000f 0x1 .srodata.eye_cy - 0x20000010 0x3 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000010 0x3 /tmp/ccMNASSr.ltrans0.ltrans.o *fill* 0x20000013 0x1 .srodata.spr_poop - 0x20000014 0x8 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000014 0x8 /tmp/ccMNASSr.ltrans0.ltrans.o .srodata.level_xp - 0x2000001c 0x8 /tmp/ccYbPpFS.ltrans0.ltrans.o - 0x20000024 . = ALIGN (0x4) - 0x20000024 PROVIDE (_edata = .) + 0x2000001c 0x8 /tmp/ccMNASSr.ltrans0.ltrans.o + .srodata.brightness_opts + 0x20000024 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o + 0x20000028 . = ALIGN (0x4) + 0x20000028 PROVIDE (_edata = .) -.bss 0x20000024 0x434 load address 0x00003014 - 0x20000024 . = ALIGN (0x4) - 0x20000024 PROVIDE (_sbss = .) +.bss 0x20000028 0x438 load address 0x000031b4 + 0x20000028 . = ALIGN (0x4) + 0x20000028 PROVIDE (_sbss = .) *(.sbss*) .sbss.anim_exp - 0x20000024 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o - *fill* 0x20000025 0x1 + 0x20000028 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + *fill* 0x20000029 0x1 .sbss.tick_acc - 0x20000026 0x2 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x2000002a 0x2 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.anim_timer - 0x20000028 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o - .sbss.set_sel 0x20000029 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o - .sbss.cursor 0x2000002a 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x2000002c 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + .sbss.set_sel 0x2000002d 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + .sbss.cursor 0x2000002e 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.sel_species - 0x2000002b 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x2000002f 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.idle_frames - 0x2000002c 0x4 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000030 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o + .sbss.reset_cause + 0x20000034 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.tick_wake - 0x20000030 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000038 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.exti_wake - 0x20000031 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o - .sbss.screen 0x20000032 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o - *fill* 0x20000033 0x1 - .sbss.frame 0x20000034 0x4 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000039 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + .sbss.screen 0x2000003a 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o + *fill* 0x2000003b 0x1 + .sbss.frame 0x2000003c 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.warn_flag - 0x20000038 0x4 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000040 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.crit_flag - 0x2000003c 0x4 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000044 0x4 /tmp/ccMNASSr.ltrans0.ltrans.o .sbss.evo_anim - 0x20000040 0x1 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000048 0x1 /tmp/ccMNASSr.ltrans0.ltrans.o *(.gnu.linkonce.sb.*) *(.bss*) - *fill* 0x20000041 0x3 - .bss.pet 0x20000044 0x12 /tmp/ccYbPpFS.ltrans0.ltrans.o - *fill* 0x20000056 0x2 + *fill* 0x20000049 0x3 + .bss.pet 0x2000004c 0x12 /tmp/ccMNASSr.ltrans0.ltrans.o + *fill* 0x2000005e 0x2 .bss.ssd1306_buffer - 0x20000058 0x400 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x20000060 0x400 /tmp/ccMNASSr.ltrans0.ltrans.o *(.gnu.linkonce.b.*) *(COMMON*) - 0x20000458 . = ALIGN (0x4) - 0x20000458 PROVIDE (_ebss = .) + 0x20000460 . = ALIGN (0x4) + 0x20000460 PROVIDE (_ebss = .) [!provide] PROVIDE (_end = _ebss) [!provide] PROVIDE (end = .) 0x20000800 PROVIDE (_eusrstack = (ORIGIN (RAM) + LENGTH (RAM))) @@ -583,64 +593,64 @@ OUTPUT(tama.elf elf32-littleriscv) .riscv.attributes 0x00000000 0x25 .riscv.attributes - 0x00000000 0x25 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x25 /tmp/ccMNASSr.ltrans0.ltrans.o .riscv.attributes 0x00000025 0x1f ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) -.debug_info 0x00000000 0x5ddb - .debug_info 0x00000000 0x314f /tmp/ccYbPpFS.ltrans0.ltrans.o - .debug_info 0x0000314f 0xeee /tmp/cc5ko34Y.debug.temp.o - 0x0000314f ch32fun.c.c0bc4b2f - .debug_info 0x0000403d 0x1d41 /tmp/ccymsL4U.debug.temp.o - 0x0000403d tama.c.7f472170 - .debug_info 0x00005d7e 0x5d ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) +.debug_info 0x00000000 0x5ffb + .debug_info 0x00000000 0x32e3 /tmp/ccMNASSr.ltrans0.ltrans.o + .debug_info 0x000032e3 0xeee /tmp/ccHSxGzD.debug.temp.o + 0x000032e3 ch32fun.c.c0bc4b2f + .debug_info 0x000041d1 0x1dcd /tmp/cc22Nide.debug.temp.o + 0x000041d1 tama.c.fb7bdcf7 + .debug_info 0x00005f9e 0x5d ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) .debug_abbrev 0x00000000 0x7cd - .debug_abbrev 0x00000000 0x215 /tmp/ccYbPpFS.ltrans0.ltrans.o - .debug_abbrev 0x00000215 0x24d /tmp/cc5ko34Y.debug.temp.o - .debug_abbrev 0x00000462 0x343 /tmp/ccymsL4U.debug.temp.o + .debug_abbrev 0x00000000 0x215 /tmp/ccMNASSr.ltrans0.ltrans.o + .debug_abbrev 0x00000215 0x24d /tmp/ccHSxGzD.debug.temp.o + .debug_abbrev 0x00000462 0x343 /tmp/cc22Nide.debug.temp.o .debug_abbrev 0x000007a5 0x28 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) .debug_loclists - 0x00000000 0x2661 + 0x00000000 0x26cb .debug_loclists - 0x00000000 0x2661 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x26cb /tmp/ccMNASSr.ltrans0.ltrans.o -.debug_aranges 0x00000000 0x218 +.debug_aranges 0x00000000 0x220 .debug_aranges - 0x00000000 0x1f8 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x200 /tmp/ccMNASSr.ltrans0.ltrans.o .debug_aranges - 0x000001f8 0x20 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) + 0x00000200 0x20 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) .debug_rnglists - 0x00000000 0x593 + 0x00000000 0x5ad .debug_rnglists - 0x00000000 0x593 /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x5ad /tmp/ccMNASSr.ltrans0.ltrans.o -.debug_line 0x00000000 0x5a07 - .debug_line 0x00000000 0x57c7 /tmp/ccYbPpFS.ltrans0.ltrans.o - .debug_line 0x000057c7 0x76 /tmp/cc5ko34Y.debug.temp.o - .debug_line 0x0000583d 0x77 /tmp/ccymsL4U.debug.temp.o - .debug_line 0x000058b4 0x153 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) +.debug_line 0x00000000 0x5ce1 + .debug_line 0x00000000 0x5aa1 /tmp/ccMNASSr.ltrans0.ltrans.o + .debug_line 0x00005aa1 0x76 /tmp/ccHSxGzD.debug.temp.o + .debug_line 0x00005b17 0x77 /tmp/cc22Nide.debug.temp.o + .debug_line 0x00005b8e 0x153 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) -.debug_str 0x00000000 0x1401 - .debug_str 0x00000000 0x1401 /tmp/ccYbPpFS.ltrans0.ltrans.o +.debug_str 0x00000000 0x144a + .debug_str 0x00000000 0x144a /tmp/ccMNASSr.ltrans0.ltrans.o 0x1c2 (size before relaxing) - .debug_str 0x00001401 0x60f /tmp/cc5ko34Y.debug.temp.o - .debug_str 0x00001401 0xf6c /tmp/ccymsL4U.debug.temp.o - .debug_str 0x00001401 0xd9 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) + .debug_str 0x0000144a 0x60f /tmp/ccHSxGzD.debug.temp.o + .debug_str 0x0000144a 0xfb5 /tmp/cc22Nide.debug.temp.o + .debug_str 0x0000144a 0xd9 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) .debug_line_str 0x00000000 0x33f .debug_line_str - 0x00000000 0x33f /tmp/ccYbPpFS.ltrans0.ltrans.o + 0x00000000 0x33f /tmp/ccMNASSr.ltrans0.ltrans.o 0xfa (size before relaxing) .debug_line_str - 0x0000033f 0x246 /tmp/cc5ko34Y.debug.temp.o + 0x0000033f 0x246 /tmp/ccHSxGzD.debug.temp.o .debug_line_str - 0x0000033f 0x1dd /tmp/ccymsL4U.debug.temp.o + 0x0000033f 0x1dd /tmp/cc22Nide.debug.temp.o .debug_line_str 0x0000033f 0x92 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o) -.debug_frame 0x00000000 0x66c - .debug_frame 0x00000000 0x66c /tmp/ccYbPpFS.ltrans0.ltrans.o +.debug_frame 0x00000000 0x688 + .debug_frame 0x00000000 0x688 /tmp/ccMNASSr.ltrans0.ltrans.o